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
31 trang |
Chia sẻ: candy98 | Lượt xem: 922 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Cơ sở dữ liệu - Chương 8: Security - Nguyễn Việt Cường, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1 Chương 8
SECURITY
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.
3BẢO MẬT TRONG SQL SERVER
4Login security
Hai loại chứng thực
1. Windows Authentication:
User chỉ cần ñược cấp account trong Windows 2000.
SQL Server sẽ dựa vào Windows 2000 ñể chứng
thực cho user. gọi là kết nối tin tưởng. Khi kết nối ñến
SQL server theo cách này thì có nghĩa là ñược uỷ
nhiệ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.
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
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
7
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
– Dùng EM : Chọn Security.Login.New login
– Dùng lệnh: sp_grantlogin ‘login’
b) Tạo mới một SQL login account : 2 cách
– Dùng EM : Chọn Security.Login.New login
– Dùng lệnh:
sp_addlogin ‘login’,’password’,’database_name’
Login security
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.
Trình cài ñặt SQL Server tự ñộng thiết lập hai Windows
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.
10
Database 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 .
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
12
Hai 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
13
Khai báo một user
Dùng icon .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_role,database_user_account
Database access security
14
Kiểm soát user có thể làm ñược gì trên
database bằng sử dụng :
− Các database role
− Cấp quyền cho user thao tác trên object và
statement
Permission security
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
16
Role 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
17
Hai 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
18
Cá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
19
Cách gán một User vào
database roles
Use Northwind
EXEC Sp_addrolemember
'db_securityadmin', '
CDCN4\KeToan'
Permission security ROLES
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
21
Statement and Object permission
Statement permission :
Statement Permission kiểm soát một user/role
có thể thực hiện ñược lệnh nào sau ñây :
CREATE DATABASE
CREATE DEFAULT
CREATE PROCEDURE
CREATE RULE
CREATE TABLE
CREATE VIEW
BACKUP DATABASE
BACKUP LOG
22
Object 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
table, view, và column UPDATE
table, view, và column SELECT
table , view INSERT
stored procedure EXECUTE
table DUMP TABLE
table , view DELETE
Statement and Object permission
23
Các thao tác về quyền:
Thực hiện với user hay user_defined database role.
Lệnh cấp (grant)
Nếu bạn cấp quyền cho user, và user là thành
viên của một role. Các quyền mà user có ñược
hợp lại từ cả hai phía.
Statement and Object permission
24
Lệ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
25
Lệ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
26
Granting Statement Permission :
GRANT { ALL | statement [ ,...n ] } TO user_name
[,...n ]
Granting Object Permission :
GRANT { { ALL | permission [ ,...n ] } [ (
column_name [ ,...n ] ) ]
ON
{ table | view | stored_procedure |
extended_procedure | user_defined_function }}
TO user_name [ ,...n ]
Statement and Object permission
27
Denying Statement Permission :
DENY { ALL | statement [ ,...n ] } TO user_name [
,...n ]
Denying Object Permission :
DENY { { ALL | permission [ ,...n ] } [ ( column_name
[ ,...n ] ) ]
ON
{ table | view | stored_procedure |
extended_procedure | user_defined_function }}
TO user_name [ ,...n ]
Statement and Object permission
28
Revoking Statement Permission :
REVOKE { ALL | statement [ ,...n ] } FROM
user_name [ ,...n ]
Revoking Object Permission :
REVOKE { { ALL | permission [ ,...n ] } [ (
column_name [ ,...n ] ) ]
ON
{ table | view | stored_procedure |
extended_procedure | user_defined_function }}
{TO | FROM} user_name [ ,...n ]
Statement and Object permission
29
GRANT CREATE DATABASE, CREATE TABLE
TO Sally
go
GRANT SELECT, UPDATE
ON Customers (CompanyName, City, Phone)
TO Sally
go
DENY CREATE DATABASE
TO Sally, Andy
go
DENY UPDATE, DELETE
ON Customers
TO Sally
Statement and Object permission
30
Ví dụ
QLSACH
QLNHANVIEN
•NHÓM SÁCH
•SÁCH
•HÓA ðƠN
•CTHD
•NHÂN VIÊN
•LƯƠNG
31
P KINH DOANH
BỘ PHẬN BÁN HÀNG
BỘ PHẬN QuẢN LÝ
SERVER DBA
P KẾ TOÁN
MAI
MINH
LAN
HẠNH
Xem file capquyen.sql