Tải bản đầy đủ (.docx) (28 trang)

Tiểu luận xây dựng chính sách an toàn thông tin Bảo mật Microsoft SQL Server 2008

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 (536.85 KB, 28 trang )

Đại học Quốc gia Thành phố Hồ Chí Minh
Trường Đại học Công nghệ thông tin

BÁO CÁO
Môn: Xây dựng chính sách an toàn thông tin
Đề tài: Bảo mật Microsoft SQL Server 2008
Giảng viên : Nguyễn Duy
Khóa: 3
Nhóm: 11
Sinh viên: Họ tên MSSV
1. Trầm Phúc Thịnh
08520382
2. Thái Duy Tiến
08520403
3. Nguyễn Hữu Phúc
08520289
4. Đoàn Vũ Bình Phú
08520285
Tháng 04, 2012
Mục lục
1. Giới thiệu:
SQL Server là 1 hệ thống quản lí cơ sở dữ liệu (RDBMS) hay còn được gọi là relational
database management system. RDBMS là 1 trong những mô hính cơ sở dữ liệu quan hệ
thong dụng hiện nay.Sử dụng RDBMS System như là cách thức cơ bản để lưu trữ dữ liệu cho
hầu hết các ứng dụng hiện nay. Tuy còn những mô hình khác ,nhưng trong phạm vi đề tài chỉ
tập trung vào RDBMS và đặc biệt chỉ xoay quanh vấn đề bảo mật của SQL Server.Một cơ sở
dữ liệu trong 1 tổ chức hay trong 1 doanh nghiệp có thể chúa đựng những dữ liệu hêt sức
quan trọng mang tính sống còn. Chính vì thế mà bảo mật dữ liệu trở thành 1 vấn đề rất quan
trọng. Một hệ thống DBMS hay RDBMS cần phải hỗ trợ những kĩ thuật và phương tiện để
bảo mật dữ liệu. Trong đề tài này sẽ tập trung vào các chính sách bảo mật của SQL Server và
thảo luận 1 cách chi tiết bảo mật được cung cấp như thế nào trong SQL Server.


1.1. Khái niệm cơ bản về bảo mật:
- Bảo mật có rất nhiều khái niệm, cho phép người quản trị CSDL tự ra quyết định cho phép
hay không cho phép người dùng truy cập và thao tác trên CSDL sao cho có hiệu quả bảo
mật tốt nhất. Dưới 1 góc độ nào đó, người quản trị dựa trên nền tảng lí thuyết bảo mật
của hệ CSDL đa người dùng nhằm tìm ra những phương pháp bảo mật theo đúng với nhu
cầu của độ bảo mật dữ liệu.Với mục đích tăng tính bảo mật dữ liệu, SQL Server 2000 hỗ
trợ các tính năng cho phép nhà quản trị thiết lập cợ chế bảo vệ CSDL trong môi trường đa
người dùng, bao gồm các yếu tố chính sau:
• Vai trò của người dùng trong hệ thống và CSDL
• Quyền sử dụng các ứng dụng CSDL trong SQL Server
• Quyền tạo và sửa đổi cấu trúc các đối tượng CSDL
• Quyền truy cập, xử lí dữ liệu
- Khi đăng nhập vào 1 hệ thống CSDL đa người dùng, ngưới sử dụng cần phải cung cấp
UserID và Password. Dựa trên UserID hệ thống có khả năng kiểm soát tát cả các hành vi
của người sử dụng trên CSDL SQL Server 2000.Để làm được chức năng này, người quản
trị CSDL cần phải thiết lập các quyền xử lý và truy cập vào CSDL khhi tạo ra UserID
này, ngoài ra còn 1 số thuộc tính khác của SQL Server như quyền bakup dữ liệu, trao đổi
dữ liệu với các ứng dụng CSDL khác…Khi nói đến bảo mật, ta cần quan tâm dến tên tài
khoản, mật khảu, chiều dài, thời gian có hiệu lực… như sau:
• Một người sử dụng chỉ có 1 UserID và 1 Password.
• Thời gian có hiệu lực của mật khẩu.
• Chiều dài của mậ khẩu có giới hạn <= 36.
• Giới hạn người sử dụng theo license hay mở rộng.
• Thông tin về người sử dụng.Khi tạo người sử dụng, tên tài khoản cần rõ ràng, dễ hiểu
dễ gợi nhớ, không cho phép các kí tự đặc biệt, không nên có khoảng trắng, điều này
dễ gây khó khăn sau này.
1.2. Giới thiệu chung về bảo mật trong SQL Server:
- Bảo mật trong SQL Server có thể được mô tả thông qua mô hình 3 tầng dưới đây:
• Tầng ngoài cùng đòi hỏi 1 tài khoản Windows hoặc nhóm bảo mật để có thể truy cập
SQL Server thông qua việc dăng nhập vào server.

• Tầng kế tiếp là điều kiện để có thể sử dụng 1 hay nhiều CSDL.
• Tầng trong cùng là điều kiện để có thể thực hiện những phát biểu với những đối
tượng CSDL được bảo vệ.
2. Quản lí việc đăng nhập:
SQL Server xác nhận người dùng qua 2 cấp:
• Xác nhận việc đăng nhập.
• Xác nhận quyền đối với CSDL.
SQL Server cần xác nhận 1 người dùng trước khi người đó có thể truy cập vào CSDL. Trong
SQL Server mỗi người dùng được cấp cho 1 tài khoản riêng biệt được gọi là tài khoản đăng
nhập ( Login Account). Mỗi người dùng tương tác với SQL Server sử dụng tài khoản này.
Xác nhận(authentication) sẽ kiểm tra người dùng đang sử dụng tài khoản đăng nhập và cấp ra
quyền kết nôi với SQL Server. Nếu sự xác nhận không thành công,người dùng không thể kết
nối với SQL Server.
2.1. Xác nhận việc đăng nhập:
- Một người dùng cần phải có tài khoản đăng nhập để kết nối với SQL Server. SQL Server
có 3 cách để xác nhận, mỗi cách có 1 loại tài khoản đăng nhập khác nhau:
• SQL Server Authentication: khi sử dụng SQL Server authentication, 1 người quản lí
của SQL Server định nghĩa 1 tài khoản đăng nhập và mã cho 1 SQL Server. Những
người dùng cần phải đưa ra cả tài khoản và mã dể kết nối với SQL Server.
• Windows Authentication : Khi 1 người dùng kết nối với SQL Server sử dụng
Windows authentication, SQL Server kiểm lại với Windows xem tài khoản và mã đã
đúng chưa.Nếu đúng thì người dùng có thể kết nôi với SQL Server.
• Mixed Mode Authentication: Người dùng có thể sử dụng 1 trong 2 loại trên.
2.2. Sự xác nhận quyền:
- Trong mỗi CSDL, quyền được gán cho tài khoản của người dùng và các vai trò được tạo
ra để thực hiện ( hoặc ngăn cấm) những hành động cụ thể. SQL Server chấp nhận các
lệnh sau khi người dùng đã truy cập thành công tới CSDL.
- SQL Server thực hiện các bước sau trong khi xác nhận quyền:
1. Khi người dùng thực hiện 1 hành động, ví dụ như thực hiện 1 câu lệnh T-
SQL,câu lệnh này được chuyển tới SQL Server

2. Khi SQL Server nhận được câu lệnh, nó kiểm tra em người dùng có quyền thực
hiện câu lệnh hay không.
3. Sau đó, SQL Server thực hiện 1 trong 2 hành động sau:
 Nếu người dùng có quyền, SQL Server thực hiện câu lệnh.
 Nếu người dùng không có quyền, SQL Server báo lỗi.Sử dụng
Enterprise Manager, ta có thể chọn kiểu xác nhận như là Windows
Authentication và Mixed mode authentication
2.3. Tạo 1 đăng nhập:
- Sử dụng Enterprise Manager ta có thể quản lí việc đăng nhập bằng việc sử dụng Create
Login Wizard cung cấp bởi SQL Server Enterprise Manager. Quá trình(Wizard) này
cungcấp 1 sự hướng dẫn từng bước hoàn chỉnh để tạo các đăng nhập 1 cách dễ dàng và
hiệu quả.
- Bên cạnh đó ta cũng có thể sử dụng các thủ tục thường trú( stored procedures) để tạo hay
xóa các đăng nhập.
- Để tạo 1 đăng nhập, ta có thể sử dụng câu lệnh sau:
EXEC sp_addlogin
[@login=]<’login’>
[,@password=]<’password’>]
[,[@defdb=]<’database’>]
[,[@deflanguage=]<’language’>]
[,[@sid=] ‘sid’ ]
[,[@encriptopt=]<’encription_option’>]
Diễn giải các tham số của thủ tục sp_addlogin như sau:
@login: tên tài khoản sẽ tạo
@password: mật khẩu cho người dùng có tài khoản trên
@defdb:CSDL mặc định khi người dùng đăng nhập vào SQL Server
@deflanguage: ngôn ngữ mặc định cho người dùng
@sid: Số nhận dạng hệ thống khi người dùng đăng nhập vào SQL Server
@encriptopt: Khi tạo 1 tài khaỏn người dùng trong CSDL SQL Server
2000, các thông tin tài khỏan, mật khẩu lưu trữ trong bảng sysusers của

CSDL Master, nếu ta cung cấp tham số skip_encription thì mật khẩu sẽ
không mã hóa trước khi lưu vào bảng sysusers, nếu không cung cấp tham
số hay để trống, SQL Server sẽ mã hóa mật khẩu trước khi lưu vào bảng
sysusers.
Ví dụ:
EXEC sp_addlogin ‘Nam’,’123’
Nó sẽ tạo 1 đăng nhập với tên là “Nam”, mã là “123”
Nếu sau khi tạo thành công tài khoản người dùng, cần thiết thay đổi mật khẩu, ta
sử dụng thủ tục sp_ password như sau:
EXEC sp_password
[@old=]<’old password’>
[,[@new=]<’new password’>]
[,[@loginname=]<’’login’>]
Để xóa 1 đăng nhập, ta có thể dùng câu lệnh sau :EXEC sp_droplogin
‘Nam’
- Sử dụng trình điều khiển Manager
Để tạo ra 1 tài khoản đăng nhập (Login User), bắt đầu từ màn hình Microsoft SQL server
Manager Studio, sau đó chọn thư mục Security, right click chọn New Login như trong
hình sau:
Như đã trình bày ở trên, có 2 lựa chọn khi tạo một người dùng trong SQL Server 2008:
• Tương tác với hệ điều hành Windows
• Sử dụng riêng cho SQL Server 2008
Sau khi tạo, SQL Server 2008 kiểm tra. Tài khoản người dùng có hợp lệ hay không, có
tồn tại trên hệ điều hành Windows hoặc tồn tại trong mạng hay không. Nếu tất cả thông
tin hợp lệ, đăng ký thành công.
Trong trường hợp ta muốn tài khoản đó có giá trị hiệu lực trong SQL Server 2008, chọn
SQL Server authentication.
Ghi chú:
• Trong trường hợp sử dụng Tài khoản người dùng chung Windows và SQL Server, nếu
người dùng sử dụng tài khoản loại này họ có thể xóa dữ liệu trên mạng.

• Tùy vào quan điểm quản lý, nhà quản trị tự thiết lập hệ thống người dùng sao cho phù
hợp với chiến lược bảo mật dữ liệu công ty.
3. Quản lí người dùng:
SQL Server cho phép 2 loại tài khoản người dùng sau:
• Người dùng hệ thống( system user)
• Người dùng CSDL(database user)
3.1 Người dùng của SQL Server:
- Một mã người dùng có thể được dùng để xác nhận 1 người dùng trong 1 CSDL. Tất cả
các quyền và sự sở hữu các đối tượng trong CSDL được kiểm soát bởi tài khoản người
dùng. Các tài khoản người dùng là riêng biệt với mỗi CSDL; tài khoản abc trong CSDL
BookDB khác với tài khoản abc trong CSDL CommerceDB, mặc dù chúng giống nhau.
3.2 Mối quan hệ giữa người dùng CSDL và tên đăng nhập:
- Một người dùng trong 1 CSDL được xác nhận bởi mã người dùng(user ID) chứ không
phải bởi mã đăng nhập (login ID).
- Một mã đăng nhập tự nó không thể cấp cho người dùng quyền truy cập tới các đối tượng
của bất kì CSDL nào. 1 mã đăng nhập phải gắn liền với 1 mã người dùng trong mỗi
CSDL trước khi 1 người sử dụng mã dăng nhập dó có thể truy cập tới các đối tượng trong
các CSDL. Nếu mã đăng nhạp không gắn rõ rang với bất kì mă người dùng nào trong 1
CSDL, nó coi như được gắn với mã người dùng khách. Nếu 1 CSDL không có tài khoản
khách, 1 sự đăng nhập không thể truy cập tới CSDl trừ khi nó đã được gắn với 1 tài
khoản người dùng có tồn tại.
- Tài khoản khách là 1 tài khoản đặc biệt trong CSDl của SQL Server. Nếu người dùng sử
dụng lệnh USE để truy cập tới 1 CSDL không được gắn với 1 tài khoản người dung`,nó
sẽ được gắn với tài khoản khách.
3.3 Quản lí tên người dùng và tên đăng nhập:
- Một số thủ tục thường trú hay được sử dụng:
1. sp_grantlogin cho phép tài khỏan người dùng của Windows kết nối với SQL Server
sử dụng Windows authentication.
2. sp_defaultdb thay đổi CSDL mặc định cho 1 đăng nhập.
3. sp_grantdbaccess dùng để thêm 1 tài khoản và cho phép truy cập dữ liệu bằng tài

khoản đó.
4. sp_revokedbaccess dùng để xóa 1 tài khoản ra khỏi CSDL
4. Quyền người dùng (User Right):
Quyền người dùng được định nghĩa như mức độ người dùng có thể hay không thể thực thi
trên cơ sở dữ liệu, quyền được chia thành 4 loại như sau:
• Quyền truy cập vào SQL Server 2000.
• Quyền truy xuất vào cơ sở dữ liệu.
• Quyền thực hiện trên các đối tượng của cơ sở dữ liệu.
• Quyền xử lý dữ liệu.
4.1 Cấp phát quyền truy cập vào cơ sở dữ liệu:
- Điều đầu tiên cần phải thực hiện khi cho phép người sử dụng truy cập vào cơ sở dữ liệu
là cấp phát quyền, có 2 cách để thực hiện việc cấp phát quyền này, bao gồm việc thực
hiện 1 thủ tục có sẵn hay sử dụng trình điều khiển Microsoft SQL server Manager Studio,
bằng cách thêm người sử dụng vào thành viên người dùng của cơ sở dữ liệu.
- Để cấp phát quyền người sử dụng vào truy cập cơ sở dữ liệu bằng lệnh, ta có cú pháp
như sau:
EXEC sp_grantdbaccess
[@loginname=] < ‘ login’ >
[ , [@name_in_db=] ] < ‘ name in this db’ >
Nếu không chỉ rõ cơ sở dữ liệu muốn cho phép người dùng truy cập, thì người sử
dụng được cấp phát quyền trên cơ sở dữ liệu hiện hành, với tham số @loginname
là tài khoản của người sử dụng đăng nhập vào SQL Server 2008.
Tham số @name_in_db cho phép ánh xạ hay còn gọi là bí danh tên của tài khoản
người dùng thành 1 tên khác khi truy cập vào cơ sở dữ liệu chỉ định, trong trường
hợp này SQL Server 2008 chỉ quản lý trên tên tài khoản đăng nhập.
Với cách này, khi sử dụng các ứng dụng khác truy cập vào cơ sở dữ liều SQL
Server 2008, dĩ nhiên ứng dụng sẽ kết nối cơ sở dữ liệu chỉ định, thì tài khoản
dùng để kết nối vẫn là tên Tài khoản đăng nhập vào SQL Server 2008.
Ví dụ sau đây trình bày cách cấp phát quyền truy cập của người sử dụng có tên Tài khoản
mya đổi bí danh thành myaa vào cơ sở dữ liệu account:

/* sử dụng Use */
USE Account
Go
Exec SP_grantdbaccess ‘ mya ’ , ‘myaa ‘
Kết quả trả về như sau:
Granted database access to ‘ mya ‘ .
Nếu cần thiết phải loại trừ người sử dụng ra khỏi cơ sở dữ liệu bằng lệnh, có cú pháp
như sau:
EXEC sp_revokedbaccess
[@name_in_db=] < ‘ login ‘ >
Giả sử rằng người sử dụng có tên tài khoản sử dụng trong cơ sở dữ liệu chỉ định myaa
không được phép truy cập vào cơ sở dữ liệu account, sử dụng thủ tục như ví dụ sau:
/* Sử dụng Use */
USE Account
Go
Exec sp_revokedbaccess ‘ myaa ‘
Kết quả trả về như sau:
User has been dropped from current database .
- Sử dụng trình Manager:
Nếu sử dụng trình Microsoft SQL server Manager Studio để cấp phát quyền truy cập của
tài khoản vào cơ sở dữ liệu chỉ định (tài khoản người dùng tồn tại trong cơ sở dữ liệu
SQL Server 2008), phải thực hiện các bước sau:
• Chọn tên cơ sở dữ liệu muốn cấp phát.
• Chọn Thư mục Security/Users.
• R-Click (nhấp phải) / New User.
• Chọn tên tài khoản trong danh sách tài khoản (login user) đăng nhập SQL Server
2000.
• Nếu cần thiết tạo tên bí danh (Alias)
Màn hình trình EM cho phép cấp phát quyền 1 tài khoản đăng nhập SQL Server 2000 vào
cơ sở dữ liệu chỉ định có dạng sau:

Sau khi cấp phát quyền cho 1 tài khoản đăng nhập, chọn OK để kết thúc.
Trong trường hợp cần loại bỏ người sử dụng mya ra khỏi cơ sở dữ liệu account, chỉ cần
chọn Thư mục Users/R-Click / Delete, cửa sổ xác nhận hiển thị, chỉ cần bấm OK, người
sử dụng sẽ loại bỏ.
4.2 Cấp phát quyền thực thi trên cơ sở dữ liệu:
- Sau khi cấp quyền cho phép người sử dụng truy cập vào cơ sở dữ liệu account, bước kế
tiếp bạn phải cho phép người sử dụng đó có quyền truy cập và xử lý trên các đối tượng,
cũng như xử lý dữ liệu trên các đối tượng đó.
- Ví dụ trong bộ phận kế toán, nhân viên kế toán hay nhân viên nhập dữ liệu thì không thể
xem xét các dữ liệu về quyết toán thuế, hay các báo cáo tài chính chẳng hạn. Tương tự
như vậy, nhân viên kinh doanh không thể nhập dữ liệu các nghiệp vụ kế toán, với các quy
định về giới hạn truy cập và xử lý dữ liệu trên các đối tượng, SQL Server 2008 cung cấp
các quyền trên các đối tuợng như sau :
• SELECT: Cho phép người dùng nhìn thấy dữ liệu, nếu người sử dụng có quyền này,
thì họ chỉ có thể thực thi những phát biểu Select để truy vấn dưc liệu trên các bảng
hay View được cho phép.
• INSERT: Cho phép người dùng thêm dữ liệu, nếu người dùng có quỳen này, họ có thể
thực hiện phát biểu Insert, đối với 1 hệ thống CSDL khác, muốn thực thi phát biểu
Insert, người dùng phải có quyền Select, trong trường hợp SQL Server 2008, quyền
Insert không liên quan đến quỳên truy vấn Select.
• UPDATE: Quyền này cho phép người dùng chỉnh sử dữ liệu trong CSDL, với quyền
Update người dùng có thể cập nhật dữ liệu bằng phát biểu Update.
• DELETE: Quyền này cho phép người dùng xóa dữ liệu trong CSDL, với quyền
Delete người dùng có thể xóa mẩu tin dữ liệu bằng phát biểu Delete.
• REFERENCE: Cho phép người dùng thêm dữ liệu vào bảng có khóa ngoại, nếu
người dùng có quyền này, họ có thể thực hiện phát biểu Insert, trong trường hợp SQL
Server 2008, quyền Reference không lien quan đến quyền truy vấn Select.
• EXECUTE: Quyền này cho phép người dùng thực thi thủ tục (SP) trong CSDL, với
quyền Execute người dùng có thể xóa mẩu tin dữ liệu bằng phát biểu Exec hay

Execute SP.
5. Quyền tạo đối tượng trong CSDL
Trong CSDL có các đối tượng và một số chức năng khác như sao lưu dữ liệu, mỗi một người
sử dụng trên CSDL cho phép hay không cho phép tạo các đối tượng như TABLE, VIEW,
STORED PROCEDURE, RULE… và tạo CSDL.
Các quyền tạo đối tượng như sau:
• CREAT DATABASE: Tạo CSDL
• CREAT TABLE: Tạo bảng
• CREAT VIEW: Tạo View
• CREAT PROCEDURE: Tạo procedure
• CREAT RULE: Tạo 1 số qui tắc chung
• CREAT DEFAULT: Tạo 1 số giá trị mặc nhiên
• BACKUP DATABASE: Thực hiện backup dữ liệu
• BACKUP LOG: Thực hiện log dữ liệu
Để phân các quyền trên cho phép người dùng trong SQL Server 2008, ta có 2 cách, sử
dụng lệnh và trình điều khiển EM.
5.1 Sử dụng lệnh:
Sử dụng thủ tục hệ thống GRANT có cú pháp sau:
GRANT <ALL | statement [,…n] > TO <login ID> [,…n]
Nếu một người sử dụng không có quyền tạo bảng, kết quả tả về là thông báo không cho
phép thực hiện phát biểu tạo bảng như ví dụ sau:
USE account
CREAT TABLE tblTest
(
a int,
b int
)
Kết quả trả về như sau:
Server: Msg 262, Level 14, State 1, Line 1
CREAT TABLE permission denied, database ‘account’, owner ‘dbo’.

Sau khi phân quyền tạo TABLE cho người dùng mya như ví dụ sau:
USE account
GRANT CREAT TABLE TO [mya]
GO
CREAT TABLE tblTest
(
a int,
b int
)
Kết quả trả về như sau:
The command(s) completed successfully.
The command(s) completed successfully.
Để loại các quyền trên của người sử dụng, ta cần phải sử dụng các thủ tục của hệ thống
DENY và REVOKE như phần trên.
5.2 Sử dụng trình điều khiển Manager:
- Nếu sử dụng Microsoft SQL server Manager Studio để phân quyền tạo các đối tượng của
CSDL hiện hành, tực hiện theo các bước tuần tự như sau:
• Chọn tên CSDL
• Nhấp phải, chọn Properties
• Chọn Tab Permission
• Cho phép (check on) hay không (check off) các quyền trên cho mỗi người sử dụng
• Cột bên trái User/Role là danh sách các người sử dụng
• Bên trên là các quyền Create Table, Create View…
6. Quản lí vai trò:
Vai trò là rất quan trọng bởi chúng là cách chính để cấp các quyền hệ thống cho người dùng.
Các quyền có thể được cấp cho người dùng qua vai trò hoặc trực tiếp, nhưng dùng vai trò có
thuận lợi là qua việc tạo những vai trò cho những dạng người dùng nhất định và cấp quyền hệ
thống cho vai trò đó, ta có thể giam lượng công việc và có 1 cách dễ dàng hơn để kiểm soát
các quyền. 1 vai trò có thể hiểu gần giống với nhóm(group) trong NT. Ta có thể gán các

quyền cho vai trò hoăc cho cá nhân 1 người dùng. Nếu ta gán quyền cho 1 vai trò, mọi người
dùng được đưa vào vai trò đó sẽ được hương quyền đó. Vì thế vai trò là 1 công cụ mạnh để ta
đưa những người dùng vào 1 đơn vị để cấp các quyền.
Rất dễ để quản lí các quyền trong 1 CSDL nếu ta định nghĩa nhóm các vai trò dựa trên nhiệm
vụ chức năng và gán cho mỗi vai trò các quyền tương ứng với nhiệm vụ. Sau đó ta chỉ cần
chuyển người dùng giữa các vai trò thay vì phải quản lí các quyền cho cá nhân mỗi người sử
dụng. Nếu chức năng của 1 nhiệm vụ thay đổi, sẽ dễ dàng hơn nếu chỉ thay đổi quyền 1 lần
cho vai trò và tự động áp dụng thay đổi đó với tất cả các thành viên của vai trò đó.
SQL Server có các vai trò trên server và các vai trò trên CSDL. Vai trò trên CSDL (database
role) dùng để cấp các mức khác nhau khi truy cập CSDL. Vai trò trên server (Server role)
dùng để ngăn cản hoặc cho phép con người thực hiện các họat động.
6.1 Vai trò trên CSDL:
- Có 1 vai trò trên CSDL rất đặc biệt : vai trò Public. Mỗi người dùng được định nghĩa
trong CSDL đều thuộc về vai trò Public. Nếu ta muốn mọi người trong 1 CSDL có 1
quyền nào đấy, ta phải gán quyền đó với vai trò public. Nếu 1 người dùng chưa được cấp
quyền trên 1 đối tượng, người đó sẽ dùng các quyền gán cho public. Vai trò Public hầu
như không có quyền nào ngoại trừ 1 quyền rất cơ bản là cho phép người dùng kết nối với
CSDL. Vai trò này có 1 số điều cơ bản:
• Nó ở trong mọi CSDL
• Nó không thể bị loại bỏ
• Mọi người dùng đều thuộc vai trò Public, kể cả tài khoản sa
• Vì mọi người dùng đều thuộc vai trò này(mặc định), ta không thể thêm hay bớt người
dùng cho vai trò này
- Một số vai trò và quyền của chúng:
• Db_owner: vai trò cho phép người dùng quyền được hoàn toàn kiếm soát CSDL. Tài
khoản sa là 1 thành viên của db_owner.
• Db_securityadmin: vai trò cho phép 1 người dùng quản lí tất cả các vai trò và thành
viên của chúng, gán quyền cho các vai trò.
• Db_accessadmin: cho phép người dùng thêm hoặc bớt người dùng trong CSDL.
• Db_ddladmin: cho phép xử lí tất cả các đối tượng trong CSDL ( tạo, sửa, xóa… đối

tượng).
• Db_backupoperator: cho phép thực hiện backup CSDL.
• Db_datawriter: cho phép sửa dữ liệu ở các bảng do người dùng tạo trong CSDL.
• Db_reader: cho phép xem dữ liệu ở các bảng do người dùng tạo trong CSDL.
• Db_denydatawriter: ngăn việc sửa dữ liệu.
• Db_denydatareader: ngăn việc xem dữ liệu.
- Một người dùng đơn lẻ có thể thuộc 1, nhiều, hoặc không thuộc vai trò nào cả. Nếu 1
người dùng thuộc nhiều hơn 1 vai trò, người dùng đó sẽ có tất cả các quyền của các vai
trò đó.
- Ta có thể tạo vai trò trên CSDL dùng Enterprise Manager hoặc sử dụng các thủ tục
thường trú hệ thống.
- Giống như các đối tượng CSDL, ta cần đặt tên cho các vai trò.
- SQL Server có 2 loại vai trò:
• Vai trò chuẩn (standard role): gần giống với các nhóm trong Windows NT. Vai trò
này có thể bao gồm người dùng, các quyền . Khi 1 người dùng kêt nối với tư cách là
thành viên của vai trò, họ hưởng các quyền của vai trò đó.
• Vai trò ứng dụng (application role): là những vai trò đặc biệt trong SQL Server
2000 bởi chúng không bao gồm bất kì thành viên nào. Trong 1 chừng mực nào đó có
thể nghĩ những vai trò đặc biệt này như là tài khoản người dùng. Các vai trò này hoạt
động như người dùng bởi chung cần mã để kích hoạt.
6.2 Vai trò trên server:
- Ta không chỉ gán vai trò cho người dùng trong CSDL, ta còn có thể gán vai trò trong
phạm vi toàn bộ SQL Server 2000. Điều này có nghĩa ta có thể ngăn cản hoặc cho phép
mọi người thực hiện các hoạt động. Các vai trò này được gọi là vai trò trên server (server
role).
- Các vai trò trên server trong SQL Server 2008:
• Sysadmin: vai trò này có khả năng kiểm soát toàn bộ SQL Server 2008. Tài khoản sa
thuộc vai trò này.
• Securityadmin: tạo và quản lí các dăng nhập cho server.
• Serveradmin: cấu hình các tham số và tắt server.

• Setupadmin: quản lí các thủ tục khỏi động và lien kết server.
• Processadmin: quản lí các chuyển tác đang chạy trên SQL Server 2008. Điều này có
nghĩa vai trò này có thể đưa ra câu lệnh KILL, kết thúc công việc 1 người dùng.
• Diskadmin: quản lí các file trên đĩa.
• Dbcreator: có thể tạo, xáo trộn, xóa CSDL.
6.3 Sử dụng các thủ tục khai báo 1 vai trò:
- Vai trò cũng cho phép người quản trị sử dụng 1 số thủ tục hệ thống nhằm cấp phát vai trò
cho người sử dụng trên CSDL SQL Server 2008.
- Thêm 1 vai trò vào 1 người sử dụng, ta có thể sử dụng cú pháp như sau:
Sp_addrole [@rolename=] <’role name’>
[,[@ownername=] <’owner’>
@rolename là tên của vai trò trên bảng trên, ví dụ như tạo ra có 1 role tên là
testrole, sau đó gán 1 số quyền truy cập vào bảng dữ liệu vào role đó như ví dụ
sau :
Use account
Go
EXEC sp_addrole ‘testrole’
Go
Grant select on tblsim to testrole
Go
Kết quả trả về như sau:
New role added.
Sau khi tạo 1 role mới có tên testrole và gán quyền truy vấn dữ liệu của bảng
tblsim vào role đó và sử dụng phát biểu select để truy vấn dữ liệu như ví dụ sau:
Use account
Go
Select
Autoid
Cast(entrydate as varchar(11)) as entrydate,
invoiceNo,cast(invoiceDate as varchar(11)) as invoiceDate

from tblsim
order by invoiceDate desc
Kết quả trả về như sau:
Server: Msg 229, Level 14, State 5, Line 1
SELECT permission denied on object ‘tblsim’, database ‘account’, owner ‘dbo’.
6.4 Thêm 1 thành viên vào vai trò:
- Lệnh thêm 1 người sử dụng vào 1 role có cú pháp như sau:
Sp_addrolemember [@rolename]<role name>
[@membername=]<login ID>
- Ví dụ:
Use account
Go
Sp_addrolemember testrole, ‘mya’
Go
Select
Autoid
Cast(entrydate as varchar(11)) as entrydate,
invoiceNo,cast(invoiceDate as varchar(11)) as invoiceDate
from tblsim
order by invoiceDate desc
go
Kết quả trả về như sau:
‘mya’ added to role ‘testrole’.
Autoid EntryDate InvoiceNo InvoiceDate

2 oct 17 2001 inv002 dec 7 2001
3 oct 17 2001 inv003 dec 7 2001
4 oct 18 2001 inv004 dec 7 2001
5 oct 17 2001 inv005 dec 7 2001
6 oct 17 2001 inv006 dec 7 2001

7 oct 18 2001 inv007 dec 7 2001
8 oct 18 2001 inv008 dec 7 2001
1 oct 17 2001 inv001 dec 6 2001
(9 row(s) affected)
Tương tự ta có thể sử dụng thủ tục sp_addsvrolemember để thêm thành viên vào 1 vai trò
trên server. Lệnh dưới đây thêm người dùng Home\Nam vào vai trò sysadmin:
EXEC sp_addsvrolemember ‘Home\Nam’,’sysadmin’
Để loại bỏ 1 người sử dụng ra khỏi role, sử dụng thủ tục sp_droprolemember có cú pháp
sau:
Sp_droprolemember [@rolename=] <’role name’>
[@membername=] <security account>
<security account> chính là tên tài khoản người sử dụng trong CSDL, sử dụng thủ
tục sp_droprolemember để loại bỏ người sử dụng mya ra khỏi CSDL account,
thực hiện phát biểu Select trên bảng tblsim, thông báo lỗi phát sinh trở lại như ví
dụ sau:
Use account
Go
Exec sp_droprolemember testrole, ‘mya’
Go
Select
Autoid
Cast(entrydate as varchar(11)) as entrydate,
invoiceNo,cast(invoiceDate as varchar(11)) as invoiceDate
from tblsim
order by invoiceDate desc
go
Kết quả trả về như sau:
‘mya’ dropped from role ‘testrole’.
Server: Msg 229, level 14, State 5, Line 1
SELECT permission denied on object ‘tblsim’, database ‘account’, owner

‘dbo’.
7. Đối tượng CSDL và quyền với đối tượng:
Một CSDL là 1 tập hợp của dữ liệu, bảng và các đối tượng khác. Đối tượng CSDL giúp cho
việc cấu trúc dữ liệu và định nghĩa dữ liệu được rõ ràng.
Quyền cho phép người dùng thực hiện các hành động trong CSDL. Có 2 loại quyền : đối
tượng và phát biểu. Quyền đối tượng kiểm soát việc ai có thể truy cập và xử lí dữ liệu và ai
có thể chạy các thủ tục thường trú. Quyền phát biểu kiểm soát người dùng nào có thể tạo và
xóa đối tượng trong 1 CSDL.
7.1 Đối tượng CSDL và chủ đối tượng:
- Các đối tượng CSDL:
• Bảng
• Cột
• Dòng
• Loại dữ liệu
• Ràng buộc
• Giá trị mặc định
• Quy tắc
• Chỉ số
• Views
• Thủ tục
• Bẫy lỗi
- Một người dùng tạo ra 1 đối tượng CSDL thì gọi là chủ đối tượng. 1 người dùng đơn lẻ
phải có quyền mới có thể tạo đối tượng CSDL.
7.2 Quyền với đối tượng CSDL:
- Quyền đối với đối tượng kiểm soát việc truy cập tới các đối tượng trong SQL Server. Ta
có thể thừa nhận hoặc loại bỏ quyền với bảng, cột, các thủ tục thông qua Enterprise
Manager hoặc qua các thủ tục hệ thống. 1 người dùng muốn thực hiện 1 hành động đối
với 1 đối tượng cần có quyền thích hợp.Bảng sau tổng kết các loại quyền với đối tượng.
Loại đối tượng Hành động có thể
Bảng ( table) Select,update,delete,insert,reference

Cột (column) Select,update
View Select,update,insert,delete
Thủ tục (stored procedure) Execute
7.3 Thừa nhận và loại bỏ quyền với 1 đối tượng:
- SQL Server sử dụng các lệnh GRANT, REVOKE, DENY để quản lí các quyền.
• Grant: cho phép người dùng làm việc với đối tượng.
• Revoke: ngăn người dùng làm việc với bảng.
• Deny: không cấp quyền cho người dùng.
- Sử dụng thủ tục hệ thống cấp quyền
Khi sử dụng thủ tục GRANT để cấp quyền truy cập và xử lí trên các đối tượng
của CSDL chỉ định theo cú pháp sau:
GRANT
ALL [PRIVILEGES] | <PERMISSION> [,…N]
ON
<table or view name>[(<column name>[,…n])]
| <stored or extension procedure name>
TO
<login or role name>[,…n]
[WITH GRANT OPTION]
[AS <role name>]
Từ khóa ALL cho phép cấp phát tất cả các quyền cho người sử dụng CSDL đó.
Chỉ rõ những bảng hay View nào cho phép người sử dụng truy cập và xử lí, hoặc
thủ tục hay thủ tục mở rộng.
Ví dụ: Cấp phát quyền bằng thủ tục GRANT
Use account
Go
/* Cấp quyền insert, update, delete cho người sử dụng mya trên bảng dữ
liệu tblsim */
Grant insert,update,delete
On tblsim

To mya
Go
Kết quả trả về như sau:
The command(s) completed successfully.
Sau khi thực hiện thủ tục cấp phát quyền sử dụng, sử dụng phát biểu Select để
truy vấn dữ liệu từ bảng tblsim, kết quả cho thấy với người sử dụng có tên mya
không thể truy vấn dữ liệu từ bảng tblsim như ví dụ sau.
Ví dụ:
Use account
Go
Select
Autoid
Cast(entrydate as varchar(11)) as entrydate,
invoiceNo,cast(invoiceDate as varchar(11)) as invoiceDate
from tblsim
order by invoiceDate desc
Kết quả trả về như sau:
Server: Msg 229, Level 14, State 5, Line 1
SELECT permission denied on object ‘tblsim’, database ‘account’, owner
‘dbo’
Thực hiệnthủ tục cấp phát quyền sử dụng Select trên bảng tblsim cho người sử
dụng tên mya.
Ví dụ:
Use account
Go
Grant select
On tblsim
To mya
Go
Kết quả trả về như sau:

The command(s) completed successfully.
Sau khi cấp phát quyền Select, sử dụng phát biểu Select để truy vấn dữ liệu từ
bảng tblsim.
Ví dụ:
Use account
Go
Select
Autoid
Cast(entrydate as varchar(11)) as entrydate,
invoiceNo,cast(invoiceDate as varchar(11)) as invoiceDate
from tblsim
order by invoiceDate desc
Kết quả trả về như sau:
Autoid EntryDate InvoiceNo InvoiceDate

11 dec 5 2001 inv0011 dec 10 2001
10 oct 18 2001 inv00010 dec 9 2001
9 oct 17 2001 inv009 dec 8 2001
2 oct 17 2001 inv002 dec 7 2001
3 oct 17 2001 inv003 dec 7 2001
4 oct 18 2001 inv004 dec 7 2001
5 oct 17 2001 inv005 dec 7 2001
6 oct 17 2001 inv006 dec 7 2001
7 oct 18 2001 inv007 dec 7 2001
8 oct 18 2001 inv008 dec 7 2001
1 oct 17 2001 inv001 dec 6 2001
(11 row(s) affected)
- Từ chối quyền truy vấn và xử lí dữ liệu
Nếu cần thiết không cho phép người sử dụng truy vấn và xử lí dữ liệu trên đối tượng, sử
dụng thủ tục Deny có cú pháp như sau:

DENY
ALL [PRIVILEGES] | <PERMISSION> [,…N]
ON
<table or view name. [ ( <column name> [,…n] ) ]
| <stored or extension procedure name>
TO
<login or role name> [,…n]
[CASCADE]
Từ khoá ALL cho phép cấp phát tất cả các quyền cho người sử dụng cơ sở dữ liệu
đó (EXECUTE không có hiệu lực trên bảng).
Chỉ rõ những bảng dữ liệu hay View nào cho phép người sử dụng truy cập và xử
lý, hoặc thủ tục hay thủ tục mở rộng. Từ khóa [CASCADE] tương đương với
[WITH GRANT OPTION].
Ví dụ không cho phép người sử dụng mya sử dụng phát biểu SELECT để truy vấn từ
bảng tblSIM như sau:
/* Sử dụng USE */
USE ACCOUNT
GO
GRANT INSERT, UPDATE, DELETE
ON tblSIM
TO myaa
GO
/* Không cho phép */
DENY SELECT
ON tblsim
To myaa
Go
/* Sử dụng phát biểu Select */
Select
Autoid

Cast(entrydate as varchar(11)) as entrydate,
invoiceNo,cast(invoiceDate as varchar(11)) as invoiceDate
from tblsim
order by invoiceDate desc
Kết quả trả về như sau:
Server: Msg 229, Level 14, State 5, Line 1
SELECT permission denied on object ‘tblsim’, database ‘account’, owner
‘dbo’
Giả sử rằng người sử dụng có tên tài khoản sử dụng trong CSDL chỉ định myaa không
được phép truy cập bằng phát biểu select,insert,update,delete trên các đối tượng của
CSDL account, ta sử dụng thủ tục Revoke có cú pháp như sau:
REVOKE [GRANT OPTION FOR]
{ALL [PRIVILEGES] | permission[,…n]} {
[(column[,…n])] ON {table | view} | ON {table | view} [(column[,…n])]
| {stored_procedure | extended_procedure} }{TO | FROM <login ID or
Rolename>[,…n] [CASCADE] [AS<role name>]
Ví dụ:
Use account
Go
Revoke select on tblsim to myaa
Kết quả trả về như sau:
The command(s) completed successfully.
- Sử dụng Manager cấp quyền truy vấn và xử lí dữ liệu
Rất dễ dàng để sử dụng Microsoft SQL server Manager Studio thực hiện công việc này,
bắt đầu từ tên CSDL, chọn tên tài khoản người sử dụng (user), sau đó R-Click /
Properties.
Để thực hiện quá trình cấp quyền truy vấn và xử lí dữ liệu, ta có thể thực hiện theo 2
cách:
• Phân quyền cho 1 người sử dụng những đối tượng trong CSDL. Để thực hiện theo
cách này, ta cần chọn một đối tượng, sau đó phân quyền tất cả đối tượng.

• Phân nhiều người sử dụng vào 1 đối tượng chỉ định của CSDL. Để thực hiện theo
cách này, ta cần chọn một đối tượng, sau đó phân quyền tất cả các tên người sử dụng.
Trường hợp thứ nhất cần theo các bước sau:
8. SQL Power Injector 1.21:
Sử dụng phần mềm này để scan lỗi sql injection. Từ đó, giúp ta tìm được các lỗ hổng liên
quan đến cơ sở dữ liệu và có thể dựa vào đó mà khắc phục.
Việc tìm ra lỗi SQL injection là khá quan trọng, hacker có thể dựa vào đó khái thác các thông
tin có trong cơ sở dữ liệu, đánh cắp, thay đổi thông tin trong cơ sở dữ liệu.

×