– Database access security : kiểm soát ai có thể truy cập vào một DB cụ thể trên server.. Database access security Sau khi cấp login account để truy cập vào SQL Server, bạn cần cấp cho l
Trang 1Chương 8
SECURITY
Trang 2BẢO MẬT TRONG SQL SERVER
Bảo mật trong SQL Server gồm 3 lớp :
– Login security : kiểm soát ai có thể log vào SQL
Server
– Database access security : kiểm soát ai có thể truy
cập vào một DB cụ thể trên server
– Permission security : kiểm soát một user có thể thực
hiện thao tác gì trên DB
Trang 3BẢO MẬT TRONG SQL SERVER
Trang 4nhiệm bảo mật của Windows
2. SQL Server Authentication: Người quản trị CSDL tạo ra
tài khoản và password đăng nhập của SQL server
Trang 5– Như vậy, nếu các client không có phép log vào
Windows 2000 nhưng vẫn có thể connect với SQL
Server nếu có một SQL Server login account
− Thông tin đăng nhập được lưu trong bảng sysxlogins
của CSDL master
− Khi dùng chế độ chứng thực SQLServer, một tài khoản
đăng nhập mặc định là sa , mật khẩu là null
Login security
Trang 6Login security
Hai chế độ chứng thực:
Mixed security Mode
Kết nối với SQL server 2000 bằng cách dùng Windows Authentication hoặc SQL server
Authentication
Windows authentication mode
Chỉ có thể kết nối với SQL server 2000 bằng Windows Authentication, Windows NT kiểm tra
an toàn tất cả các kết nối đến SQL server
Thao tác : Chuyển đổi chế độ chứng thực
Trang 8 Tạo Login account
Hai phương pháp ứng với hai loại chứng thực
a) Khai báo một Windows account : 2 cách
Trang 9Login security
Chú ý :
Khi tạo login account, có một thao tác là chọn một
default database Việc chọn default database chỉ là
thiết lập một default context cho user, chứ không phải
là cấp quyền cho user trên database này.
login account
Một cho built-in Windows 2000 Administrator group
Một cho SQL Server service account.
Trình cài đặt cũng tự động tạo một SQL Server login
account gọi là sa cho các nhà quản trị hệ thống.
Trang 10Database access security
Sau khi cấp login account để truy cập vào SQL Server, bạn cần cấp cho login
account này quyền là một user truy cập
một / nhiều database.
– SQL Server lưu các user của mỗi database trong
table sysusers
– Một login account có thể trở thành user của nhiều
database với những quyền hạn và có thể mang
user name khác nhau Mặc định user name trùng
tên với login account
Trang 11 Khi chỉ định 1 login account là user của một DB, mặc
nhiên user thuộc về public database role Bạn có thể
thông qua role này để chỉnh sửa quyền của user
Khi gán 1 login account là thành viên của một
database role trên một DB, nó trở thành một user của database này
Database access security
Trang 12Hai user đặc biệt
dbo là một user có tất cả các quyền trên DB
Mặc định tất cả các thành viên thuộc sysadmin server role đều là dbo của tất
cả các DB trên server.
Một login account là thành viên của db_owner database role thì cũng có quyền
như dbo.
Khi thao tác các object trong DB, các thành viên này có thể dùng tên dbo để chỉ
owner thay cho user name.
guest user : Một login account truy suất đến 1 instance của SQL Server 2000, nhưng không có user account để truy xuất 1 DB cụ thể , thì có thể được truy xuất đến DB như một người khách
(guest user)
− Bạn có thể cấp các quyền cho guest user account giống như cấp cho các user
account khác Tuy nhiên đây là user account dành cho khách vãng lai.
− Mặc định chỉ có master, tempdb, northwind, pubs database là có guest user Các
db khác không có sẵn guest user account
Database access security
Trang 13 Khai báo một user
Dùng icon <tên DB>.User trong EM
Dùng thuộc tính của login account trong EM
Dùng lệnh sp_grantdbaccess loginname
Gán user là thành viên của database role :
• Dùng thuộc tính của database role trong EM
• Dùng thuộc tính của login account hay user account trong EM
• Dùng lệnh
sp_addrolemember
Database access security
Trang 15 Các cơ chế cấp quyền :
dùng login account được tạo sẵn bởi hệ thống và
được gán role default như :
sa được gán sysadmin fixed server role
Chỉ định 1 login account là user của một db
mặc định có quyền thuộc public database role
Sử dụng role / Cơ chế role bao trùm
sysadmin bao trùm db_owner
Sử dụng các lệnh Cấp quyền cho user thao tác trên object và statement như grant, deny, revoke
Permission security
Trang 16Role là một công cụ cho phép cấp quyền cho một
nhóm user thay vì thực hiện trên từng user
− Các quyền được grant, deny hay revoke trên role đều có
hiệu lực với các thành viên của role
− Nếu không còn muốn duy trì quyền hạn cho một user
bạn chỉ cần loại user khỏi danh sách các thành viên của role
− Thường các role được định nghĩa dựa vào nhóm công
việc của một nhóm user
Permission security
ROLES
Trang 17Hai loại role
Fixed role gồm Server role và Database role
do SQL Server tạo , không thay đổi được
User-defined database role
Hoặc có thể phân biệt :
Role mức server : fixed server role do hệ thống tạo
sẵn , không thay đổi được
Role mức database : có 2 loại fixed database role,
và user defined database role Mỗi role có phạm vi
trong một database
Permission security
ROLES
Trang 18Cách gán một đăng nhập cho roles server:
Bằng T-SQL:
sp_addsrvrolemember [@loginame=]‘login’, [rolename=] role ’
Login: là ID đăng nhập vào SQL server Role : tên roles server gán cho đăng nhập
Permission security ROLES
Trang 19 Cách gán một User vào database roles
Use Northwind EXEC Sp_addrolemember 'db_securityadmin', ' CDCN4\KeToan'
Permission security ROLES
Trang 20 User Defined Roles: Bạn phải là thành viên của
db_securityadmin, hay db_owner , hay sysadmin, để có
thể tạo role
Dùng T-SQL tạo role
B1: Định nghĩa một role (Một user_defined database role được định nghĩa trong một DB)
sp_addrole role_name, role_owner
B2: Gán quyền về statement và object cho role
B3: Gán các user là thành viên của role
Xoá role:
Sp_droprole rolename
Permission security ROLES
Trang 21Statement and Object permission
Trang 22Object permission :
Kiểm soát một user/role có thể thực hiện hành động gì trên một object cụ thể trong database Object nhỏ nhất là column
DELETE table , view
DUMP TABLE table
EXECUTE stored procedure
INSERT table , view
SELECT table, view, và column
UPDATE table, view, và column
Statement and Object permission
Trang 23Statement and Object permission
Trang 24Lệnh từ chối (deny)
Ngăn user sử dụng quyền và không cho phép user
có cơ hội thừa hưởng do là thành viên của một
role
Bạn deny quyền SELECT của một user, trong khi
user thuộc về một role có quyền SELECT, thì user
cũng không thể dùng quyền SELECT.
Statement and Object permission
Trang 25Lệnh hủy (revoke)
Huỷ quyền đã cấp grant hay đã từ chối deny.
Việc hủy quyền đã cấp của một user không ngăn
cản user thừa hưởng do là thành viên của một
role (khác với deny)
Việc hủy quyền đã deny của một user có nghĩa
cho phép user có lại quyền nếu là thành viên của
một role có quyền đó
Statement and Object permission
Trang 26GRANT { ALL | statement [ , n ] } TO user_name [, n ]
GRANT { { ALL | permission [
Trang 27 Denying Statement Permission :
DENY { ALL | statement [ , n ] } TO user_name
[ , n ]
DENY { { ALL | permission [
Trang 28REVOKE { ALL | statement [ , n ] } FROM
user_name [ , n ]
REVOKE { { ALL | permission [
{TO | FROM} user_name [ , n ]
Statement and Object permission
Trang 29GRANT CREATE DATABASE, CREATE TABLE
TO Sally
go
GRANT SELECT, UPDATE
ON Customers (CompanyName, City, Phone)
DENY UPDATE, DELETE
Statement and Object permission