Session 06

  • Uploaded by: Nguyễn Anh Dũng
  • 0
  • 0
  • October 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Session 06 as PDF for free.

More details

  • Words: 5,366
  • Pages: 17
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: 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

78

Database Design and Implementation with SQL Server

Hình 6.1: Mô hình bảo mật của SQL Server 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

79

Database Design and Implementation with SQL Server

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.  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

User and Security Management

80

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 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

81

Database Design and Implementation with SQL Server

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 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:

User and Security Management

82

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.

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

6.4

Vai trò quản lý Role Management

Các vai trò rất quan trọng bởi vì chúng là cách chính để phân chia các đặc quyền hệ thống tới người dùng. Các đặc quyền có thể phân chia tới người dùng thông qua một vai trò hoặc trực tiếp, nhưng sự phân chia trực tiếp này có thể tốn khá nhiều thời gian và dài dòng đối với DBA. Bằng cách tạo lập một vai trò cho một vài kiểu người dùng và phân chia hệ thống cho vai trò đó, chúng ta có thể cắt bớt được số lượng công việc phải làm và dễ dàng theo dõi các quyền hạn. Một vai trò giống như khái niệm một nhóm trong NT. Chúng ta có thể gán các quyền hạn tới cả vai trò hay từng người dùng riêng biệt. Nếu chúng ta gán các quyền hạn tới vai trò, sau đó mọi người dùng được chúng ta thêm vai trò này sẽ kế thừa các quyền hạn của vai trò đó. Do vậy các vai trò là công cụ mạnh mẽ cho pép chúng ta nhóm các người dùng vào thành từng nhóm riêng và có thể thiết lập các quyền hạn trên các nhóm đó. Đó là cách dễ dàng để quản lý các quyền hạn trong CSDL nếu chúng ta định nghĩa một tập hợp các vai trò dựa trên các chức năng công việc và gán cho mỗi vai trò các quyền hạn cụ thể dựa trên các công việc đó. Chúng ta có thể dịch chuyển các người dùng giữa các vai trò dễ dàng hơn việc quản lý các quyền hạn cho mỗi người dùng riêng biệt. Nếu chức năng của công việc thay đổi, thì cũng dễ dàng thay đổi các quyền hạn đối với vai trò đó và sự thay đổi này tự động áp dụng cho tất cả các thành viên của vai trò đó. SQL Server có các vai trò CSDL (database roles) và các vai trò máy chủ (server roles). Database roles được dùng trong việc cung cấp các cấp độ truy cập khác nhau tới CSDL. Server roles được dùng để hạn chế hoặc cho phép người dùng thực hiệnh các thao tác khác nhau. 6.4.1

Các vai trò CSDL

Có một vai trò CSDL rất đặc biệt: vai trò Public. Mọi người dùng được định nghĩa trong CSDL đều thuộc vai trò Public. Nếu chúng ta muốn mọi người trong CSDL có quyền hạn cụ thể nào đó, chúng ta phải gán quyền hạn đó cho vai trò public. Nếu một người dùng không được gán các quyền cụ thể trên một đối tượng, họ sử dụgn các quyền đã gán cho public. Vai trò Public này hầu như không có quyền hạn ngoại trừ vài quyền rất cơ bản cho phép người dùng tạo kết nối tới CSDL. Vai trò này có một số quy tắc cơ bản kèm theo nó.  Nó có trong mọi CSDL.  Nó không thể bị xoá.

 Mọi người dùng đều thuộc vai trò Public, bao gồm cả tài khoản sa.  Bởi vì mặc định mọi người dùng đều thuộc vai trò này, chúng ta không thể thêm hoặc gỡ bỏ các người dùng ra khỏi vai trò này. Chúng ta hãy xem các vai trò khác nhau và các quyền hạn đi kèm với chúng db_owner: Đây là vai trò cấp cao nhất mà người dùng có thể có. Vai trò này cho phép người dùng có toàn quyền kiểm soát trên CSDL. Người dùng sa là thành viên của vai trò db_owner. db_securityadmin: Vai trò này cho phép một người dùng quản lý được tất cả các vai trò và các thành viên của chúng. Vai trò này cũng cho phép gán các quyền hạn cho các vai trò. Nếu chúng ta

User and Security Management

84

có một người dùng mà chúng ta có thể tin cậy để quản lý bảo mật cho CSDL của chúng ta nhưng không cần thiết phải có đầy đủ quyền kiểm soát trên CSDL, chúng ta có thể gán vai trò này cho người dùng đó. db_accessadmin: Vai trò này dùng cung cấp các quyền người dùng để thêm hoặc gỡ bỏ các người dùng trong CSDL. db_ddladmin: Vai trò này cho phép một người dùng thao tác với tất cả các đối tượng trong CSDL. Ví dụ, một người dùng có thể tạo lập, sửa chữa, hoặc xoá các đối tượng CSDL. Vai trò này có quyền để chạy tất cả các SQL Server 2000 DDLs. db_backupoperator: Vai trò này cho phép người dùng thực hiện thao tác sao chép dự phòng CSDL. db_datawriter: Vai trò này cho phép người dùng sửa chữa dữ liệu trong tất cả các bảng người dùng định nghĩa trong CSDL. db_datareader: Vai trò này cho phép một người dùng hiển thị dữ liệu từ các bảng người dùng định nghĩa trong CSDL. db_denydatawriter: Vai trò này ngăn chặn người dùng sửa chữa dữ liệu trong bảng người dùng định nghĩa trogn CSDL. db_denydatareader: Vai trò này ngăn chặn người dùng hiển thị dữ liệu trong bảng người dùng định nghĩa trong CSDL. Chú ý: Một người dùng có thể không có, có một hoặc nhiều các vai trò. Nếu một người dùng thuộc nhiều hơn một vai trò, người dùng sẽ có tập hợp tất cả các quyền của các vai trò đó theo thứ tự. Chúng ta có thể tạo lập một vai trò CSDL bằng cách sử dụng Enterprise Manager hoặc sử dụng các thủ tục hệ thống.

85

Database Design and Implementation with SQL Server

Hình 6.3: Creating New Roles Giống như hầu hết tất cả các đối tượng CSDL, chúng ta cần đưa ra tên của vai trò mà SQL Server 2000 có thể sử dụng để nhận dạng chúng. SQL Server đưa ra 2 kiểu vai trò:

 Vai trò chuẩn: Kiểu vai trò này giống như các nhóm trong Windows NT. Vai trò này có thể chứa các người dùng và quyền hạn có thể áp dụng. Khi một người dùng kết nối với tư cách là thành viên của vai trò, chúng kế thừa các quyền hạn của vai trò đó.

 Vai trò ứng dụng: Đây là các vai trò đặc biệt trong SQL Server 2000 bởi vì chúng không chứa bất kỳ thành viên (hoặc người sử dụng) nào. Trong vài trường hợp chúng ta có thể nghĩ các vai trò đặc biệt này giống như các tài khoản người dùng. Các vai trò ứng dụng giống như người dùng bởi vì chúng yêu cầu phải có mật khẩu 6.4.2

Vai trò máy phục vụ

Chúng ta không chỉ gán các vai trò cho người dùng trong CSDL mà chúng ta còn có thể gán các vai trò người dùng trong SQL Server 2000. Điều này có nghĩa là chúng ta có thể hạn chế hoặc cho phép người dùng thực hiện các thao tác khác nhau. Các vai trò này gọi là các vai trò máy phục vụ.

User and Security Management

86

Dưới đây là các vai trò máy phục vụ sẵn có trong SQL Server 2000: sysadmin: Đối với trường hợp của SQL Server 2000 vai trò này có đầy đủ các quyền kiểm soát trên toàn bộ ứng dụng. Tài khoản sa thuộc vai trò này. securityadmin: Vai trò này có thể tạo lập và quản lý các đăng nhập cho máy chủ. serveradmin: Đối với trường hợp của SQL Server 2000, vai trò này có thể thiết lập các tuỳ chọn cấu hình. Vai trò này cũng có khả năng tắt máy chủ. setupadmin: Vai trò này có khả năng khởi động các thủ tục và các liên kết máy chủ processadmin: Vai trò này có khả năng quản lý quá trình mà SQL Server 2000 đang thực hiện. Điều này có nghĩa là vai trò này có thể huỷ bỏ lệnh, kết thúc phiên làm việc của người dùng. Nếu người dùng có bất kỳ các giao tác nào đang mở, các giao tác này được phục hồi lại trước khi phiên làm việc kết thúc. diskadmin: Vai trò này có thể quản lý các tệp tin trên đĩa, ví dụ các nhóm tệp tin. dbcreator: Vai trò này có thể tạo lập, thay đổi, và huỷ bỏ CSDL. 6.4.3 Thêm một thành viên tới một vai trò Các vai trò có thể thêm bằng cách sử dụng Enterprise Manager hoặc thủ tục chứa hệ thống sp_addrole. Chúng ta có thể thêm các thành viên vào vai trò bằng cách sử dụng thủ tục sp_addrolemember. Ví dụ dưới đây hiển thị cách làm thế nào để tạo lập các vai trò và thêm các thành viên vào các vai trò này bằng cách sử dụng thủ tục. Ví dụ 2: 1. sp_addrole 'Teacher' 2. GO 3. sp_addrole 'Student' 4. GO 5. sp_addrole 'StudentTeacher' 6. GO 7. sp_addrolemember 'Teacher', 'NETDOMAIN\Peter' 8. GO 9. sp_addrolemember 'Teacher', 'NETDOMAIN\Cathy' 10.GO 11. sp_addrolemember 'StudentTeacher', 'NETDOMAIN\Diane' 12.GO 13.sp_addrolemember 'Student', 'NETDOMAIN\Mel' 14.GO 15.sp_addrolemember 'Student', 'NETDOMAIN\Jim' 16.GO 17.sp_addrolemember 'Student', 'NETDOMAIN\Lara' 18.GO 19.GRANT SELECT ON StudentGradeView TO Student 20.GO 21.GRANT SELECT, UPDATE ON TeacherGradeView TO Teacher

87

Database Design and Implementation with SQL Server

22.GO Đoạn mã này đưa ra quyền cho giáo sư Peter và Cathy để cập nhật vào các loại sinh viên, trong khi sinh viên Mel , Jim và Lara chỉ có thể lựa chọn các loại đó. Tuy nhiên, người dùng Diane được thêm cả hai vai trò bởi vì cô ta đang dạy một lớp trong khi đang học. Khung nhìn TeacherGradeView hạn chế các giảng viên trên các bản ghi thông tin sinh viên của những lớp họ dạy, trong khi StudentGradeView hạn chế các sinh viên chỉ có thể lựa chọn các thông tin xếp loại của họ. Đơn giản chúng ta có thể sử dụng thủ tục sp_addsrvrolemember để thêm các thành viên vào vai trò máy chủ. Câu lệnh dưới đây thêm người dùng Corporate\Helén vào vai trò máy chủ sysadmin. EXEC sp_addsrvrolemember 'Corporate\HelenS', 'sysadmin' 6.5 Đối tượng CSDL và đối tượng quyền hạn Một CSDL là một tập hợp dữ liệu, các bảng và các đối tượng khác. Các đối tượng CSDL giúp cấu trúc lại dữ liệu người dùng và định nghĩa tính toàn vẹn dữ liệu. Quyền hạn cho phép người dùng thực hiện các thao tác trong CSDL. Có hai kiểu quyền hạn: Đối tượng và câu lệnh. Đối tượng quyền hạn kiểm soát người dùng truy cập và thao tác dữ liệu trong bảng và khung nhìn và người dùng có thể chạy thủ tục này. Câu lệnh cho phép kiểm soát các công việc như người dùng có thể huỷ và tạo lập các đối tượng trong CSDL. 6.5.1 Các đối tượng CSDL và đối tượng sở hữu Bảng 6.1 liệt kê các đối tượng CSDL SQL khác nhau Đối tượng CSDL 1. Bảng 2. Cột 3. Hàng 4. Kiểu dữ liệu 5. Các ràng buộc 6. Mặc định 7. Quy tắc 8. Chỉ số 9. Khung nhìn 10. Các thủ tuc 11. Trigger Bảng 6.1: Các đối tượng CSDL Một người dùng tạo lập một đối tượng CSDL được gọi là một đối tượng sở hữu. Người dùng cụ thể đó phải co quyền tạo lập các đối tượng CSDL. 6.5.2 Database Object Permissions Đối tượng cho phép kiểm soát truy cập tới các đối tượng trong SQL Server. Chúng ta có thể gán và đòi lại quyền trên các bảng, các cột các khung nhìn và các thủ tục thông qua trình Enterprise Manager hoặc thông qua các thủ tục hệ thống. Một người dùng muốn thực hiện một hành động

User and Security Management

88

dựa trên một đối tượng phải có quyền phù hợp. Ví dụ, khi một người dùng muốn SELECT * FROM table1, người dùng đó phải có quyền SELECT trên bảng đó. Bảng 6.2 tóm tắt các kiểu quyền hạn trên đối tượng. Kiểu đối tượng Bảng Cột Khung nhìn Thủ tục

Hành động SELECT, UPDATE, DELETE, INSERT, REFERENCE SELECT, UPDATE SELECT, UPDATE, INSERT, DELETE EXECUTE

Bảng 6.2: Tóm tắt quyền hạn của đối tượng CSDL 6.5.3 Gán và gỡ bỏ quyền hạn trên đối tượng SQL Server sử dụng các lệnh GRANT, REVOKE, và DENY để quản lý các quyền hạn.

 GRANT: Khi chúng ta sử dụng phép GRANT trên một đối tượng, chúng ta cho phép người dùng thực hiện các thao tác trên đối tượng đó (Ví dụ, SELECT, UPDATE, INSERT, DELETE hoặc EXECUTE). Khi chúng ta sử dụng phép GRANT cho một câu lệnh, chúng ta cho phép người dùng chạy câu lệnh đó (ví dụ, CREATE TABLE).

 REVOKE: Khi chúng ta sử dụng phép REVOKE trên đối tượng, chúng ta ngăn chặn người dùng thực hiện hành động đó trên đối tượng (ví dụ, SELECT, UPDATE, INSERT, DELETE, hoặc EXCUTE). Khi chúng ta sử dụng phép REVOKE trên một câu lệnh, chúng ta làm mất đi khả năng chạy câu lệnh đó (ví dụ, CREATE TABLE).

 DENY: Khi chúng ta sử dụng phép DENY trên một đối tượng, chúng ta từ chối người dùng sử dụng các quyền hạn đó(ví dụ, SELECT, UPDATE, INSERT, DELETE, hoặc EXECUTE), trogn khi đó thực tế quyền REVOKE gỡ bỏ hẳn quyền hạn trên đối tượng. Tóm tắt  SQL Server kiểm tra người dùng hợp lệ ở hai cấp độ: Kiểm soát đăng nhập và kiểm soát quyền hạn trên CSDL người dùng.  Sự xác nhận quyền hạn xác nhận bằng cách người dùng sử dụng tài khoản đăng nhập và dùng quyền hạn để kết nối tới SQL Server.  SQL Server tổ chức 3 cơ chế kiểm soát đăng nhập trên máy tính: Kiểm soát quyền hạn tại SQL Server, Kiểm soát quyền hạn trong Windows NT và chế độ kiểm soát quyền hạn hỗn hợp.  Sử dụng Enterprise Manager chúng ta có thể quản lý các đăng nhập sử dụng cơ chế Create Login Wizard có trong SQL Server Enterprise Manager.

 Chúng ta có thể sử dụng thủ tục sp_addlogin để tạo lập các đăng nhập.

89

Database Design and Implementation with SQL Server

 SQL Server cho phép hai kiểu tài khoản người dùng: Người dùng hệ thống và người dùng CSDL

 sp_grantdbaccess và sp_revokedbaccess được sử dụng để gán và gỡ bỏ quyền truy cập vào CSDL bảo mật theo thứ tự định sẵn.  Các vai trò là cách chính để phân chia các đặc quyền hệ thống tới người dùng.

 SQL Server có các vai trò CSDL và vai trò máy chủ. Vai trò CSDL (Database roles) cho phép tất cả các cấp độ khác nhau độ truy cập CSDL khác nhau. Các vai trò cho phép chúng ta hạn chế hoặc cho phép người dùng thực hiện các thao tác khác nhau được gọi là vai trò máy phục vụ (server roles).

 Có một vai trò rất đặc biệt là: Vai trò Public. Mỗi người dùng định nghĩa trong CSDL đều thuộc vai trò Public.  Ở chế độ mặc định, SQL Server 2000 có 10 vai trò CSDL được định nghĩa. Chúng cho phép các cấp độ truy cập khác nhau tới CSDL.  Chúng ta có thể tạo lập một vai trò CSDL bằng cáh sử dụng Enterprise Manager hoặc thủ tục hệ thống.

 Chúng ta có thể thêm các vai trò bằng cách sử dụng Enterprise Manager hoặc thủ tục hệ thống sp_addrole. Chúng ta có thể thêm các thành viên tới vai trò bằng cách sử dụng thủ tục sp_addrolemember

 Đối tượng CSDL giúp cấu trúc dữ liệu người dùng và định nghĩa tính toàn vẹn dữ liệu.  Quyền hnạ cho phép người dùng thực hiện các thao tác trong CSDL. Có hai kiểu quyền hạn: Đối tượng và câu lệnh.

 Đối tượng quyền hạn kiểm soát người dùng có thể truy cập các thao tác với dữ liệu trong các bảng và khung nhìn và các thủ tục người dùng có thể chạy. Quyền hạn câu lệnh (Statement permissions) kiểm soát các hành động của người dùng như xoá và tạo lập đối tượng trong CSDL.  Một người dùng có thể tạo lập đối tượng CSDL được gọi là người sở hữu đối tượng. Người dùng cụ thể đó phải có quyền tạo lập đối tượng CSDL.  SQL Server sử dụng các lệnh GRANT, REVOKE, và DENY để quản lý quyền hạn Kiểm tra kiến thức

User and Security Management

90

1. Thủ tục nào dưới đây đượ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 tới CSDL? a. sp_grantdbacess b. sp_grantlogin c. sp_grantuser d. sp_grantall

2. Trường hợp nào của SQL Server sử dụng cả hai cơ chế kiểm soát quyền hạn Windows và SQL Server khi người dùng kết nối tới CSDL? a. During Windows Authentication b. During SQL Server Authentication c. During Mixed mode Authentication 3. Thành phần nào dưới đây tương tự như khái nhiệm nhóm trong NT? a. Permission b. Login Account c. Role d. User Account

4. Vai trò cho phép chúng ta hạn chế hoặc cho phép người dùng thực hiện các thao tác khác nhau được gọi Là ___________ vai trò. a. server b. database c. user 5. SQL Server sử dụng các lệnh _________, __________ và ___________để quản lý các quyền hạn a. GRANT,DENY,REVOKE b. ALLOW,DENY,REVOKE c. ALLOW,DISALLOW,PERMIT 6. Một người sử dụng có thể tạo lập CSDL được gọi là ______________. a. Database owner b. Account user c. Administrator 7. Vai trò nào được chứa trong mọi CSDL? a. Public b. Database c. Server 8. Chúng ta có thể sử dụng ______________thủ tục để thêm các thành viên tới vai trò máy phục vụ. a. sp_addsrvrolemember b. sp_addrolemember c. sp_addserverolemember

91

Database Design and Implementation with SQL Server

9. Vai trò nào không thể bị xoá? a. Public b. Database c. Server 10. Quyền hạn nào cho phép người dùng có thể xoá và tạo lập các đối tượng trong CSDL? a. Statement permissions b. User permissions c. Database permissions d. Object permissions

User and Security Management

92

Bài tập

1. Taok lập một đăng nhập ‘Frodo’ bằng T-SQL. (Gợi ý: Sử dụng thủ tục sp_addlogin ) 2. Tạo lập một vai trò ‘Manager’ cho NETDOMAIN và thêm các thành viên ‘Assistant’ và ‘Supervisor’

93

Database Design and Implementation with SQL Server

This page has been intentionally left blank.

User and Security Management

94

Related Documents

Session 06
October 2019 2
Session
July 2020 19
Session
October 2019 57
Session
November 2019 44
Session
November 2019 42

More Documents from "jack_harish"

May 2020 47
Aya Kito/ 1 Litre Of Tears
December 2019 53
Cv09sav
May 2020 37