Session 6 User and Security Management
Mục tiêu bài học:
Kết thúc chương này bạn có thể
Hiểu về bảo mật trong SQL Server security
Miêu tả các chế độ đăng nhập khác nhau của SQL Server
Sử dụng T-SQL để quản lý các đăng nhập
Giải thích về khái niệm của CSDL người dùng
Sử dụng store procedure hệ thống để quản lý CSDL người dùng
Giải thích khái niệm về các vai trò của CSDL và các vai trò của máy chủ
Mô tả các quyền hạn khác nhau gắn với từng vai trò
Danh sách các đối tượng CSDL và các quyền hạn gắn với chúng
Tìm hiểu cách làm thế nào để gán và thu hồi các quyền với các đối tượng CSDL
Giới thiệu
Trong phần trước chúng ta đã học về ngôn ngữ T-SQL. Chúng ta cũng đã thảo luận về luồng các
câu lệnh điều khiển logic khác nhau . Chúng ta cũng đã học danh sách các biến và các hàm
Một CSDL trong một tổ chức hoặc doanh nghiệp có thể chứa dữ liệu quan trọng và bí mật. Trong
ngữ cảnh này CSDL bảo mật đã trở thành một vấn đề quan trọng. Nó cũng trở nên cần thiết và
quan trọng để bảo trì nguyên tắc toàn vẹn dữ liệu và cách sử dụng các vai trò và quyền hạn trong
các trạng thái phù hợp. Một DBMS hoặc RDBMS phải hỗ trợ các kỹ thuật và là phương tiện để
thực thi thước đo về độ bảo mật đó và nó sẽ giúp để bảo vệ dữ liệu.
Trong chương này, chúng ta 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
chi tiết thế nào là cơ chế bảo mật được thực thi trong SQL Server. Chúng ta sẽ thảo luận về cách
quản lý đăng nhập thông qua quyền đăng nhập. Chúng ta cũng sẽ học về các vai trò và cách làm
thế nào để chúng ta có thể thực thi bảo mật thông qua chúgn. Cuối chương chúng ta sẽ tập trung
vào các quyền của đối tượng.
.
6.1 Giới thiệu về cơ chế bảo mật trong SQL Server
Bảo mật trong SQL Server có thể sử dụng mô hình 3 tầng như hình dưới đây:
Hình 6.1: Mô hình bảo mật của SQL Server
78 Database Design and Implementation with SQL Server
1. Sự thẩm định quyền
2. Khả năng để người sử dụng sử dụng một
hoặc nhiều CSDL.
3. Các quyền cụ thể sử dụng
bảo vệ CSDL
Lớp ngoài cùng là nhu cầu cho mức bảo mật chính của NT nó không có gì nhưng một tài khoản
người dùng NT hoặc một nhóm bảo mật dành quyền truy cập tới SQL Server thông qua đăng
nhập. Lớp tiếp theo có thể sử dụng một hoặc nhiều CSDL. Lớp trong cùng có các quyền cụ thể để
thực thi các câu lệnh SQL dựa trên các đối tượng CSDL bảo vệ.
The outer layer is the requirement for an NT security principal which is nothing but an NT user
account or security group to gain access to SQL Server through a server login. The next layer is
the requirement to be able to use one or more databases. The innermost layer is the requirement
to have specific permissions to execute SQL statements against protected database objects.
Khả năng của tài khoản người dùng để dành được quyền truy cập thông qua 3 lớp được quyết
định bởi hai yếu tố tối thiểu sau:
Các quyền truy cập được gán cho các nhóm bảo mật Windows để mỗi tài khoản trong nhóm
có các quyền tương ứng.
Thay đổi quản trị CSDL phải có các quyền xây dựng tài khoản khách
Changes the database administrator has made to the rights of the built-in guest account.
Lớp trong cùng của mô hình bảo mật SQL Server bao gồm các người dùng CSDL có khả năng
truy cập đối tượng CSDL, bao gồm các bảng, các khung nhìn, và các thủ tục chứa.
Để đơn giản hoá các quyền của người dùng, SQL Server 2000 cung cấp các vai trò, các vai trò
này giống như các nhóm bảo mật của Windows. Chúng ta có thể nhóm các người sử dụng riêng
biệt liên quan đến nhau một cách logic vào một vai trò, và sau đó gán một tập hợp các quyền
thích hợp cho vai trò đó. Có hai kiểu vai trò trong SQL Server. Server và database. Chúng ta sẽ
thảo luận chi tiết hơn trong phần sau.
Bây giờ chúng ta sẽ tìm hiểu cách làm thế nào để quản lý bảo mật người dùng trong SQL Server
thông qua trình quản lý đăng nhập.
6.2 Trình quản lý đăng nhập
SQL Server kiểm tra người sử dụng ở hai cấp:
Quyền đăng nhập
Các quyền hiệu lực trên CSDL người dùng.
SQL Server phải xác nhận người dùng trước khi người dùng có thể truy cập dữ liệu trong CSDL.
Trong SQL Server mỗi người sử dụng đưa ra một tài khoản riêng biệt là tài khoản đăng nhập.
Mỗi người sử dụng tương tác với SQL Server bằng cách sử dụng tài khoản này. Người sử dụng
sử dụng tài khoản đăng nhập được xác định và gán các quyền tương ứng để kết nối tới SQL
Server. Nếu sự xác nhận này không thành công, người sử dụng không thể kết nối tới SQL Server.
6.2.1 Xác nhận thông tin đăng nhập
Một người sử dụng phải có một tài khoản để kết nối tới SQL Server. SQL Server có bao cơ
chế xác nhận thông tin đăng nhập – SQL Server authentication, Windows NT authentication
và chế độ xác nhận hỗn hợp. Mỗi cơ chế xác nhận thông tin đăng nhập này đều có kiểu tài
khoản đăng nhập khác nhau.
79 Database Design and Implementation with SQL Server
Kiểm soát quyền hạn của SQL Server
Khi sử dụng cơ chế kiểm soát quyền hạn của SQL Server, quản trị hệ thống SQL Server xác
nhận một tài khoản đăng nhập SQL Server và mật khẩu. Người sử dụng phải cung cấp cả tên
đăng nhập và mật khẩu để kết nối đến SQL Server.
Kiểm soát quyền hạn của Windows NT
Khi một người sử dụng kết nối tới SQL Server bằng cơ chế kiểm soát quyền hạn của
Windows NT, SQL Server kiểm tra cùng với Windows NT để xác nhận tài khoản đăng nhập
và mật khẩu là hợp lệ. Nếu tên tài khoản và mật khẩu nhập vào hợp lệ thì người sử dụng có
thể truy cập vào SQL Server và kết nối tới máy chủ.
Kiểm soát quyền hạn của chế độ hỗn hợp
Trong chế độ hỗn hợp, một người sử dụng kết nối tới SQL Server sử dụng cả hai cơ chế kiểm
soát quyền hạn của Windows hoặc cơ chế kiểm soát quyền hạn của SQL Server. Những
người sử dụng kết nối thông qua tài khoản người dùng Windows có thể tạo các kết nối tin cậy
trong cả chế độ hỗn hợp hay chế độ kiểm soát quyền hạn của Windows.
Người dùng phải được sự chấp nhận của quản trị hệ thống để truy cập CSDL trên máy chủ. Điều
này được thực hiện bằng cách gán các quyền hạn cho tài khoản người dùng và các vai trò. Các
quyền hạn này kiểm soát các hoạt động mà người dùng có thể thực hiện trong CSDL SQL Server.
6.2.2 Kiểm soát hiệu lực của quyền hạn
Với mỗi CSDL, các quyền hạn được gán cho các tài khoản người dùng và các vai trò được tạo lập
để thực hiện (hoặc hạn chế) các hành động tác động lên CSDL. SQL server chấp nhận các lệnh
sau khi người dùng dành được quyền truy cập CSDL thành công.
SQL Server thực hiện các bước sau đây trong khi thực hiện kiểm tra hiệu lực của các quyền hạn:
1. Khi người sử dụng thực hiện một hành động, ví dụ thực hiện một câu lệnh T-SQL hoặc
chọn một tuỳ chọn trong thực đơn của Enterprise Manager, các lệnh T-SQL được gửi tới
SQL Server.
2. Khi SQL Server nhận được câu lệnh T-SQL, nó tiến hành kiểm tra các quyền hạn của
người dùng để thực hiện câu lệnh đó
3. SQL Server thực hiện một trong hai hành động sau:
Nếu người dùng không có quyền thích hợp, SQL Server trả về lỗi.
Nếu người dùng có các quyền thích hợp, SQL Server sẽ thực hiện câu lệnh T-SQL
đó.
Sử dụng Enterprise Manager và tuỳ chọn Properties của máy chủ, chúng ta có thể thiết lập các
chế độ kiểm soát quyền hạn giống như chế độ kiểm soát quyền hạn của Windows và chế độ kiểm
soát quyền hạn hỗn hợp.
6.2.3 Tạo lập đăng nhập
Sử dụng Enterprise Manager chúng ta có thể quản lý các đăng nhập bằng cách sử dụng chức
năng Create Login Wizard của SQL Server Enterprise Manager. Chức năng wizard này đưa ra
User and Security Management 80
các bước đầy đủ hướng dẫn để tạo lập các đăng nhập theo một phương thức cách dễ dàng và hiệu
quả.
Hình 6.2: Create Login Wizard
Chúng ta có thể sử dụng stored procedures để tạo lập và gỡ bỏ các đăng nhập.
Để tạo lập một đăng nhập, chúng ta có thể sử dụng các lệnh sau đây
EXEC sp_addlogin 'Arwen', 'princess'
Ở đây tên đăng nhập là “Arwen” và mật khẩu là “princess”.
Để gỡ bỏ một đăng nhập khi nó không cần thiết nữa, chúng ta có thể sử dụng câu lệnh sau:
EXEC sp_droplogin 'Arwen'
6.3 Trình quản lý người dùng
SQL Server cho phép hai kiểu tài khoản người dùng:
Người dùng hệ thống
Nguời dùng CSDL
6.3.1 SQL Server users
Một định danh người dùng (ID) có thể sử dụng để nhận dạng một người sử dụng trong một
CSDL. Tất cả quyền hạn và quyền sở hữu của các đối tượng trong CSDL được kiểm soát bởi tài
khoản người dùng này. Các tài khoản người dùng CSDL được xác định bởi CSDL đó; tài khoản
81 Database Design and Implementation with SQL Server
người dùng abc trong CSDL books khác với tài khoản người dùng abc trong CSDL
inventory, thậm trí trong cả trường hợp tài khoản người dùng có cùng ID. Các ID của người
dùng được xác định bởi các thành viên của db_owner có các vai trò CSDL nhất định.
6.3.2 Quan hệ giữa CSDL người dùng và tên đăng nhập
Một người sử dụng trong CSDL được xác định bởi ID của họ, không phải ID đăng nhập của họ.
Ví dụ, sa là tài khoản đăng nhập được ánh xạ tới tài khoản dành riêng dbo (database owner) trong
mọi CSDL. Tất cả các câu lệnh T-SQL bảo mật-liên quan sử dụng ID người dùng như là tham số
bảo mật.
Một ID đăng nhập bản thân nó không đưa ra được các quyền của người dùng để truy cập các đối
tượng trong bất kỳ CSDL nào. Một ID đăng nhập phải được kết hợp với một ID người dùng
trong mỗi CSDL truớc khi có bất kỳ ai đó kết nối bằng ID đăng nhập này để có thể truy cập được
các đối tượng trong CSDL. Nếu một ID đăng nhập không được gắn kết với bất kỳ một ID người
dùng nào trong CSDL, nó sẽ được kết hợp với ID người dùng khách (guest). Nếu một CSDL
không có tài khoản người dùng guest, một đăng nhập không thể truy cập CSDL trừ khi nó được
kết hợp với một tài khoản người dùng hợp lệ.
Tài khoản khách (guest) là một tài khoản người dùng đặc biệt trong CSDL SQL. Nếu một người
dùng gõ vào câu lệnh USE database để truy cập CSDL trong trường hợp chúng không được kết
hợp với một tài khoản người dùng, thay vào đó chúng được kết hợp với tài khoản khách.
6.3.3 Quản lý tên người dùng và tên đăng nhập
Ví dụ dưới đây mô tả quá trình của một tài khoản Windows 2000 để truy cập CSDL và kết hợp
đăng nhập với một người dùng trong CSDL:
Ví dụ 1:
1. USE master
2. GO
3. sp_grantlogin 'OnlineDOMAIN\Arwen'
4. GO
5. sp_defaultdb @loginame = 'OnlineDOMAIN\Arwen', defdb = 'books'
6. GO
7. USE books
8. GO
9. sp_grantdbaccess 'OnlineDOMAIN\Arwen', 'Arwen'
10. GO
11. sp_grantdbaccess 'OnlineDOMAIN\Arwen', 'Arwen'
12. GO
D Danh sách các stored procedures phổ biến trong ngữ cảnh này được tóm tắt dưới đây:
1. Thủ tục sp_grantlogin cho phép tài khoản người dùng hoặc tài khoản nhóm người dùng
Windows NT/2000 kết nối tới SQL Server sử dụng cơ chế kiểm soát quyền hạn trong
Windows.
User and Security Management 82
2. Thủ tục sp_defaultdb thay đổi CSDL mặc định để đăng nhập.
3. Thủ tục sp_grantdbaccess được sử dụng để thêm một tài khoản bảo mật CSDL và gán
quyền truy cập cho tài khoản này.
4. Thủ tục sp_revokedbaccess được sử dụng để xoá một tài khonả bảo mật từ CSDL.
83 Database Design and Implementation with SQL Server