BẢO MẬT TRONG SQL SERVER

Một phần của tài liệu Giáo trình SQL Server 2000 pdf (Trang 131 - 149)

15.1.1 Mơ hình truy cập bảo mật của SQL Server.

Hình 37: Các lớp kiểm tra bảo mật chứng thực của SQL Server

Việc kết nối đến SQL Server 2000 thật đơn giản. Sự bảo mật được kiểm tra ở ba nơi khác nhau: cĩ thể bị kiểm hợp lệ bởi Windows 2000, bản thân SQL Server, mức CSDL riêng lẽ. Ngay sau khi bạn kết nối vào SQL Server bạn chưa thật sự truy cập được bất kỳ một đối tượng CSDL nào, bạn cần phải được cấp quyền (permissions) truy cập đến đối tượng.

15.1.2 Các chế độ bảo mật.

SQL Server 2000 cung cấp hai chế độ bảo mật:

Hai loại chứng thực

Windows Authentication

SQL Server kiểm tra nhận dạng của user và sau đĩ cho phép hay từ chối đăng nhập truy xuất dựa trên cơ sở tên của User mà khơng cần tên đăng nhập và password riêng biệt. Điều này gọi là kết nối tin tưởng. Khi bạn kết nối đến SQL Server theo cách này thì cĩ nghĩa là bạn trình bày với SQL Server một ủy nhiệm bảo mật của Windows (như là một thẻ bài truy cập của bạn). Bạn xây dựng các ủy nhiệm này trong quá trình đăng nhập vào mạng windows 2000. Các ủy nhiệm bảo mật này được truyền âm thầm cho bạn, vì thế bạn khơng cần làm bất cứ điều gì đặc biệt để vượt qua việc kiểm tra bảo mật.

SQL Server Authentication

Người quản trị CSDL cĩ thể tạo ra các tài khoản và password đăng nhập SQL Serevr. Các tài khoản này hồn tồn khơng tuỳ thuộc vào các tài khoản hay nhĩm người dùng hệ điều hành. Nếu cĩ một kết nối chỉ định chứng thực SQL Server thì

SQL Server 2000 thực thi chứng thực chính nĩ bằng cách kiểm tra xem tài khoản đang nhập cĩ tồn tại hay khơng và mật khẩu chỉ định cĩ khớp với một ghi nhận trước đây trong SQL Server 2000 khơng.

Chế độ chứng thực:

Windows Authentication mode: Người sử dụng chỉ cĩ thể kết nối với SQL Server

200 bằng Windows Authentication (Kết nối tin tưởng)

Mixed mode: Người dùng cĩ thể kết nối với SQL Server 200 bằng cách dùng cả

Windows Authentication và SQL Server Authentication

Chuyển đổi chế độ chứng thực:

Sau khi cài đặt, bạn cĩ thể sử dụng Enterprise Manager để chuyển đổi qua lại giữa các chế độ. Tại cửa sổ Enterprise Manager, nhắp nút phải chuột tại instance và chọn Properties

Hình 38: cấu hình Security cho SQL Server

Ở trang Security click chọn hoặc SQL Server And Windows hoặc Windows Only để đổi chế độ chứng thực.

Sau khi bạn chuyển chế độ, bạn phải stop và sau đĩ restart dịch vụ của SQL Server service để sự thay đổi này cĩ tác dụng. Enterprise Manager sẽ hỏi ý kiến bạn.

Hình 39: Hộp thoại hỏi ý kiến người dùng cĩ muốn Stop và Restart Server

15.1.3 Tìm hiểu các Server-Wide Permission.

SQL Server 2000 hỗ trợ một số server role được định nghĩa trước được kết hợp với các quyền quản trị. Các server role này cấp các quyền server-wide để thực hiện các tác vụ khác nhau và bao gồm cac quyền mà bạn cĩ thể cấp cho những người dùng thơng qua việc sử dụng các server role này. Bạn khơng thể xố các server role và khơng thể thay đổi các quyền của chúng. Để cấp các quyền cho một người dùng, thì bạn thêm đăng nhập của chúng server role. Với Transact-SQL, bạn cĩ thể thêm các người dùng hay nhĩm các người dùng vào một server role

Lưu ý: Các Server role về cơ bản giống như các group trong Windows 2000. Trong SQL Server 2000 cĩ 8 server role

Server Role Thành viên của Server Role cĩ thể …

sysadmin Thực thi bất cứ thao tác nào trong một thể hiện SQL Server 2000 và trong bất kỳ CSDL. Mặc nhiên, tất cả các thành viên của nhĩm Windows built-in Administrators, tài khoản người dùng sa thuộc vào server role này.

serveradmin Cấu hình SQL Server 2000 bằng cách dùng thủ tục hệ thống sp_configure và cĩ thể kết thúc các sevice. Các thành viên của nhĩm điều hành viên built-in của Windows là rất tốt để nhận server role này.

setupadmin

Cài đặt và cấu hình linked server, remote server, và replication. Cĩ thể chỉ định một stored procedure được thực thi lúc khởi động (startup), như là sp_serveroption. Các thành viên của nhĩm điều hành viên built-in của windows là rất tốt nhận server role này.

securityadmin (adsbygoogle = window.adsbygoogle || []).push({});

Thực hiện tất cả các thao tác liên quan đến security trong SQL Server 2000, kể cả quản lý các quyền câu lệnh CREATE DATABASE, điều khiển server logins, và đọc error log. Giúp đỡ ở các nhân viên văn phịng. Thành viên của nhĩm điều hành viên built-in của windows là rất tốt nhận server role này.

processadmin Quản lý các tiến trình chạy các instance của SQL Server. Cĩ thể ngắt (kill) tiến trình của các user, các truy vấn.

dbcreator Cĩ thể tạo, hiệu chỉnh, và xĩa các CSDL. Những nhà quản trị CSDL lâu năm đảm trách server role này tốt.

Diskadmin Cĩ thể quản trị các tập và các thiết bị dự phịng. Nĩi chung Role này dùng để tương thích ngược với SQL Server 6.x.

bulkadmin Cĩ thể thực hiện các câu lệnh BULK INSERT. Cho phép các thành viên của sysadmin server role làm đại diện các tác vụ BULK INSERTmà khơng cần gán các quyền sysadmin. Hãy cẩn thận bởi vì các thành viên cũng phải truy xuất đọc đến bất kỳ dữ liệu được chèn và quyền INSERT trên bất kỳ bảng

Server Role Thành viên của Server Role cĩ thể … mà dữ liệu sẽ được chèn.

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 cĩ server role đĩ.

15.1.4 Tìm hiểu các quyền (Permission) chỉ định trên cở sở dữ liệu.

Khi Truy xuất đến SQL Server 2000 thì bạn chưa cĩ quyền truy xuất đến các CSDL. Ngoại trừ các thành viên trong sysadmin role, thành viên trong một server role cĩ sẳn quyền truy xuất CSDL. Các quyền truy xuất CSDL phải được cấp một cách rõ ràng bởi một system administrator hoặc thành viên của administrator role trong CSDL. Các quyền cĩ thể được cấp (grant), từ chĩi (deny), cởi bỏ (revoke) và bao gồm các quyền tạo đối tượng, quản trị CSDL, thực thi các câu lệnh T-SQL, chèn dữ liệu vào bảng, xem dữ liệu bằng view. SQL Server 2000 cĩ một số cơ chế để cấp các quyền cụ thể cho các user trong một CSDL.

Các quyền cụ thể trên CSDL

Quyền Mơ tả

Database owner

User cĩ thể được chỉ định như là chủ (owner) của CSDL và cĩ thể thực hiện bất kỳ hành động liên quan đến CSDL.

DBO role

Tất cả các thành viên của sysadmin server role thì tự động là thành viên của dbo role trong mỗi CSDL, và cĩ thể thực hiện bất kỳ thao tác liên quan đến CSDL.

User

Các user và group cĩ thể được cấp user truy xuất đến CSDL theo tài khoản bảo mật của Windows 2000 hoặc SQL Server 2000. Sau đĩ một giấy phép người dùng CSDL được cấp các quyền trong CSDL thơng qua database role, role chung, và chỉ định cấp các quyền câu lệnh và đối tượng.

Guest user

Một user mà cĩ thể truy xuất đến 1 instance của SQL Server 2000 (nhưng người này khơng cĩ tài khoản truy người dùng để truy xuất đến CSDL cụ thể) cĩ thể được cho phép truy xuất đến CSDL như là một người khách (guest user). Tài khoản guest cĩ thể được cấp các quyền cụ thể trong CSDL (đề đọc dữ liệu). Theo mặc nhiên, một CSDL khơng cĩ tài khoản guest user.

Public role

Tất cả các user được phép truy xuất đến CSDL trở thành thành viên của public role trong mỗi CSDL. Public role cĩ thể được cấp các quyền cụ thể (Tổng quát các quyền cần thiết cho tất cả các user của CSDL).

Fixed database role

Cho phép các user cĩ thể được thêm vào các fixed database role trong một CSDL. Các Fixed database role chứa các quyền định trước trong CSDL để thi hành các hoạt động của database-wide.

User-defined database role

Cho phép các user cĩ thể thêm vào user-defined database role trong một CSDL. Các role này cĩ thể được tạo bở administrator và cấp một cách cụ thể các quyền đưa ra hoặc các quyền trong CSDL.

Statement

permissions Quyền thực thi các câu lệnh quản trị (như CREATE PROCEDURE) cĩ thể được cấp, huỹ bỏ, từ chĩi các users, groups, và roles. Object

permissions

Quyền truy xuất đến các đối tượng CSDL (như là bảng hay view) cĩ thể được cấp, huỹ bỏ, từ chối các users, groups, và roles.

Quyền Mơ tả (adsbygoogle = window.adsbygoogle || []).push({});

Application role

Quyền thực thi các hành động trong một CSDL cĩ thể được cấp cho một application, thậm chí cấp cho user. Một application kết nối đến một CSDL và kích hoạt application role. Các User truy xuất đến một CSDL thơng qua sự kết nối này để dành lấy các quyền kết hớp với application role trong suốt quá trình kết nối. Các quyền phát hành đến một user cụ thể thì khơng liên quan khi user đang truy xuất CSDL thơng qua application role.

15.1.5 Fixed Database Roles.

Mỗi CSDL cĩ 9 role về CSDL được định nghĩa trước với các quyền kết hợp với database- wide để thực hiện các tác vụ khác nhau. Bạn khơng thể xĩa những database role này và cũng khơng thể thay đổi các quyền của chúng. Để gán một người dùng các quyền này trong một CSDL, bạn thêm tài khoản của người dùng vào database role. Nếu những fixed database role này khơng gán tổng hợp các quyền mà bạn cần thì bạn cĩ thể tạo các role với các quyền người dùng (thơng thường nhiều quyền hạn chế).

9 fixed database role cĩ thể cĩ trong SQL Server 2000.

Database Role Thành viên của CSDL này cĩ thể …

db_owner

Thực hiện bất kỳ tác vụ trong CSDL của SQL Server 2000. Các thành viên của role này cĩ cùng quyền như là chủ của CSDL là các thành viên của dbo role.

db_accessadmin

Thêm hay xĩa các user và group của Windows 2000 hoặc Win NT4.0 và các user trong một CSDL (dùng thủ tục hệ thống sp_grantdbaccess).

db_securityadmin

Quản lý tất cả các permission, role, role membership, và chuyển ower (ownership) trong một CSDL (sử dụng lệnh GRANT, REVOKE, và DENY).

db_ddladmin Thêm, hiệu chỉnh, xĩa các đối tượng trong CSDL (sử dụng lệnh CREATE, ALTER, và DROP).

db_backupoperator Chạy các lệnh DBCC, phát hành checkpoint, và dự phịng CSDL (sử dụng các câu lệnh T-SQL: DBCC, CHECKPOINT, và BACKUP). db_datareader Đọc dữ liệu từ bất kỳ các bảng hoặc view của người dùng trong CSDL (bạn cĩ quyền SELECT đối với tất cả table và view).

Db_datawriter Hiệu chỉnh hoặc xĩa dữ liệu từ các bảng hay view của người dùng trong CSDL (bạn phải cĩ quyền INSERT, UPDATE, và DELETE đối với tất cả các table và view).

Db_denydatareader

Khơng đọc dữ liệu từ bất kỳ bảng trong CSDL (bạn khơng cĩ quyền SELECT đối với bất kỳ đối tượng). Cĩ thể permission on any objects). Cĩ thể được sử dụng với role db_ddladmin để cho phép tạo các đối tượng làm chủ bằng dbo role, nhung khơng cĩ thể đọc nhạy cảm chứa trong các đối tượng đĩ.

Db_denydatawriter

Khơng hiệu chỉnh hay xĩa dữ liệu từ các bảng của người dùng trong CSDL (bạn khơng cĩ quyền INSERT, UPDATE, và DELETE đối với các đối tượng)

15.2

15.3 Tạo tài khoản đăng nhập (Login). 15.3.1 Dùng Create Login Wizard.

Hình 40: Chọn chế độ đăng nhập cho login đang tạo

Nếu bạn chọn Windows authentication thì bạn phải liên kết login ID này với một user hay group của Windows 2000 cĩ sẳn. Khai báo như trong hình sau

Hình 41: Xác định 1 tài khoản của Windows 2000 và xác định cho phép hoặc từ chối login mới truy xuất đến Server

Nếu bạn chọn SQL Server authentication, bạn sẽ tạo một tài khoản bảo mật của SQL Server 2000 như trong hình kế.

Hình 42: Khai báo LogiID và Password

Phải chỉ định rõ tên login và Password. Để ngăn chặn (deny) một login, đơn giản bạn chỉ cần xĩa bỏ login từ nơi chứa login trong Enterprise Manager (hoặc từ bảng sysxlogins trong CSDL master).

Sau khi bạn xác định kiểu đăng nhập và liên kết hay tạo tài khoản bảo mật, bạn chỉ định server role (nếu cần) cho login này trong hộp thoại kế. Nếu user sẽ khơng là một server- wide administrator, thì khơng cần chọn các server role.

Hình 43: Chỉ định server role cho login đang được tạo

Kế tiếp bạn chỉ định CSDL (nếu cần) để cho user này cĩ thể truy xuất trong hộp thoại kế tiếp. Nhớ rằng hầu hết các server role khơng cung cấp CSDL truy xuất (adsbygoogle = window.adsbygoogle || []).push({});

Hình 44: Chỉ định 1 hay nhiều CSDL để login này được truy xuất

Cuối cùng, bạn được SQL Server cho xem trước các lựa chọn mà bạn đã thực hiện trước khi login mới được tạo thực sự. Click vào nút Finish để tạo login.

Hình 45: Chọn nút Finish để hồn tất

15.3.2 Dùng Enterprise Manager để tạo một Login.

Để tạo một login bằng Enterprise Manager, nhấp nút phải chuột tại Security/Login của 1 instance, và chọn New Login. Thơng thường, các trang Server Role, và Database Access trong hợp thoại Propertie của login

Hình 46: Chỉ định Name, chế độ chứng thực, chọn CSDL mặc định

Bạn cũng chọn một CSDL mặc định và ngơn ngữ trong trang General. CSDL mặc định sẽ là CSDL hiện hành khi mà User đăng nhập vào. Mặc định khơng chọn là CSDL Master nhưng bạn nên chọn 1 CSDL khác làm mặc định. Ngơn ngữ mặt định là ngơn ngữ mặc định của instance hiện hành.

Lưu ý:

Bạn cũng cĩ thể từ chối sự truy xuất của một User hay group của Windows. Điều này được áp đặt đến việc truy xuất khác của user hay group (kể cả thành viên của một nhĩm khác mà cĩ login khác).

Hình 48: Gán login thuộc server role nào đĩ nếu cần

Lưu ý rằng nếu System Administrators server role được chọn, thì bạn cĩ thể xem nhĩm built-in Administrator group, và login sa của the SQL Server là những thành viên của sysadmin server role.

Hình 49:Thành viên của server role

Hình 51: Chỉ định CSDL được truy xuất tới và các quyền cụ thể cho login

Khi bạn chọn 1 CSDL thì login là thành viên của public role trong mỗi CSDL. Bạn khơng thể xĩa (remove) một login ra khỏi public role.

15.3.3 Tạo Login bằng T-SQL.

Bạn cũng cĩ thể tạo các Login bằng T-SQL

Windows Logins

Các thủ tục hệ thống dùng để cấp, hũy, từ chối, hiệu chỉnh một login cho một user hay group của Windows. Chỉ cĩ những thành viên của sysadmin hoặc securityadmin server roles mới cĩ thể thực thi các thủ tục hệ thống này

Thủ tục hệ thống Mơ tả

Sp_grantlogin 'login' Tạo một login cho một user hay group của Windows 2000.

Sp_revokelogin 'login'

Hũy login từ SQL Server đối với các user hay group của Windows 2000 (hoặc Windows NT 4.0). Điều này khơng rõ ràng lắm vì nĩ vẫn cĩ thể được cấp quyền truy xuất đến SQL Server 2000.

Sp_denylogin 'login'

Ngăn chặn một user hay thành viên của Windows 2000 (hoặc Windows NT 4.0) kết nối đến SQL Server 2000. Ngăn chặn các user hay group của thơgn qua một login khác kết với user hay group của Windows.

Sp_defaultdb 'login',

Thủ tục hệ thống Mơ tả

Sp_defaultlanguage 'login',

'language' Thay đổi ngơn ngữ mặc định của một login. Ví dụ:

Sp_grantlogin 'CDCN4\Bill'

SQL Server Logins (adsbygoogle = window.adsbygoogle || []).push({});

Các thủ tục hệ thống sau cho phép cấp, hũy, từ chối, hiệu chỉnh một login kết với một tài khoản người dùng SQL Server. Chỉ cĩ các thành viên của sysadmin hoặc securityadmin server roles mới cĩ thể thực thi các thủ tục hệ thống này

Thủ tục hệ thống Mơ Tả

Sp_addlogin 'login', ['password', 'database', 'language', 'sid', encryption_option']

Tạo một login SQL Server mới. Password là NULL nếu khơng chỉ định. CSDL mặc định là master nếu khơng chỉ định. Ngơn ngữ mặc định là ngơn ngữ của server hiện hành nếu khơng chỉ định. Mặc định, password ở trong csdl master.

Sp_droplogin 'login' Xĩa một SQL Server login.

Sp_password 'old_password',

'new_password', 'login' Thêm hoặc thay đổi password cho SQL Server login.

Sp_defaultdb 'login', 'database' Thay đổi CSDL mặc định

Sp_defaultlanguage 'login',

'language' Thay đổi ngơn ngữ mặc định. Ví dụ:

Sp_addlogin 'Joe', 'Joe123', 'Northwind'

Tạo một SQL Server login mới cĩ tên là Joe, với password là Joe123 và CSDL mặc định Northwind.

Server Roles

Các thủ tục hệ thống sau được dùng để thêm hay xĩa một login vào một server role. Chỉ cĩ thành viên của sysadmin server role mới cĩ thể thêm các login vào bất kỳ server role. Các thành viên của server role cũng cĩ thể thêm các login vào server role đĩ.

Thủ tục hệ thống Mơ tả

Sp_ addsrvrolemember 'login', 'role' Thêm login như là tàhnh viên của server role.

Sp_dropsrvrolemember 'login', 'role' Xố login khơng là thành viên của một server role. Ví dụ:

Sp_addsrvrolemember 'Joe', 'securityadmin' Thêm login cĩ tên là Joe vào server role Security Administrator.

Database Access

Các thủ tục sau đây được dùng để thêm hay xĩa một login (Windows hoặc SQL Server) hiện hữu được quyền truy xuất trong CSDL hiện hành. Khơng giống như SQL Server Enterprise Manager, bạn cĩ thể cấp một nhĩm của Windows 2000 (hoặc Windows NT 4.0) group truy xuất đến CSDL mà khơng cần tạo login trước một cách tường minh trong

Một phần của tài liệu Giáo trình SQL Server 2000 pdf (Trang 131 - 149)