Tải bản đầy đủ (.ppt) (51 trang)

SECURITY Bảo mật trong cơ sở dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (170.56 KB, 51 trang )

Course ILT

Chương 14
SECURITY
Bảo mật trong cơ sở dữ liệu


Mục tiêu
Course ILT

 Trong phần này, chúng ta sẽ học về:
– Các tính chất bảo mật của SQL Server
– Tạo tài khoản đăng nhập (user login)
– Phân biệt tài khoản đăng nhập (user login) và
tài khoản người dùng (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


Course ILT

Khái quát về tính bảo mật trong
SQL Server
 Mỗi database nên có 1 hệ thống bảo mật đáng tin cậy
(reliable security system) để giám sát mọi hoạt
động cũng như các thông tin cần được xem và chỉnh sửa



 Một hệ thống bảo mật đáng tin cậy phải
bảo đám được việc bảo vệ dữ liệu bất kể
việc user đã dùng cách nào để truy xuất
vào database. SQL áp dụng các quyền
bảo mật vào các mức: mức database,
mức các đối tượng và mức các cột của
bảng


Login ID và user ID
Course ILT

 Cần phân biệt Login ID và user ID:
– Người dùng muốn truy xuất vào Microsoft 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. Muốn tạo login
ID, dùng lệnh

sp_addlogin

– 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. Ví dụ user ID là xyz trong DB sales khác với user ID
cũng tên là xyz trong DB inventory.


Course ILT

Login ID và user ID

 Một login ID phải kết hợp với 1 user ID
trong mỗi DB để 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
– sa là 1 tài khoản đăng nhập (login account)
được ánh xạ tự động với user ID dbo trong mọi
DB.
– Guest là user ID đặc biệt

 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.


Course ILT

Authentication &Authorization
 User có thể truy xuất vào DB thông qua 1
account đăng nhập (login ID) hợp lệ , nhờ
đó user có khả năng kết nối vào database
server. Quá trình này được gọi là
authentication(xác thực).
 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 (cấp
phép) (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ệ.


Tạo Login ID
Course ILT



Sử dụng tài khoản đăng nhập của chính Windows như tài
khoản đăng nhập vào SQL server.
– Sử dụng thủ tục sp_grantlogin



Tạo 1 tài khoản đăng nhập của riêng SQL server
– Sử dụng thủ tục sp_addlogin


Gán user của Windows


Cú pháp

Course ILT

sp_grantlogin [@loginame =] 'login‘



Ví dụ: muốn có thể đăng nhập vào SQL server bằng account
của Windows là user1, ta dùng lệnh sau:
sp_grantlogin ‘user1’


Course ILT

Tạo User login của SQL server
 Chỉ có người quản tri (administrator)
mới có quyền tạo login ID mới.

 Cú pháp
sp_addlogin [ @loginame = ] 'login'
    [ , [ @passwd = ] 'password' ]
    [ , [ @defdb = ] 'database' ]

 Ví dụ:
EXEC sp_addlogin ‘student1','Password','master'


Xem các login ID
Course ILT



Dùng thủ tục sp_helplogins


Course ILT


Tạo user cho DB hiện hành
 Để thêm 1 tài khoản (ID) cho 1 user mới vào DB
hiện hành
 Cú pháp:
 sp_adduser [ @loginame = ] 'login'
    [ , [ @name_in_db = ] 'user' ]
    [ , [ @grpname = ] 'group' ]
 Chú ý: chỉ có thể tạo user mới cho những user
nào đã có tài khoản đăng nhập (login ID)
 ‘login‘: xác định login id của user
 'user‘ là tên của user mới. Nếu tuỳ chọn này
không được xác định, tên của user sẽ chính là
tên login id của user đó. Có thể tạo ra tài khoản
user khác với tên login id của user đó.
 'group‘ là nhóm hay role mà user mới này sẽ tự
động trở thành thành viên của nhóm.
 Có thể tạo user mới từ Enterprise Manager


Course ILT

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 đó.
 Tương tự như trong 1 cơng ty, ta có thể
tập hợp các cơng nhân làm cùng 1 cơng
việc lại 1 nhóm, nhờ đó ta có thể giao việc,
cấp quyền cho cả nhóm. 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, ta chỉ đơn
giản thay đổi quyền của nhóm, khi đó
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.


Course ILT

Vai trò của role
 Để dễ quản lý 1 DB, nên xác định 1 tập
hợp các role dựa theo yêu cầu công việc
và gán mỗi role những quyền hạn
(permission) khác nhau. Sau đó, chỉ cần
chuyển các user vào các role thích hợp
hơn là phải cấp quyền cho mỗi user
riêng lẻ. Nếu công việc thay đổi. chỉ cần
thay đổi quyền trong mỗi role thì những
thay đổi này 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


Course ILT

Ví dụ minh hoạ
 Giả sử có CSDL là courses, sau khi người
quản trị cho phép 5 tài khoản Windows bao
gồm giáo sư John, Sarah, Diane và 2 sinh

viên Betty và Ralph được đăng nhập vào
SQL server. Đặc biệt là Diane vừa là giáo
sư nhưng lại vừa theo học 1 lớp khác.
Người quản trị cần cấp cho các giáo sư
quyền được update điểm sinh viên, cịn
các sinh viên thì chỉ được xem điểm của
họ. Người quản trị đã tạo ra 2 view có tên
là ProfessorGradeView dành cho giáo sư,
và StudentGradeView dành cho sinh viên.
 Script của người quản trị nên có nội dung
như thế nào??


Course ILT

USE master
GO
sp_grantlogin 'NETDOMAIN\John'
GO
sp_defaultdb 'NETDOMAIN\John', 'courses‘
GO
sp_grantlogin 'NETDOMAIN\Sarah'
GO
sp_defaultdb 'NETDOMAIN\Sarah', 'courses'
GO
sp_grantlogin 'NETDOMAIN\Betty'
GO
sp_defaultdb 'NETDOMAIN\Betty', 'courses'
GO



Course ILT

sp_grantlogin 'NETDOMAIN\Ralph'
GO
sp_defaultdb 'NETDOMAIN\Ralph', 'courses'
GO
sp_grantlogin 'NETDOMAIN\Diane'
GO
sp_defaultdb 'NETDOMAIN\Diane', 'courses'
GO
USE courses
GO
sp_grantdbaccess 'NETDOMAIN\John‘
GO
sp_grantdbaccess 'NETDOMAIN\Sarah'
GO
sp_grantdbaccess 'NETDOMAIN\Betty'
GO
sp_grantdbaccess 'NETDOMAIN\Ralph'
GO
sp_grantdbaccess 'NETDOMAIN\Diane'
GO


Course ILT

sp_addrole 'Professor'
GO
sp_addrole 'Student'

GO
sp_addrolemember 'Professor', 'NETDOMAIN\John‘
GO
sp_addrolemember 'Professor', 'NETDOMAIN\Sarah‘
GO
sp_addrolemember 'Professor', 'NETDOMAIN\Diane‘
GO
sp_addrolemember 'Student', 'NETDOMAIN\Betty‘
GO
sp_addrolemember 'Student', 'NETDOMAIN\Ralph'
GO
sp_addrolemember 'Student', 'NETDOMAIN\Diane'
GO


Course ILT

GRANT SELECT ON StudentGradeView TO
Student
GO
GRANT SELECT, UPDATE ON
ProfessorGradeView TO Professor
GO


Course ILT

Các loại User Roles



Trong SQL server khơng có group. Tuy nhiên ta có thể quản lý
việc bảo mật của SQL server thơng qua các group của
Windows.



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 user roles đã được định nghĩa sẵn trong SQL Server
2000:
• Fixed Server Roles
• Database Roles


Course ILT

Fixed Server Roles
 Hạn chế khả năng truy xuất vào các
CSDL riêng lẻ sau khi user đăng nhập
vào.
 Có 8 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.
– sysadmin: quyền tối đa mà không bị bất kỳ 1 hạn chế nào. Mặc
định, tất cả các thành viên của nhóm quản trị Windows
(Administrators)và user sa thuộc vào server role này
– 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.


Fixed Server Roles
ó quyền thực thi replication và
quản trị các thủ tục (extended stored

Course ILT

– setupadmin: c
procedures).

điều hành bảo mật như
tạo login và gán quyền.
processadmin: có quyền kết thúc các tiến
trình được gọi khơng hợp lệ
dbcreator: tạo và chỉnh sửa database

– securityadmin:






Fixed Server Roles
– diskadmin: thực hiện các hoạt động sao lưu như sao chép

Course ILT


đĩa và tạo các thiết bị sao lưu

– bulkadmin: thực hiện lệnh BULK INSERT

 Lưu ý: Một thành viên của bất kỳ server
role nào đều có thể thêm các user khác
vào chính server role đó.


Để xem các fixed server roles:
sp_helpsrvrole



Để xem quyền của mỗi role
sp_srvrolepermission


Course ILT

Fixed Server Roles
 Để gán 1 user vào 1 fixed server role, ta
có thể dùng lệnh sau
 Cú pháp:
sp_addsrvrolemember [ @loginame = ] 'login',
[ @rolename = ] 'role‘

 Ví dụ 1: gán user1 vào nhóm sysadmin
EXEC sp_addsrvrolemember 'User1',

'sysadmin‘
 Ví dụ 2: thêm user của Windows NT
Corporate\HelenS vào role sysadmin
EXEC sp_addsrvrolemember
'Corporate\HelenS', 'sysadmin'


Course ILT

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.
 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


Fixed Database Roles


Course ILT

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.



×