B O M T TRONG SQL
I. Các Khái Ni m C B n ơ
SQL Server là m t h th ng qu n lý c s d li u (Relational Database Management ơ
System (RDBMS) ) s d ng Transact-SQL đ trao đ i d li u gi a Client computer và SQL
Server computer. M t RDBMS bao g m databases, database engine và các ng d ng dùng đ
qu n lý d li u và các b ph n khác nhau trong RDBMS.
B o m t m t trong nh ng y u t đóng vai trò quan tr ng đ i v i s s ng còn ế
c a c s d li u. H u h t các h qu n tr c s d li u th ng m i hi n nay đ u ơ ế ơ ươ
cung c p kh ng b o m t c s d li u v i nh ng ch c năng nh : ơ ư
-C p phát quy n truy c p c s d li u cho ng i dùng và các nhóm ng i ơ ườ ườ
ng, phát hi n và ngăn ch n nh ng thao tác trái phép c a ng i s d ng ườ
trên c s d li u. ơ
-C p phát quy n s d ng các câu l nh, các đ i t ng c s d li u đ i v i ượ ơ
ng i dùng. ườ
-Thu h i (hu b ) quy n c a ng i dùng. ườ
B o m t d li u trong SQL đ c th c hi n d a trên ba khái ni m chính sau đây: ượ
-Ng i dùng c s d li u (Database user): ườ ơ đ i t ng s ượ d ng c ơ s d
li u, th c thi các thao tác trên c s d li u nh t o b ng, truy xu t d li u,... ơ ư
M i m t ng i dùng trong c s d li u đ c xác đ nh thông qua tên ng i ườ ơ ượ ườ
ng (User ID). M t t p nhi u ng i dùng có th đ c t ch c trong m t ườ ượ
nhóm và đ c g i là nhóm ng i dùng (User Group). Chính sách b o m tượ ườ
c s d li u có th đ c áp d ng cho m i ng i dùng ho c cho các nhómơ ượ ườ
ng i dùng. ườ
-Các đ i t ng c s d li u (Database objects): ượ ơ T p h p các đ i t ng, ượ
các c u trúc l u tr đ c s d ng trong c s d li u nh b ng, khung nhìn, ư ượ ơ ư
th t c, hàm đ c g i là các đ i t ng c s d li u. Đây là nh ng đ i ượ ượ ơ
t ng c n đ c b o v trong chính sách b o m t c a c s d li u. ượ ượ ơ
-Đ c quy n (Privileges): Là t p nh ng thao tác đ c c p phát cho ng iượ ườ
dùng trên các đ i t ng c s d li u. Ch ng h n m t ng i dùng có th ượ ơ ườ
truy xu t d li u trên m t b ng b ng câu l nh SELECT nh ng có th không ư
th th c hi n các câu l nh INSERT, UPDATE hay DELETE trên b ng đó.
SQL cung c p hai câu l nh cho phép chúng ta thi t l p các chính sách b o m t ế
trong c s d li u:ơ
L nh GRANT: S d ng đ c p phát quy n cho ng i s d ng trên các đ i ườ
t ng c s d li u ho c quy n s d ng các câu l nh SQL trong c s d li u. ượ ơ ơ
L nh REVOKE: Đ c s d ng đ thu h i quy n đ i v i ng i s d ng. ượ ườ
1. Platform
Platform cho SQL Server bao g m các ph n c ng v t lý và các h th ng m ng
k t n i khách hàng đ n các máy ch c s d li u và các t p tin nh phân đ c sế ế ơ ượ
d ng đ x lý các yêu c u c s d li u. ơ
Operating System Security: Các gói d ch v và nâng c p h đi u hành bao g m
vi c tăng c ng an ninh m ng. ườ
2. Authentication
SQLServer xác th c vi c truy c p d li u thông qua vi c phân quy n truy c p
d li u bao g m:
-Login và user: SQL Server cho phép truy nh p vào h th ng thông qua các login.
Ch khi có quy n m c đ nh t đ nh b n m i có th t o thêm login.
-Server role: Role th c ch t là t p h p m t nhóm các quy n và đ i di n b ng m t
tên đ thu n ti n cho vi c qu n lý.
-Database role: database role t p h p các quy n truy nh p vào database thành t ng
nhóm đ d t o l p và s a đ i.
-Authentication: SQL Server xác th c các đăng nh p b ng hai c ch , Windows ơ ế
Authentication và SQL Server Authentication.
3. Object Security (B o m t đ i t ng c s d li u) ượ ơ
Encryption and Certificates: Encryption không gi i quy t các v n đ đi u khi n, ế
tuy nhiên nó tăng c ng b o m t b ng cách làm h n ch m t mát d li u.ườ ế
Certificates: là ph n m m chìa khóa đ c chia s gi a 2 máy ch cho phép ượ
truy n thông tin an toàn b ng cách xác th c quy n ng i dùng, đ ng th i tăng kh ườ
năng b o m t các k t n i t i t ng đ i t ng. ế ượ
4. Application Security
SQLServer cung c p kh năng b o m t t phía các ng d ng thông qua vi c c u
hình ng d ng, t o k t n i t i database. ế
Các tính năng Stored procedure và function do ng i dùng t đ nh nghĩa nh m tránh khườ
năng d li u b m t c p ho c b phá ho i qua l h ng SQL injection.
II. SECURABLES VÀ PRINCIPAL.
1. SECURABLES
Securable là ngu n tài nguyên (đ i t ng c s d li u) mà h th ng c s d li u ượ ơ ơ
SQL Server cho phép quy đ nh truy c p (ki m soát s quy đ nh truy c p và c p cho các
principal các quy n).
Ph m vi Securable Server: Thi t b đ u cu i, đăng nh p, vai trò máy ch , c s d ế ơ
li u, các thông báo s ki n.
-Ph m vi securable database: Ng i s d ng, vai trò c s d li u, vai trò ng ườ ơ
d ng, khoá b t đ i x ng, khóa đ i x ng….
-Ph m vi securable schema: lo i, l c đ XML và đ i t ng - l p đ i t ng hay nói ượ ượ ượ
cách khác là các đ i t ng n m bên trong m t ph m vi c s d li u ượ ơ
nh : view, table, các th t c….ư
Ki m soát truy c p vào m t Securable: M t th c th nh n đ c m t “permission” đ n m t ượ ế
securable g i là principal. M t principal ph bi n nh t là có database và user. Truy c p vào ế
securables đ c đi u khi n b i s c p ho c t ch i quy n truy c p ho c b ng cách thêm userượ
và s d ng vai trò đó có th truy c p.
2. PRINCIPAL
Principal là các n i có th yêu c u tài nguyên SQL Server. Nh các thành ph nơ ư
khác c a mô hình SQL Server cho phép, principal có th đ c s p x p theo m t h ượ ế
th ng phân c p. Ph m vi nh h ng c a principal ph thu c vào ph m vi đ nh nghĩa ưở
c a principal: Windows, máy ch , c s d li u, và principal không th tách r i ho c ơ
m t mô hình SQL server.
a. Role:
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 đó.
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 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
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 ư ượ
SQL server có th dùng khi truy n thông tin qua m ng.
setupadmin: có quy n th c thi replication và qu n tr các th t c (extended
stored procedures).
securityadmin: đ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
disarming: 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ư
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
Đ 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'
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
Thêm thành viên vào DB Role:
Tài kho n b o m t (security account): có th là b t kỳ user h p l nào c a
SQL server. Có th là 1 role nào đó c a SQL Server có th là b t kỳ user hay group nào c a
Windows đã đ c gán quy n truy c p vào DB hi n hànhượ .
Đ thêm user hay group c a Windows NT, dùng sp_grantdbaccess
Dùng 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 kỳ quy n nào c a role đó.ế
sp_addrolemember [ @rolename = ] 'role' , [ @membername = ] 'security_account'
Cú Pháp:
sp_grantdbaccess [@loginame =] 'login'[,[@name_in_db =] 'name_in_db' OUTPUT]]
Ví d : thêm user c a Windows vào CSDL hi n hành v i user ID là Georgie.
EXEC sp_grantdbaccess 'Corporate\GeorgeW', 'Georgie'
Đ xoá tài kho n ra kh i CSDL: sp_revokedbaccess [ @name_in_db = ]
'name‘ Ví d : EXEC sp_revokedbaccess 'Georgie'
Cú pháp sp_addrolemember
sp_addrolemember [ @rolename = ] 'role' , [ @membername = ] 'security_account'
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 kỳ role database c đ nh nào. SQL server cho phép t o các database role tuỳ
bi n (custom). Khi t o m t role database tùy bi n, tr c tiên c n thêm các quy n vào role,ế ế ướ
sau đó s gán các user vào role.
Cú Pháp:
Dùng l nh sp_addrole [ @rolename = ] 'role' [ , [ @ownername = ] 'owner' ]
B ng Enterprise Manager
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'
Vai trò c a Application Roles:
H th ng b o m t trong SQL server đ c th c thi m c th p nh t: là database. ượ
Đây là ph ng pháp t t nh t đ ki m soát các ho t đ ng c a user b t k ng d ng nàoươ
đ c dùng đ k t n i v i SQL server. Tuy nhiên, đôi khi vi c ki m soát b o m t ph iượ ế
đ c “customized” ( tuỳ biên) đ phù h p v i các yêu c u đ c bi t c a m i ng d ng.ượ
Application role không có member (thành viên) nh các role khác. Quy n c aư
apllication role có đ c khi application role ho t đ ng do 1 ng d ng nào đó đang ch y.ượ
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 ng i dùng đó là thành viên c a application role. ơ ườ
T o 1 application role cho DB hi n hành:
Cú pháp
sp_addapprole [ @rolename = ] 'role‘ , [ @password = ] 'password'
Giá tr tr v c a th t c : 0 (thành công) ho c 1(b l i) Có
th t o application role t enterprise manager
Đ kích ho t 1 application role trong DB hi n hành:
Cú pháp
sp_setapprole [@rolename =] 'role' , [@password =] 'password‘
Sau khi application role đ c kích ho t b ng sp_setapprole, role s không b m tượ