Bảo mật SQL
- Windows NT Authentication : Khi 1 người dùng kết nối với SQL Server sử dụng
Windows NT authentication, SQL Server kiểm lại với Windows NT 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 cung
cấ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
Trần Kỳ Nam Page 5 11/22/2012
Bảo mật SQL
@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 â6tj 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 EM
Để tạo ra 1 tài khoản đăng nhập (Login User), bắt đầu từ màn hình Enterprise Manager
(EM), sau đó chọn ngăn Security/Login, right click chọn New Login hay chọn menu action
New Login như trong hình sau:
Trần Kỳ Nam Page 6 11/22/2012
Bảo mật SQL
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 2000:
- Tương tác với hệ điều hành Windows NT/2000
- Sử dụng riêng cho SQL Server 2000
Trong hình sau, dễ dàng nhận thấ khi chọn Windows NT authentication thì tham số tên
miền của chúng yêu cầu, rõ ràng ta phải cung cấp tên miền hay địa chỉ TCP/IP của máy
chủ, mặt khác tài khoản người dùng này phải tồn tại và có hiệu lực tên mạng.
Trần Kỳ Nam Page 7 11/22/2012
Bảo mật SQL
Sau khi tạo, SQL Server 2000 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 NT/2000 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 2000, chọn
SQL Server authentication như hình sau:
Trần Kỳ Nam Page 8 11/22/2012
Bảo mật SQL
Ghi chú:
-Trong trường hợp sử dụng Tài khoản người dùng chung NT 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.1Người dùng của SQL Server:
1 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 books
khác với tài khoản abc trong CSDL inventory,mặc dù chúng giống nhau.
Trần Kỳ Nam Page 9 11/22/2012
Bảo mật SQL
3.2.Mối quan hệ giữa người dùng CSDL và tên đăng
nhập:
1 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).
1 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:
1 số thủ tục thường trú hay được sử dụng:
1. sp_grantlogin cho phép tài khaỏn người dùng của Windows NT/2000 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 EM, 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.
Trần Kỳ Nam Page 10 11/22/2012
Bảo mật SQL
Sử dụng thủ tục
Để cấp phát quyền người sử dụng vào truy cập cơ sở dữ liệu bằng thủ tục, phải 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 2000.
Tham số @name_in_db cho phép ánh xạ hay còn gọi là bí dang 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 2000 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 2000,
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 2000.
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, sử dụng thủ tục 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 .
Trần Kỳ Nam Page 11 11/22/2012
Bảo mật SQL
Sử dụng trinh EM
Nếu sử dụng trình EM để 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 2000), 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 ngăn User
-R-Click (nhấp phải) / New Database User hay chọn menu Action / New Database
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:
Trần Kỳ Nam Page 12 11/22/2012
Bảo mật SQL
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 ngăn Users/R-Click / Delete hay chọn menu Action / 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 2000 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.
Trần Kỳ Nam Page 13 11/22/2012
Bảo mật SQL
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 2000, 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
2000, 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 thủ tục
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 2000, ta có 2 cách, sử
dụng thủ tục hệ thống và trình điều khiển EM.
5.1.Sử dụng thủ tục
Sử dụng thủ tục hệ thống GRANT có cú pháp sau:
GRANT <ALL | statement [,…n] > TO <login ID> [,…n]
Trần Kỳ Nam Page 14 11/22/2012
Không có nhận xét nào:
Đăng nhận xét