Cơ sở dữ liệu - Chương 10: Bảo mật trong SQL server
Cơ sở dữ liệu -
Chương 10: Bảo mật trong SQL server
Database roles cho phép bạn gán quyền cho 1 nhóm các user thay vì phải gán quyền cho từng user riêng lẻ
Có 3 lọa database
94 trang |
Chia sẻ: huyhoang44 | Lượt xem: 952 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Cơ sở dữ liệu - Chương 10: Bảo mật trong SQL server, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
GV Phi Loan - Khoa CNTT – HUI 1
GV Phi Loan - Khoa CNTT – HUI
Nội dung
◦ Các tính chất bảo mật của SQL Server
◦ Tài khoản đăng nhập (user login)
◦ Phân biệt user login và user ID
◦ Các loại User Roles:
Fixed Server Roles
Database Roles
◦ Các loại quyền bảo mật( Security Permissions)
◦ Nhóm lệnh DCL : GRANT, DENY, REVOKE
◦ Giải quyết xung đột giữa các quyền
2
GV Phi Loan - Khoa CNTT – HUI
• Information is an organizational asset, and,
according to its value and scope, must be
organized, inventoried, and secured . . . .
• If SQL Server is the box, then this part is about
padlocking the box to keep out those who
should be out, while extending welcome to
those who should be allowed in.
3
GV Phi Loan - Khoa CNTT – HUI
Ba ̉o mâ ̣t SQL server
• Bao gôm̀ nhiều bước liên quan đêń 4 vùng
chính sau:
– Platform
– Authentication
– Objects (including data)
– Applications that access the system
4
GV Phi Loan - Khoa CNTT – HUI
Ba ̉o mâ ̣t các file hê ̣ thống
của SQL server
• Ha ̣n chế việc truy xuất đêń các file hệ thống
của SQL server.
• Các cấp ba ̉o mâ ̣t:
– Ba ̉o mâ ̣t các file dữ liê ̣u và log
– Ba ̉o mâ ̣t các đối tượng (object) trong DB
– Ba ̉o mâ ̣t các application
• Mã hóa và chư ́ng thực (encryption and
certificate)
5
GV Phi Loan - Khoa CNTT – HUI
Principal va ̀ securables
• Principals là các thực thể có thể yêu cầu tài
nguyên của SQL Server, có thê ̉ được phân cấp
(hierarchy). Phạm vi a ̉nh hưởng của principal
phu ̣ thuô ̣c vào định nghĩa giới ha ̣n cu ̉a
principal.
• Môĩ principal có mô ̣t mã số bảo mâ ̣t khác
nhau (security identifier SID).
6
GV Phi Loan - Khoa CNTT – HUI
Ví du ̣ về Principal
• Windows Login: là 1 principal nho ̉ nhất
(indivisible )
• Windows Group là 1 principal da ̣ng tâ ̣p hợp.
(collection)
7
GV Phi Loan - Khoa CNTT – HUI
Phân cá̂p các principal
• Windows-level principals:
Windows Domain Login
Windows Local Login
• SQL Server-level principal:
SQL Server Login
• Database-level principals:
Database User
Database Role
Application Role
8
GV Phi Loan - Khoa CNTT – HUI
Principal và securables
• “Securables” là server, database, và các
đó̂i tượng thuộc về database
• Ví dụ:
– User
– Database role
– Server role
– Type
– XML schema ,.
9
GV Phi Loan - Khoa CNTT – HUI 10
GV Phi Loan - Khoa CNTT – HUI
Cơ chế bảo mật
• Từ SQL 2005, có 1 sự thay đỏ̂i lớn về bảo mâ ̣t
so với các phiên ba ̉n trươ ́c.
• Chiến lược “secure by design, secure by
default, and secure in deployment” dùng đê ̉
ba ̉o vê ̣ server và các database khỏi bị tấn công
(security attacks)
11
GV Phi Loan - Khoa CNTT – HUI
Cơ chế bảo mật
• Để kiểm soát việc truy xuất vào tài nguyên SQL
Server, có 2 cơ chế bảo mâ ̣t:
– Authentication: là 1 quy trình dùng để xác
nhâ ̣n mô ̣t ai đó có pha ̉i thực sự chính là ho ̣
không. Thường quy trình này liên quan đến
username và password
– Authorization: dùng đê ̉ tìm xem mô ̣t người
sau khi đã được nhâ ̣n da ̣ng có quyêǹ ưu
tiên sử dụng tài nguyên ở cấp nào?
12
GV Phi Loan - Khoa CNTT – HUI
Các loại tài khoản đăng nhập
• SQL Server 2012 hỏ̂ trợ các loại tài khoa ̉n
login sau:
– Windows-authenticated login
– SQL Server–authenticated login
– Certificate
– Asymmetric key
• Mô ̣t principal pha ̉i có quyền (permission)
ALTER ANY LOGIN mới có thê ̉ tạo được tài
khoa ̉n login SQL.
13
GV Phi Loan - Khoa CNTT – HUI
Các mư ́c bảo mật
14
GV Phi Loan - Khoa CNTT – HUI
Hai mode Authentication
• Windows Authentication: cho phép user truy
xuât́ vào SQL server thông qua tài khoa ̉n của
Windows
• Mixed Mode Authentication: cho phép người
dùng truy xuất vào SQL server bằng cả 2 loại tài
khoa ̉n: Windows và tài khoa ̉n riêng của SQL
server
• Để thay đô ̉i mode đăng nhâ ̣p vào SQL server:
– Mở server Properties,
– Chọn trang Security
15
GV Phi Loan - Khoa CNTT – HUI
Các tài khoản đăng nhập mặc đi ̣nh
(Default login)
• SQL Server ta ̣o 2 tài khoa ̉n mă ̣c định ngay ta ̣i
thời điê ̉m cài đă ̣t và cấp quyền ưu tiên cao
nhất – quyền qua ̉n trị cho hai tài khoa ̉n này.
Tài khoa ̉n sa cho phép truy xuất vào SQL
server bằng mode mixed authentication.
Tài khoa ̉n BUILTIN\Administrators cho phép
mo ̣i thành viên trong nhóm administrator
truy xuất vào SQL server bằng mode
Windows authentication
16
GV Phi Loan - Khoa CNTT – HUI
Windows Authentication mode
• Mode xác thực bằng Windows ma ̣nh hơn mode hôn
hợp (mixed Mode) vì ngươ ̀i dùng không câǹ thêm
password và nó liên quan đến ba ̉o mâ ̣t của ca ̉ ma ̣ng.
• Xác thực băǹg Windows không chỉ xác thực ngươ ̀i
dùng riêng lẻ của Windows mà còn xác thực ca ̉
ngươ ̀i dùng trong nhóm ngươ ̀i dùng (user group)
của Windows.
– Khi 1 user group nào đó được chấp nhâ ̣n như SQL Server
login, thì ngươ ̀i dùng nào thuộc nhóm user này đêù có
thê ̉ được xác thực bởi SQL Server.
17
GV Phi Loan - Khoa CNTT – HUI
Các loại tài khoản trong SQL server
• Cần phân biệt Login ID và user ID:
– Login ID đê ̉ thực hiện cơ chế́ Authentication.
Người dùng muốn truy xuất vào hệ thống SQL
Server, thì phải có login ID và password. Nhưng
login ID chính nó không cho phép nguời dùng
quyền truy xuất đến các DB.
– User ID thực hiện cơ chế Authorization. User ID
nhận dạng người dùng trong 1 DB. Tất cả các
quyền và chủ quyền của các đối tượng trong DB
đều được điều khiển bởi user ID
18
GV Phi Loan - Khoa CNTT – HUI
Login ID và user ID
• Một login ID phải kết hợp với 1 user ID trong
mỗi DB để có thê ̉ truy xuất dữ liệu trong DB.
Nếu login ID không được kết hợp tường
minh với 1 user ID thì nó sẽ kết hợp với user
ID là guest. Nếu DB không có user ID guest thì
không thể truy xuất vào DB được
• Việc quản trị sẽ dễ dàng hơn nếu login ID và
user ID giống nhau nhưng điều này không bắt
buộc.
19
GV Phi Loan - Khoa CNTT – HUI
Authentication & Authorization
• Tài khoản đăng nhập (Login ID) sẽ được ánh
xạ với tài khoản user ( user ID) để cho phép
user được quyền truy xuất trong 1 DB. Quá
trình này gọi là authorization (hay permission
validation).
• User sẽ không thể truy xuất vào DB ngay cả
khi họ có tài khoản đăng nhập (login ID) hợp
lệ.
20
GV Phi Loan - Khoa CNTT – HUI
Bảo mật trong CSDL server
21
the Mgr125 login corresponds to User A in the Employees database
and to User D in the Products database. These privileges permit the
login to connect to the database(s), but they do not give the user any
privileges against objects in those databases
GV Phi Loan - Khoa CNTT – HUI
Tạo tài khoản đăng nhập Login ID
• Hai da ̣ng login ID:
– Dùng tài khoản đăng nhập của chính
Windows làm tài khoản đăng nhập vào SQL
server.
– Tạo 1 tài khoản đăng nhập của riêng SQL
server
22
GV Phi Loan - Khoa CNTT – HUI
Thêm tài khoản đăng nhập mới bằng
Windows (Windows login)
• Ta ̣o sẵn trước account của Windows
• Nhâṕ pha ̉i ta ̣i folder Security\Login, cho ̣n New
Login
• Nhâṕ nút Search để tìm account của Windows
• Hoă ̣c dùng lê ̣nh:
CREATE LOGIN [\]
FROM WINDOWS;
• Vd: create login [philoan\dhth5] from windows
23
GV Phi Loan - Khoa CNTT – HUI
Tạo tài khoản của SQL server
• Chỉ có người quản tri (administrator) mới có
quyền tạo login ID mới.
• Nhâṕ phải ta ̣i folder Security\Login, chọn
New Login
• Tạo login của SQL server
CREATE LOGIN
WITH PASSWORD = ''
[MUST_CHANGE]
24
GV Phi Loan - Khoa CNTT – HUI
Thay đổi các thuộc tính cu ̉a
tài khoản server
• Lệnh ALTER LOGIN cho phép thay đô ̉i các thuô ̣c tính
của tài khoản SQL Server
ALTER LOGIN login_name
{ | WITH [ ,... ]
Với ::= ENABLE | DISABLE
Và ::= PASSWORD = 'password‘
[ OLD_PASSWORD = 'oldpassword]
Ví du ̣: ALTER LOGIN user2 with password='56789'
old_password='12345'
25
GV Phi Loan - Khoa CNTT – HUI
Mã hóa - Encryption
• Encryption không gia ̉i quyết vấn đề kiểm
soát truy xuất nhưng nó hạn chế được viê ̣c
mât́ mát thông tin khi viê ̣c kiê ̉m soát truy
xuất bị bỏ qua.
• Ví dụ: nếu máy tính chư ́a CSDL bị cấu hình
sai, nếu hacker có được thông tin nha ̣y cảm
chă ̉ng ha ̣n là số thẻ tín dụng thì thông tin bị
đánh cắp này cũng sẽ trở nên vô dụng nếu bị
mã hóa.
26
GV Phi Loan - Khoa CNTT – HUI
Tạo login từ Certificate
• Certificates là các “khóa phần mềm”
được chia sẻ giư ̃a 2 server cho phép trao
đỏ̂i thông tin ba ̉o mật giư ̃a 2 server này.
• Ví dụ:
CREATE CERTIFICATE Dan_Bacon
WITH SUBJECT = 'Dan Bacon certificate in master DB’,
EXPIRY_DATE = '01/01/2018';
CREATE LOGIN Dan_Bacon FROM CERTIFICATE
Dan_Bacon;
27
GV Phi Loan - Khoa CNTT – HUI
Xem/Xóa/Cá̂m tài khoản login
• Xem tài khoản login
select * from sys.server_principals
• Enable/disable tài khoa ̉n login
ALTER LOGIN sql_user_a DISABLE;
• Câḿ tài khoa ̉n đăng nhâ ̣p
ALTER LOGIN sql_user_a DISABLE;
• Xóa tài khoa ̉n đăng nhâ ̣p
DROP LOGIN
28
GV Phi Loan - Khoa CNTT – HUI
Credential là gì?
• Credential là 1 ba ̉n ghi chư ́a thông tin xác
thực (credentials) được dùng đê ̉ kết nối với
tài nguyên bên ngoài SQL Server. Thông tin
này chỉ dùng nô ̣i bô ̣ trong SQL Server.
• Hâù hềt các credential đêù chứa tài khoản và
password của Windows.
29
GV Phi Loan - Khoa CNTT – HUI
Credential là gì?
• Thông tin của credential cho phép ngươ ̀i dùng đang
kết nôí vơ ́i SQL Server bằng tài khoa ̉n của SQL Server
được quyền truy xuât́ đến tài nguyên bên ngoài
server. Khi tài nguyên bên ngoài là Windows, thì
ngươ ̀i dùng được xác thực như thể ngươ ̀i dùng của
Windows (đã được xác định trong credential).
• Mô ̣t credential có thể được gán cho nhiều tài khoa ̉n
đăng nhâ ̣p của SQL Server logins. Nhưng mô ̣t tài
khoa ̉n SQL Server login chỉ có thể được gán cho 1
credential.
30
GV Phi Loan - Khoa CNTT – HUI
Tạo Credential
• Nhâṕ pha ̉i ta ̣i folder Security\Credentials, cho ̣n lệnh
New Credential
• Hoă ̣c dùng lệnh:
CREATE CREDENTIAL credential_name
WITH IDENTITY = 'identity_name' [ , SECRET = 'secret' ]
Identity là tên của tài khoản được dùng đê ̉ kết nối ra
bên ngoài, thươ ̀ng là tài khoa ̉n Windows
SECRET: là password dùng để xác thực khi nối ra bên
ngoài
31
GV Phi Loan - Khoa CNTT – HUI
Ví dụ tạo credential
• Gia ̉ sử đã có 1 tài khoa ̉n đăng nhâ ̣p bằng
Windows tên Philoan\Philoan
• Ta ̣o 1 credential dùng tài khoa ̉n này
CREATE CREDENTIAL Loan
WITH IDENTITY = ‘Philoan\Philoan’
SECRET =‘12345’
32
GV Phi Loan - Khoa CNTT – HUI
Tạo tài khoản SQL server gán vơ ́i
credential
CREATE LOGIN
WITH PASSWORD = '',
CREDENTIAL = ;
Ví du ̣: CREATE LOGIN test1 WITH PASSWORD=‘12345’
CREDENTIAL = ‘Loan’
33
GV Phi Loan - Khoa CNTT – HUI
Một số lệnh kiểm tra
• xp_loginconfig : kiểm tra mode xác thực
• sp_validatelogins: xác định các tài khoa ̉n
(Orphaned Windows users) bao gò̂m mã
SID và tên tài khoản.
– Khi 1 tài khoa ̉n Windows được dùng làm tài
khoản đăng nhâ ̣p của SQL Server bị xóa, thì
tài khoa ̉n này không còn hợp lê ̣ nư ̃a.
34
GV Phi Loan - Khoa CNTT – HUI
Một số lệnh kiểm tra
• Để xem danh sách các principal hiện có
của server:
SELECT Name, SID FROM sys.server_principals
35
GV Phi Loan - Khoa CNTT – HUI
Tạo user cho DB hiện hành
CREATE USER user_name
[ FOR LOGIN login_name]
Để thêm 1 tài khoa ̉n đăng nhâ ̣p của 1 người
dùng mới vào CSDL hiê ̣n hành.
• Chi ̉ có dbo và thành viên của sysadmin mới
được quyêǹ ta ̣o tài khoản DB mới
36
GV Phi Loan - Khoa CNTT – HUI
Tạo user cho DB hiện hành
• Nếu không dùng FOR LOGIN, user mới sẽ
được ánh xạ vơ ́i tài khoa ̉n SQL Server
cùng tên.
• Không thể ta ̣o user guest vì guest đã có
sẵn bên trong mõ̂i DB.
37
GV Phi Loan - Khoa CNTT – HUI
Ví dụ tạo user cho DB
CREATE LOGIN abc WITH PASSWORD = ‘12345';
USE Toyworld;
CREATE USER abc FOR LOGIN abc;
38
GV Phi Loan - Khoa CNTT – HUI
Xóa user cho DB hiện hành
• Để xoá tài khoản ra khỏi CSDL:
DROP USER username
• Ví dụ :
DROP USER ‘Student’
39
GV Phi Loan - Khoa CNTT – HUI
Orphaned user
• Orphaned user là 1 database user tương
đương với 1 tài khoản SQL login nào đó
mà tài khoa ̉n này đã bị xóa.
• Để phát hiện orphaned users trong 1
CSDL:
40
GV Phi Loan - Khoa CNTT – HUI
Role là gì?
• Role là một công cụ cực mạnh cho phép ta
tập hợp các user vào cùng 1 unit nhờ đó ta có
thể gán quyền chung cho cả unit đó.
• Mọi thành viên trong nhóm sẽ có quyền như
nhau. Nếu chức năng của nhóm thay đổi, chỉ
cần thay đổi quyền của nhóm, những thay đổi
này sẽ được tự động áp dụng cho tất cả các
thành viên trong nhóm.
41
GV Phi Loan - Khoa CNTT – HUI
Vai trò của role
• Mỗi role những quyền hạn (permission) khác
nhau và chứa 1 hay nhiều thành viên
– Nếu công việc thay đổi. chỉ cần thay đổi quyền
trong mỗi role thay đổi sẽ tự động được áp
dụng cho toàn bộ các thành viên của role đó.
• Các user có thể là thành viên của nhiều role
khác nhau
42
GV Phi Loan - Khoa CNTT – HUI
Các loại User Roles
• Các nhóm của Windows có thể được dùng
như là các role của SQL server.
• Có 2 loại roles đã được định nghĩa sẵn trong
SQL Server:
• Fixed Server Roles
• Database Roles
43
GV Phi Loan - Khoa CNTT – HUI
Fixed Server Roles
• Server roles enable you to simplify the
assignment of permissions at the database
instance level.
• Có 9 loại server roles. Danh sách sau liệt kê
các loại này mà khả năng quản trị theo thứ tự
giảm dần
44
GV Phi Loan - Khoa CNTT – HUI
Fixed Server Roles
1. sysadmin: quyền tối đa mà không bị bất kz 1 hạn
chế nào. Mặc định, tất cả các thành viên của
Administratorsvà sa thuộc vào server role này
2. serveradmin: có quyền cấu hình mức server như
xác lập lượng bộ nhớ mà SQL server có thể dùng
khi truyền thông tin qua mạng.
3. setupadmin: có quyền thực thi replication và quản
trị các thủ tục (extended stored procedures).
4. securityadmin: điều hành bảo mật như tạo login và
gán quyền.
45
GV Phi Loan - Khoa CNTT – HUI
Fixed Server Roles
5. processadmin: có quyền kết thúc các tiến trình
được gọi không hợp lệ
6. dbcreator: tạo và chỉnh sửa database
7. diskadmin: thực hiện các hoạt động sao lưu như
sao chép đĩa và tạo các thiết bị sao lưu
8. bulkadmin: thực hiện lệnh BULK INSERT
9. Public: All SQL Server logins are members of this
role. You can alter the permissions assigned to
this role, but you cannot alter the membership of
the role.
46
GV Phi Loan - Khoa CNTT – HUI
Quyền của thành viên server role
• Một thành viên của bất kz server role
nào đều có thể thêm các user khác vào
chính server role đó.
47
GV Phi Loan - Khoa CNTT – HUI
Thay đổi thành viên cu ̉a server role
• Dùng lệnh ALTER SERVER ROLE với các
tùy chọn sau để thay đỏ̂i thành viên của
server role:
– ADD MEMBER : thêm 1 server principal
– DROP MEMBER: xóa 1 server principal.
• Ví dụ:
ALTER SERVER ROLE serveradmin ADD MEMBER
"contoso\domain_group_b";
48
GV Phi Loan - Khoa CNTT – HUI
Một số lệnh về server role
• sp_helpsrvrole : cung câṕ 1 danh sách các fixed
server roles
• sp_helpsrvrolemember : cho xem các thành viên của
1 fixed server role nào đó
• sp_srvrolepermission: cho xem quyền (permission)
của 1 fixed server role
• IS_SRVROLEMEMBER : cho phép kiểm tra 1 tài
khoa ̉n SQL Server có pha ̉i là thành viên của fixed
server role không
• sys.server_role_members : cung câṕ thông tin về
thành viên của role
49
GV Phi Loan - Khoa CNTT – HUI
User-Defined Server Roles
• Là 1 tính năng mới của SQL Server 2012.
• Có thê ̉ tạo 1 server role của người dùng khi
server roles hiện có không phù hợp với yêu
cầu đă ̣c biê ̣t của người dùng.
• Các bước ta ̣o user-defined server role
– Creating the user-defined server role
– Granting server-level permissions to the role
– Adding SQL Server logins to the role
50
GV Phi Loan - Khoa CNTT – HUI
Ví dụ
• Ta ̣o 1 server role quản l{ tài khoa ̉n
BenMiller
USE master;
CREATE SERVER ROLE buyers AUTHORIZATION
BenMiller;
GO
51
GV Phi Loan - Khoa CNTT – HUI
Database roles
• Mỗi Database có một bộ các fixed database
roles. Phạm vi của mỗi role này là chỉ trong
từng database riêng rẽ.
• Ví dụ: nếu Database1 và Database2 cả hai
đều có 1 user ID là UserX. Nhưng UserX
trong Database1 thuộc fixed database role
tên là db_owner. Role này không ảnh hưởng
gì đến UserX trong Database2 khi user này là
thành viên của role có tên là db_owner.
52
GV Phi Loan - Khoa CNTT – HUI
Database roles
• Database roles cho phép bạn gán quyền
cho 1 nhóm các user thay vì phải gán
quyền cho từng user riêng lẻ.
• Có 3 loại database roles:
• Fixed
• Custom
• Application
53
GV Phi Loan - Khoa CNTT – HUI
Fixed Database Roles
DatabaseRole Mô tả
db_owner Có tất cả các quyền trong DB
db_accessadmin Thêm hay xóa các user ID
db_securityadmin Quản lý tất cả các role và permission
trong DB,có thể thay đổi chủ quyềnower
(ownership)
db_ddladmin Có thể thực hiện tất cả các lệnh DDL
nhưng không thể sử dụng các lệnh
GRANT, REVOKE hay DENY
db_backupoperator Có thể thực hiện các lệnh DBCC,
CHECKPOINT và BACKUP.
54
GV Phi Loan - Khoa CNTT – HUI
Fixed Database Roles
DatabaseRole Mô tả
db_datareader Có thể chọn tất cả dữ liệu từ bất kỳ
bảng của user nào trong DB
db_datawriter Có thể chỉnh sửa bất kỳ dữ liệu trong
các bảng của user trong DB.
db_denydatareade
r
Không thể chọn tất cả dữ liệu từ bất kỳ
bảng của user nào trong DB
db_denydatawriter Không thể chỉnh sửa bất kỳ dữ liệu
trong các bảng của user trong DB.
55
GV Phi Loan - Khoa CNTT – HUI
Fixed Server Roles
• Mỗi user trong DB đều thuộc về role public.
– Nếu 1 user chưa được cấp quyền đặc biệt gì thì
sẽ thuô ̣c role public.
• Bất kz thành viên nào của fixed database role
đều có thể thêm các user khác vào role của
thành viên đó
56
GV Phi Loan - Khoa CNTT – HUI
Thêm thành viên vào DB role
• Lệnh sp_addrolemember để thêm 1 tài
khoản vào 1 role, khi đó thành viên có thể kế
thừa bất kz quyền nào của role đó.
sp_addrolemember [ @rolename = ] 'role' ,
[ @membername = ] 'security_account'
57
GV Phi Loan - Khoa CNTT – HUI
Custom Database Roles
• Người dùng có thể cần có thêm một số
quyền mà các quyền này chưa được xác
định trong bất kz role database cố định
nào. SQL server cho phép tạo các
database role tuz biến (custom)
• Khi tạo một role database tùy biến, cần
thêm các quyền vào role trước , sau đó
sẽ gán các user vào role.
58
GV Phi Loan - Khoa CNTT – HUI
Tạo role tùy biêń
• Lệnh CREATE ROLE vơ ́i tùy chọn
AUTHORIZATION sẽ cấp quyền sở hữu
(ownership) role này cho 1 principal nào
đó.
• Nếu không có tùy cho ̣n AUTHORIZATION,
thì role sẽ được sở hữu bới chính
principal thực hiện lệnh ta ̣o role.
59
GV Phi Loan - Khoa CNTT – HUI
Ví dụ tạo role tùy biêń
• Ta ̣o role do kim_alert quản l{
• Câṕ quyền cho role
60
GV Phi Loan - Khoa CNTT – HUI
Ví dụ tạo role tùy biêń
• Gán quyền cho role
61
GV Phi Loan - Khoa CNTT – HUI
Xem danh mục user và role
• Các view chư ́a thông tin về about users,
roles, và permissions ở mư ́c database
– sys.database_principals
– sys.database_role_members
– sys.database_permissions.
62
GV Phi Loan - Khoa CNTT – HUI
Tạo DB role tuz biến
• Dùng lệnh
sp_addrole [ @rolename = ] 'role'
[ , [ @ownername = ] 'owner' ]
• Chỉ có những thành viên của role sysadmin,
db_securityadmin và db_owner mới có
quyền chạy lệnh này
• Ví dụ: tạo 1 role mới tên Managers cho CSDL
hiện hành.
EXEC sp_addrole 'Managers'
63
GV Phi Loan - Khoa CNTT – HUI
Vai trò của Application Roles
• Application roles cho phép truy xuất đêń dư ̃
liê ̣u khi người dùng kết nối đêń DB thông qua
1 ư ́ng dụng nào đó.
64
GV Phi Loan - Khoa CNTT – HUI
Application Roles
• Application role không có member (thành
viên) như các role khác. Người dùng có liên
quan đến application role là do người dùng
đó có khả năng chạy được ứng dụng hơn là
do nguời dùng đó là thành viên của
application role.
• Mặc định application role không hoạt động (
inactive) và đòi hỏi password khi được kích
hoạt.
65
GV Phi Loan - Khoa CNTT – HUI
Kết nối với 1 application role
1. Ngươ ̀i dùng cha ̣y ư ́ng dụng . Ư ́ng dụng này kết nối
đền SQL Server.
2. Ứng dụng sẽ cha ̣y thu ̉ tục sp_setapprole để kích
hoạt application role.
3. Khi application hoa ̣t đô ̣ng thì làm mât́ đi các
permission khác của ngươ ̀i dùng, chỉ còn các
permission của application role.
4. Các quyền có được thông qua application role sẽ
được duy trì trong suốt thơ ̀i gian kết nối cho đến khi
disconnect hoă ̣c dùng lệnh sp_unsetapprole vơ ́i
cookie để quay la ̣i session trươ ́c đó.
66
GV Phi Loan - Khoa CNTT – HUI
Tạo application role
• Nhấp pha ̉i tại security\Role\Application Role,
cho ̣n lệnh New application của DB
• Hoă ̣c Tạo 1 application role cho DB hiện hành
CREATE APPLICATION ROLE application_role_name
WITH PASSWORD = 'password'
Ví du ̣:
USE Toyworld
CREATE APPLICATION ROLE ‘L1’ WITH
PASSWORD =‘’l1’
67
GV Phi Loan - Khoa CNTT – HUI
Kích hoạt 1 application role
sp_setapprole [@rolename =] 'role' ,
[@password =] 'password‘
[ , [ @fCreateCookie = ] true | false ] [ , [ @cookie =
] @cookie OUTPUT ]
• Thủ tục sp_setapprole chỉ có thể được gọi
trực tiếp bằng lệnh exec. Nó không thể được
thực thi bên trong 1 thủ tục khác hay từ 1
transaction của người dùng
68
GV Phi Loan - Khoa CNTT – HUI
Kích hoạt 1 application role
• Cookie chứa thông tin trươ ́c khi application role
được kích hoa ̣t. Cookie được dùng cho lệnh
sp_unsetapprole để quay về session trươ ́c đó và
ngừng hoạt động của application role
• @fCreateCookie = xác định cookie có được tạo
cùng lúc kích hoạt application hay không, (true
1, false 0)
• @cookie OUTPUT dùng để xác định cookie kiểu
varbinary(8000)
69
GV Phi Loan - Khoa CNTT – HUI
Ví dụ về kích hoạt application role
DECLARE @cookie varbinary(8000);
EXEC sp_setapprole ‘l1', ‘l1' , @fCreateCookie =
true, @cookie = @cookie OUTPUT;
-- Application role đang hoa ̣t động
SELECT USER_NAME(); -- xem tên application role
--Ngưng hoa ̣t đô ̣ng application role và quay về
session trước đó
EXEC sp_unsetapprole @cookie;
SELECT USER_NAME(); -- This will return the name
of the original user. GO
70
GV Phi Loan - Khoa CNTT – HUI
Ví dụ
• Sue đang chạy ứng dụng Sales mà ứng dụng
này yêu cầu các quyền SELECT, UPDATE và
INSERT vào các bảng Products và Orders trong
CSDL Sales, nhưng cô ta lại không có các
quyền này khi truy xuất trực tiếp vào hai
bảng trên khi dùng cửa sổ Query hay các công
cụ khác của SQL.
• Hãy phân quyền thích hợp cho Sue
71
GV Phi Loan - Khoa CNTT – HUI
Ví dụ
• Tạo 1 Database role cấm các quyền SELECT,
INSERT và UPDATE trên bảng Products và Orders,
và thêm Sue vào như là thành viên của role đó.
Sau đó tạo 1 application role trong database Sales
với các quyền SELECT, INSERT và UPDATE trên các
bảng Products và Orders. Khi application chạy, cần
đưa password vào để kích hoạt application role.
Nếu Sue cố đăng nhập vào SQL server không
thông qua ứng dụng thì cô ta không thể nào truy
xuất vào được hai bảng Products và Orders
72
GV Phi Loan - Khoa CNTT – HUI
Least Privilege
• The principle of least privilege is a
principle of information security that
dictates granting a security principal only
those privileges that are necessary to
perform required tasks.
73
GV Phi Loan - Khoa CNTT – HUI
Privileges (permissions)
• Mỗi user account trong 1 database có thể được câṕ
(granted) mô ̣t số quyền(privileges hay permissions).
• Có 3 loa ̣i quyền trong Microsoft SQL
– Server privileges (Implied Permissions ): include such
permissions as starting up, shutting down, and
backing up the SQL server,
– Statement privileges: include such permissions as
creating a database and creating a table.
– Object privileges allow specific actions on a specific
object, such as allowing select and update on table
T1
74
GV Phi Loan - Khoa CNTT – HUI
Các loại quyền (Permissions)
• Khi 1 đối tượng được tạo ra, chỉ có owner (
người tạo đối tượng) mới có quyền truy xuất
đối tựong. Owner phải cấp quyền cho các user
khác
• User phải có quyền thích hợp để thực thi bất kz
hoạt động nào liên quan đến việc thay đổi định
nghĩa DB hay truy xuất dữ liệu
• Tất cả các quyền trong SQL server có thể tồn tại
dưới 1 trong 3 trạng thái sau: granted ( cấp
quyền), revoked (thu hồi) và denied (từ chối).
75
GV Phi Loan - Khoa CNTT – HUI
Object Permissions
(Quyền về đối tượng)
• Ngay khi 1 DB được tạo, các user cần được cho
quyền để làm việc với dữ liệu được lưu trữ
trong DB.
• Có 6 lọai quyền object :
– SELECT: cho phép user đọc dữ liệu từ 1 bảng
hay view
– INSERT: cho phép user thêm các hàng mới vào
bảng
– UPDATE: cho phép user sửa đổi dữ liệu hiện
có trong bảng, tuy nhiên user không thể thêm
hay xóa các hàng trong bảng được
76
GV Phi Loan - Khoa CNTT – HUI
Object Permissions
(Quyền về đối tượng)
• DELETE: cho phép user được quyền xóa các
hàng trong bảng
• REFERENCES khi 2 bảng kết với nhau thông
qua khóa ngọai (foreign key) quyền
REFERENCES cho phép user chọn dữ liệu từ
bảng primary mà không cần có quyền SELECT
trên bảng foreign
• EXECUTE: cho phép user thực thi thủ tục mà
user được cấp quyền
77
GV Phi Loan - Khoa CNTT – HUI
BACKUP DATABASE
BACKUP LOG
CREATE DATABASE
CREATE DEFAULT
CREATE FUNCTION
Statement Permissions
Quyền về lệnh
• Cho phép các họat động liên quan đến việc
tạo DB hay 1 đối tượng nào đó trong DB như
bảng, thủ tục. Các quyền về lệnh đươc áp
dụng chỉ cho lệnh hơn là cho bản thân các
đối tượng.
• Các Statement permissions là
78
CREATE PROCEDURE
CREATE RULE
CREATE TABLE
CREATE VIEW
GV Phi Loan - Khoa CNTT – HUI
Implied Permissions
Quyền ngầm định
• Implied permissions kiểm sóat các họat động
mà chỉ có thể được thực hiện bởi các thành
viên của các role hệ thống (như sysadmin,..)
hoặc các owner của các đối tượng CSDL.
• Các owner của các đối tượng DB cũng có thể
có các quyền ngầm định cho phép họ thực thi
tất cả các hoạt động với đối tượng mà họ là
chủ
79
GV Phi Loan - Khoa CNTT – HUI
Data Control Language
• Có thể dùng các lệnh DCL(Data Control
Language) để thay đổi các quyền có liên quan
đến user hay role của DB.
• Có 3 lệnh DCL :
• GRANT
• REVOKE
• DENY
80
GV Phi Loan - Khoa CNTT – HUI
Data Control Language
• Câṕ quyền về lệnh (Statement permissions):
GRANT { ALL | statement [ ,...n ] }
TO security_account [ ,...n ]
81
GV Phi Loan - Khoa CNTT – HUI
Data Control Language
Cấp quyền về đối tượng (Object permissions):
GRANT
{ ALL | permission [ ,...n ] }
{
[ ( column [ ,...n ] ) ] ON { table | view }
| ON { table | view } [ ( column [ ,...n ] ) ]
| ON { stored_procedure |
extended_procedure }
| ON { user_defined_function }
}
TO security_account [ ,...n ]
[ WITH GRANT OPTION ]
82
GV Phi Loan - Khoa CNTT – HUI
Data Control Language
• ALL: đối với quyền về lệnh (statement
permission), thì ALL chỉ có thể được
dùng bởi các thành viên của sysadmin.
Đối với quyền về đối tượng (object
permissions), ALL chỉ được dùng bởi các
thành viên của sysadmin, db_owner và
owner của đối tượng CSDL.
83
GV Phi Loan - Khoa CNTT – HUI
Data Control Language
• WITH GRANT OPTION (chỉ dùng cho quyền
về đối tượng) cho khả năng các tài khoản
sau khi được gán quyền được phép cấp
quyền này cho các tài khoản khác
• Ví dụ:
Use pubs
GRANT select, insert, update ON titles TO faculty
84
GV Phi Loan - Khoa CNTT – HUI
Data Control Language (Contd.)
• Lệnh Deny để loại bỏ quyền khỏi 1 tài khoản
trong CSDL hiện hành và để tránh tài khoản này
được thừa hưởng quyền của nhóm hay role của
tài khoản đó.
• Cú pháp:
DENY [ON ]TO
• Ví dụ:
Use pubs
DENY select, insert, update ON titles TO faculty
85
GV Phi Loan - Khoa CNTT – HUI
Data Control Language (Contd.)
• Lệnh REVOKE dùng để thu hồi lại quyền đã
đuợc cấp hay từ chối từ 1 user của CSDL hiện
hành
• Cú pháp
REVOKE [GRANT OPTION FOR]
[ON ] TO
• Ví dụ:
REVOKE select, insert, update ON titles TO
faculty
86
GV Phi Loan - Khoa CNTT – HUI
Giải quyết xung đột các quyền
• Các quyền được cấp cho 1 nhóm hay 1 role sẽ
được kế thừa bởi các thành viên của nhóm
hay role đó. Mặc dù user có thể có quyền
grant hay revoke 1 mức nào đó nhưng có thể
bị xung đột ở mức cao hơn làm cho user có
thể bị ngăn hay cho phép truy xuất đến 1 đối
tượng.
87
GV Phi Loan - Khoa CNTT – HUI
Giải quyết xung đột các quyền
• Deny: quyền deny luôn ưu tiên hơn. Quyền
deny ở bất kz mức nào cũng sẽ cấm các
quyền trên các đối tượng bất kể có tồn tại
quyền grant hay revoke dành cho user đó hay
không.
88
GV Phi Loan - Khoa CNTT – HUI
Giải quyết xung đột các quyền
• Ví dụ: nếu John là thành viên của role sales,
role này đã được cấp quyền SELECT trên bảng
Customer, nếu John bị cấm (deny) 1 cách
tường minh quyền SELECT trên bảng
Customer thì John sẽ không còn được truy
xuất vào bảng đó nữa. Tương tự, nếu role
sales bị cấm truy xuất bảng customer thì dù
cho John được cấp quyền truy xuất riêng
cũng sẽ bị cấm theo.
89
GV Phi Loan - Khoa CNTT – HUI
Giải quyết xung đột các quyền
Lưu ý: SQL Server luôn xử lý các quyền bị cấm
trước. Nếu bạn deny các quyền vào role public
thì có nghĩa là bạn cấm mọi người truy xuất đến
đối tượng đó kể cả người đã tạo ra lệnh DENY
này
90
GV Phi Loan - Khoa CNTT – HUI
Giải quyết xung đột các quyền
• Revoke: chỉ thu hồi các quyền được cấp hoặc
bị từ chối ở mức được thu hồi ( user, group
hay role). Cùng 1 quyền đó mà được cấp hay
cấm ở mức khác của 1 group hay 1 role chứa
user đó thì quyền của group hay role đó vẫn
đựợc áp dụng.
91
GV Phi Loan - Khoa CNTT – HUI
Giải quyết xung đột các quyền
• Ví dụ: nếu role sale được cấp quyền SELECT
trong bảng Customer và John (thành viên của
sales) đã bị thu hồi một cách tường minh
quyền SELECT trên bảng customer, anh ta vẫn
có thể truy xuất bảng đó do anh ta vẫn là
thành viên của role sales. Để tránh cho John
không truy xuất được vào bảng customer
phải thực hiện 1 trong 3 cách sau:
92
GV Phi Loan - Khoa CNTT – HUI
Giải quyết xung đột các quyền
1. Thu hồi quyền (giả thiết là John không có
quyền nào khác ở cấp khác)
2. Cấm quyền vào role sales ( cấm tất cả các
thành viên của sales không được truy xuất
vào bảng)
3. Từ chôí 1 cách tường mình John quyền
SELECT trên bảng customer.
93
GV Phi Loan - Khoa CNTT – HUI
Giải quyết xung đột các quyền
• Grant: xóa các quyền bị tư ̀ chối hoặc bị thu
hồi ở mức được cấp. Cùng quyền này mà bị
tư ̀ chối ở mức khác chẳng hạn mức group
hay role thì các quyền này vẫn còn được áp
dụng. Ví dụ quyền thu hồi dành cho role sales
kết hợp với quyền được cấp cho John sẽ cho
John quyền được cấp.
• User nhận 1 tổ hợp của tất cả quyền được
cấp, tư ̀ chôí hay thu hồi trên 1 đối tượng thì
quyền bị tư ̀ chối sẽ ưu tiên hơn.
94
Các file đính kèm theo tài liệu này:
- chuong_10_ktcd_dbms_4194.pdf