
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ả ậ là 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 nă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ấ ề ậ ơ ở ữ ệ ườ ườ
dù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): ườ ơ ở ữ ệ Là đ 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ỗ ộ ườ ơ ở ữ ệ ượ ị ườ
dù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 màề ấ ứ ư ậ ượ ộ ớ
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ượ ạ ằ ẽ ị ấ

