Bảo mật trong SQL
lượt xem 42
download
Bảo mật trong SQL trình bày khái quát hệ thảo bảo mật trong quản lý cơ sở dữ liệu. SQL Server là một hệ thống quản lý cơ sở dữ liệu sử dụng Transact-SQL để trao đổi dữ liệu giữa Client computer và SQL.Server computer.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bảo mật trong SQL
- BẢO MẬT TRONG SQL I. Các Khái Niệm Cơ Bản SQL Server là một hệ thống quản lý cơ sở dữ liệu (Relational Database Management System (RDBMS) ) sử dụng Transact-SQL để trao đổi dữ liệu giữa Client computer và SQL Server computer. Một RDBMS bao gồm databases, database engine và các ứng dụng dùng để quản lý dữ liệu và các bộ phận khác nhau trong RDBMS. Bảo mật là một trong những yếu tố đóng vai trò quan trọng đối với sự sống còn của cơ sở dữ liệu. Hầu hết các hệ quản trị cơ sở dữ liệu thương mại hiện nay đều cung cấp khả năng bảo mật cơ sở dữ liệu với những chức năng như: - Cấp phát quyền truy cập cơ sở dữ liệu cho người dùng và các nhóm người dùng, phát hiện và ngăn chặn những thao tác trái phép của người sử dụng trên cơ sở dữ liệu. - Cấp phát quyền sử dụng các câu lệnh, các đối tượng cơ sở dữ liệu đối với người dùng. - Thu hồi (huỷ bỏ) quyền của người dùng. Bảo mật dữ liệu trong SQL được thực hiện dựa trên ba khái niệm chính sau đây: - Người dùng cơ sở dữ liệu (Database user): Là đối tượng sử dụng cơ sở dữ liệu, thực thi các thao tác trên cơ sở dữ liệu như tạo bảng, truy xuất dữ liệu,... Mỗi một người dùng trong cơ sở dữ liệu được xác định thông qua tên người dùng (User ID). Một tập nhiều người dùng có thể được tổ chức trong một nhóm và được gọi là nhóm người dùng (User Group). Chính sách bảo mật cơ sở dữ liệu có thể được áp dụng cho mỗi người dùng hoặc cho các nhóm người dùng. - Các đối tượng cơ sở dữ liệu (Database objects): Tập hợp các đối tượng, các cấu trúc lưu trữ được sử dụng trong cơ sở dữ liệu như bảng, khung nhìn, thủ tục, hàm được gọi là các đối tượng cơ sở dữ liệu. Đây là những đối tượng cần được bảo vệ trong chính sách bảo mật của cơ sở dữ liệu. - Đặc quyền (Privileges): Là tập những thao tác được cấp phát cho người dùng trên các đối tượng cơ sở dữ liệu. Chằng hạn một người dùng có thể truy xuất dữ liệu trên một bảng bằng câu lệnh SELECT nhưng có thể không thể thực hiện các câu lệnh INSERT, UPDATE hay DELETE trên bảng đó. SQL cung cấp hai câu lệnh cho phép chúng ta thiết lập các chính sách bảo mật trong cơ sở dữ liệu: Lệnh GRANT: Sử dụng để cấp phát quyền cho người sử dụng trên các đối tượng cơ sở dữ liệu hoặc quyền sử dụng các câu lệnh SQL trong cơ sở dữ liệu. Lệnh REVOKE: Được sử dụng để thu hồi quyền đối với người sử dụng.
- 1. Platform Platform cho SQL Server bao gồm các phần cứng vật lý và các hệ thống mạng kết nối khách hàng đến các máy chủ cơ sở dữ liệu và các tập tin nhị phân đ ược s ử dụng để xử lý các yêu cầu cơ sở dữ liệu. Operating System Security: Các gói dịch vụ và nâng cấp hệ điều hành bao gồm việc tăng cường an ninh mạng. 2. Authentication SQLServer xác thực việc truy cập dữ liệu thông qua việc phân quyền truy cập dữ liệu bao gồm: - Login và user: SQL Server cho phép truy nhập vào hệ thống thông qua các login. Chỉ khi có quyền ở mức độ nhất định bạn mới có thể tạo thêm login. - Server role: Role thực chất là tập hợp một nhóm các quyền và đại diện bằng m ột tên để thuận tiện cho việc quản lý. - Database role: database role tập hợp các quyền truy nh ập vào database thành t ừng nhóm để dễ tạo lập và sửa đổi. - Authentication: SQL Server xác thực các đăng nhập bằng hai c ơ chế, Windows Authentication và SQL Server Authentication. 3. Object Security (Bảo mật đối tượng cơ sở dữ liệu) Encryption and Certificates: Encryption không giải quyết các vấn đề điều khiển, tuy nhiên nó tăng cường bảo mật bằng cách làm hạn chế mất mát dữ liệu. Certificates: là phần mềm chìa khóa được chia sẻ giữa 2 máy chủ cho phép truyền thông tin an toàn bằng cách xác thực quyền người dùng, đồng th ời tăng kh ả năng bảo mật các kết nối tới từng đối tượng. 4. Application Security SQLServer cung cấp khả năng bảo mật từ phía các ứng dụng thông qua vi ệc c ấu hình ứng dụng, tạo kết nối tới database. Các tính năng Stored procedure và function do người dùng tự định nghĩa nhằm tránh khả năng dữ liệu bị mất cắp hoặc bị phá hoại qua lỗ hổng SQL injection. II. SECURABLES VÀ PRINCIPAL. 1. SECURABLES Securable là nguồn tài nguyên (đối tượng cơ sở dữ liệu) mà hệ thống cơ sở dữ liệu SQL Server cho phép quy định truy cập (kiểm soát sự quy định truy c ập và cấp cho các principal các quyền). Phạm vi Securable Server: Thiết bị đầu cuối, đăng nhập, vai trò máy chủ, c ơ sở d ữ liệu, các thông báo sự kiện.
- - Phạm vi securable database: Người sử dụng, vai trò cơ sở dữ liệu, vai trò ứng dụng, khoá bất đối xứng, khóa đối xứng…. - Phạm vi securable schema: loại, lược đồ XML và đối tượng - lớp đối tượng hay nói cách khác là các đối tượng nằm bên trong một phạm vi cơ sở dữ liệu như: view, table, các thủ tục…. Kiểm soát truy cập vào một Securable: Một thực thể nhận được một “permission” đến một securable gọi là principal. Một principal phổ biến nhất là có database và user. Truy cập vào securables được điều khiển bởi sự cấp hoặc từ chối quyền truy cập hoặc bằng cách thêm user và sử dụng vai trò đó có thể truy cập. 2. PRINCIPAL Principal là các nơi có thể yêu cầu tài nguyên SQL Server. Như các thành ph ần khác của mô hình SQL Server cho phép, principal có th ể đ ược sắp x ếp theo m ột h ệ thống phân cấp. Phạm vi ảnh hưởng của principal phụ thuộc vào phạm vi định nghĩa của principal: Windows, máy chủ, cơ sở dữ liệu, và principal không thể tách rời hoặc một mô hình SQL server. a. Role: Role là một công cụ cực mạnh cho phép ta tập hợp các user vào cùng 1 unit nh ờ đó ta có thể gán quyền chung cho cả unit đó. Vai trò của role: Để dễ quản lý 1 DB, nên xác định 1 tập hợp các role dựa theo yêu cầu công việc và gán mỗi role những quyền hạn (permission) khác nhau. Sau đó, chỉ cần chuyển các user vào các role thích hợp hơn là phải cấp quyền cho mỗi user riêng lẻ. Nếu công việc thay đổi. chỉ cần thay đổi quyền trong mỗi role thì những thay đổi này sẽ tự động được áp dụng cho toàn bộ các thành viên của role đó. Các loại User Roles Trong SQL server không có group. Tuy nhiên ta có thể quản lý việc bảo m ật của SQL server thông qua các group của Windows. Các nhóm của Windows có thể được dùng như là các role của SQL server. Có 2 lo ại user roles đã được định nghĩa sẵn trong SQL Server 2000: • Fixed Server Roles • Database Roles Fixed Server Roles: Hạn chế khả năng truy xuất vào các CSDL riêng lẻ sau khi user đăng nhập vào. Có 8 loại server roles. Danh sách sau liệt kê các loại này mà khả năng quản trị theo th ứ tự giảm dần. sysadmin: quyền tối đa mà không bị bất kỳ 1 hạn chế nào. Mặc định, tất cả các
- thành viên của nhóm quản trị Windows (Administrators)và user sa thuộc vào server role này serveradmin: có quyền cấu hình mức server như xác lập lượng bộ nhớ mà SQL server có thể dùng khi truyền thông tin qua mạng. setupadmin: có quyền thực thi replication và quản trị các thủ tục (extended stored procedures). securityadmin: điều hành bảo mật như tạo login và gán quyền. processadmin: có quyền kết thúc các tiến trình được gọi không hợp lệ dbcreator: tạo và chỉnh sửa database disarming: thực hiện các hoạt động sao lưu như sao chép đĩa và tạo các thiết bị sao lưu bulkadmin: thực hiện lệnh BULK INSERT 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 vào chính server role đó. Để xem các fixed server roles: sp_helpsrvrole Để xem quyền của mỗi role sp_srvrolepermission Để gán 1 user vào 1 fixed server role, ta có thể dùng lệnh sau Cú pháp: sp_addsrvrolemember [ @loginame = ] 'login', [ @rolename = ] 'role‘ Ví dụ 1: gán user1 vào nhóm sysadmin EXEC sp_addsrvrolemember 'User1', 'sysadmin‘ Ví dụ 2: thêm user của Windows NT Corporate\HelenS vào role sysadmin EXEC sp_addsrvrolemember 'Corporate\HelenS', 'sysadmin' Database roles: Mỗi Database có một bộ các fixed database roles. Phạm vi của mỗi role này là chỉ trong từng database riêng rẽ. Ví dụ: nếu Database1 và Database2 cả hai đều có 1 user ID là UserX. Nhưng UserX trong Database1 thuộc fixed database role tên là db_owner. Role này không ảnh hưởng gì đến UserX trong Database2 khi user này là thành viên của role có tên là db_owner. Database roles cho phép bạn gán quyền cho 1 nhóm các user thay vì phải gán quyền cho từng user riêng lẻ. Có 3 loại database roles: • Fixed • Custom • Application Thêm thành viên vào DB Role: Tài khoản bảo mật (security account): có thể là bất kỳ user hợp lệ nào của SQL server. Có thể là 1 role nào đó của SQL Server có thể là bất kỳ user hay group nào của Windows đã được gán quyền truy cập vào DB hiện hành.
- Để thêm user hay group của Windows NT, dùng sp_grantdbaccess Dùng lệnh sp_addrolemember để thêm 1 tài khoản vào 1 role, khi đó thành viên có thể kế thừa bất kỳ quyền nào của role đó. sp_addrolemember [ @rolename = ] 'role' , [ @membername = ] 'security_account' Cú Pháp: sp_grantdbaccess [@loginame =] 'login'[,[@name_in_db =] 'name_in_db' OUTPUT]] Ví dụ: thêm user của Windows vào CSDL hiện hành với user ID là Georgie. EXEC sp_grantdbaccess 'Corporate\GeorgeW', 'Georgie' Để xoá tài khoản ra khỏi CSDL: sp_revokedbaccess [ @name_in_db = ] 'name‘ Ví dụ : EXEC sp_revokedbaccess 'Georgie' Cú pháp sp_addrolemember sp_addrolemember [ @rolename = ] 'role' , [ @membername = ] 'security_account' Custom Database Roles: Người dùng có thể cần có thêm một số quyền mà các quyền này chưa được xác định trong bất kỳ role database cố định nào. SQL server cho phép tạo các database role tuỳ biến (custom). Khi tạo một role database tùy biến, trước tiên cần thêm các quyền vào role, sau đó sẽ gán các user vào role. Cú Pháp: Dùng lệnh sp_addrole [ @rolename = ] 'role' [ , [ @ownername = ] 'owner' ] Bằng Enterprise Manager Chỉ có những thành viên của role sysadmin, db_securityadmin và db_owner mới có quyền chạy lệnh này. Ví dụ: tạo 1 role mới tên Managers cho CSDL hiện hành. EXEC sp_addrole 'Managers' Vai trò của Application Roles: Hệ thống bảo mật trong SQL server được thực thi ở mức thấp nhất: là database. Đây là phương pháp tốt nhất để kiểm soát các hoạt động của user bất kể ứng dụng nào được dùng để kết nối với SQL server. Tuy nhiên, đôi khi việc kiểm soát bảo mật phải được “customized” ( tuỳ biên) để phù hợp với các yêu cầu đặc biệt của mỗi ứng dụng. Application role không có member (thành viên) như các role khác. Quyền của apllication role có được khi application role hoạt động do 1 ứng dụng nào đó đang chạy. Người dùng có liên quan đến application role là do người dùng đó có khả năng chạy được ứng dụng hơn là do người dùng đó là thành viên của application role. Tạo 1 application role cho DB hiện hành: Cú pháp sp_addapprole [ @rolename = ] 'role‘ , [ @password = ] 'password' Giá trị trả về của thủ tục : 0 (thành công) hoặc 1(bị lỗi) Có thể tạo application role từ enterprise manager Để kích hoạt 1 application role trong DB hiện hành: Cú pháp sp_setapprole [@rolename =] 'role' , [@password =] 'password‘ Sau khi application role được kích hoạt bằng sp_setapprole, role sẽ không bị mất
- tác dụng trong DB hiện hành cho đến khi user ngắt kết nối khỏi SQL Server Thủ tục sp_setapprole chỉ có thể được gọi trực tiếp bằng lệnh exec. Nó không thể được thực thi bên trong 1 thủ tục khác hay từ 1 transaction của người dùng Ví dụ: EXEC sp_setapprole 'SalesApprole', 'AsDeFXX' b. Tài khoản SA Tài khoản sa trong SQL Server là một tài khoản cao nhất trong máy chủ chính (principal). Theo mặc định, nó được tạo ra khi một cá thể được cài đặt. Trong SQL Server 2005 và SQL Server 2008, các cơ sở dữ liệu mặc định của sa là master. Đây là một thay đổi trong việc giao tiếp từ các phiên bản trước đó của SQL Server. Không nên sử dụng tài khoản sa Sa là tài khoản cao nhất của SQL Server, chính vì thế mà người quản trị không th ể s ử d ụng nó 1 cách tùy tiện, thay vì sử dụng sa, người quản trị tạo ra 1 tài khoản tương tự và 1 role t ương t ự để sử dụng thay thế, khi nào cần thiết ới sử dụng sa. Mặt khác tránh trường hợp người khác vô tình hay cố ý biết được mật khẩu của sa thì vấn đề có thể nghiêm trọng, cũng tương tự như vậy, trong trường h ợp vi ết các ứng dụng truy cập đến SQL Server, ta cũng không nên sử dụng sa, thay vào đó là 1 tài khoản sử dụng cho ứng dụng đó mà thôi. c. Vai trò cơ sở dữ liệu công cộng Mọi cơ sở dữ liệu người dùng đều thuộc về vai trò cơ sở dữ liệu công cộng. Khi một người dùng không được cấp hoặc bị từ chối quyền truy cập cụ thể trên một securable, người dung đó chỉ được kế thừa các quyền được cấp công cộng. d. INFORMATION_SCHEMA và sys (hệ) Mỗi cơ sở dữ liệu bao gồm hai thực thể xuất hiện như là người sử dụng trong khung nhìn view: INFORMATION_SCHEMA và sys. Các thực thể được yêu cầu bởi SQL Server. Đó không phải là Principal, cũng không thể được sửa đổi hoặc bị xoá bỏ. e. Khách và cơ sở dữ liệu máy chủ Theo định nghĩa, cứ một khách (người dùng) và một máy chủ cơ sở dữ liệu là 1 Principal an ninh được bảo mật. Những “vị trí” này có thể được hai bên xác thực trước khi kết nối mạng an toàn được thiết lập. SQL Server hỗ trợ Kerberos giao thức xác thực, xác định cách khách hàng tương tác với các dịch vụ thẩm định mạng. III. QUYỀN (Permissions) Khi 1 đối tượng được tạo ra, chỉ có owner (người tạo đối tượng) mới có quyền truy xuất đối tượng. Owner phải cấp quyền cho các user khác User phải có quyền thích hợp để thực thi bất kỳ hoạt động nào liên quan đ ến vi ệc thay đổi định nghĩa DB hay truy xuất dữ liệu Có 3 loại quyền • Object Permissions • Statement Permissions
- • Implied Permissions Tất cả các quyền trong SQL server có thể tồn tại dưới 1 trong 3 trạng thái sau: granted ( cấp quyền), revoked (thu hồi) và denied (từ chối). 1. Object Permissions (Quyền về đối tượng): Ngay khi 1 DB được tạo, các user cần được cho quyền để làm việc với dữ liệu được lưu trữ trong DB. Có 6 loại quyền object :SELECT, INSERT, UPDATE, DELETE, REFERENCES, EXECUTE. 2. Statement Permissions Quyền về lệnh Cho phép các hoạt động liên quan đến việc tạo DB hay 1 đối tượng nào đó trong DB như bảng, thủ tục. Các quyền về lệnh được áp dụng chỉ cho lệnh hơn là cho bản thân các đối tượng. Các Statement permissions là BACKUP DATABASE, BACKUP LOG, CREATE DATABASE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE RULE, CREATE TABLE, CREATE VIEW. 3. Implied Permissions Quyền ngầm định: Implied permissions kiểm soát các hoạt động mà chỉ có thể được thực hiện bởi các thành viên của các role hệ thống (như sysadmin,..) hoặc các owner của các đối tượng CSDL. Các owner của các đối tượng DB cũng có thể có các quyền ngầm định cho phép họ thực thi tất cả các hoạt động với đối tượng mà họ là chủ. 4. Cấp phát quyền Câu lệnh GRANT được sử dụng để cấp phát quyền cho người dùng hay nhóm người dùng trên các đối tượng cơ sở dữ liệu. Câu lệnh này thường được sử dụng trong các trường hợp sau: A Người sở hữu đối tượng cơ sở dữ liệu muốn cho phép người dùng khác quyền sử dụng những đối tượng mà anh ta đang sở hữu. B Người sở hữu cơ sở dữ liệu cấp phát quyền thực thi các câu lệnh (như CREATE TABLE, CREATE VIEW,...) cho những người dùng khác. a. Cấp phát quyền cho người dùng trên các đối tượng cơ sở dữ liệu Chỉ có người sở hữu cơ sở dữ liệu hoặc người sở hữu đối tượng cơ sở dữ liệu mới có thể cấp phát quyền cho người dùng trên các đối tượng cơ sở dữ liệu. Câu lệnh GRANT trong trường hợp này có cú pháp như sau: GRANT ALL [PRIVILEGES]| các_quyền_cấp_phát [(danh_sách_cột)] ON tên_bảng | tên_khung_nhìn |ON tên_bảng | tên_khung_nhìn [(danh_sách_cột)] |ON tên_thủ_tục
- |ON tên_hàm TO danh_sách_người_dùng | nhóm_người_dùng [WITH GRANT OPTION ] EXECUTE. các_quyền_cấp_phát tên_bảng|tên_khung_nhìn danh_sách_cột tên_thủ_tục tên_hàm danh_sách_người_dùng WITH GRANT OPTION Trong đó: ALL [PRIVILEGES] Cấp phát tất cả các quyền cho người dùng trên đối tượng cơ sở dữ liệu được chỉ định. Các quyền có thể cấp phát cho người dùng bao gồm: - Đối với bảng, khung nhìn, và hàm trả về dữ liệu kiểu bảng: SELECT, INSERT, DELETE, UPDATE và REFERENCES. - Đối với cột trong bảng, khung nhìn: SELECT và UPDATE. - Đối với thủ tục lưu trữ và hàm vô hướng Trong các quyền được đề cập đến ở trên, quyền REFERENCES được sử dụng nhằm cho phép tạo khóa ngoài tham chiếu đến bảng cấp phát. Danh sách các quyền cần cấp phát cho người dùng trên đối tượng cơ sở dữ liệu được chỉ định. Các quyền được phân cách nhau bởi dấu phẩy Tên của bảng hoặc khung nhìn cần cấp phát quyền. Danh sách các cột của bảng hoặc khung nhìn cần cấp phát quyền. Tên của thủ tục được cấp phát cho người dùng. Tên hàm (do người dùng định nghĩa) được cấp phát quyền. Danh sách tên người dùng nhận quyền được cấp phát. Tên của các người dùng được phân cách nhau bởi dấu phẩy. Cho phép người dùng chuyển tiếp quyền cho người dùng khác. Các ví dụ dưới đây sẽ minh hoạ cho ta cách sử dụng câu lệnh GRANT để cấp phát quyền cho người dùng trên các đối tượng cơ sở dữ liệu. Ví dụ 1: Cấp phát cho người dùng có tên thuchanh quyền thực thi các câu lệnh SELECT, INSERT và UPDATE trên bảng LOP GRANT SELECT,INSERT,UPDATE ON lop
- TO thuchanh Cho phép người dùng thuchanh quyền xem họ tên và ngày sinh của các sinh viên (cột HODEM,TEN và NGAYSINH của bảng SINHVIEN) GRANT SELECT (hodem,ten,ngaysinh) ON sinhvien TO thuchanh hoặc: GRANT SELECT ON sinhvien(hodem,ten,ngaysinh) TO thuchanh Với quyền được cấp phát như trên, người dùng thuchanh có thể thực hiện câu lệnh sau trên bảng SINHVIEN SELECT hoden,ten,ngaysinh FROM sinhvien Nhưng câu lệnh dưới đây lại không thể thực hiện được SELECT * FROM sinhvien Trong trường hợp cần cấp phát tất cả các quyền có thể thực hiện được trên đối tượng cơ sở dữ liệu cho người dùng, thay vì liệt kê các câu lệnh, ta chỉ cần sử dụng từ khoá ALL PRIVILEGES (từ khóa PRIVILEGES có thể không cần chỉ định). Câu lệnh dưới đây cấp phát cho người dùng thuchanh các quyền SELECT, INSERT, UPDATE, DELETE VÀ REFERENCES trên bảng DIEMTHI GRANT ALL ON DIEMTHI TO thuchanh Khi ta cấp phát quyền nào đó cho một người dùng trên một đối tượng cơ sở dữ liệu, người dùng đó có thể thực thi câu lệnh được cho phép trên đối tượng đã cấp phát. Tuy nhiên, người dùng đó không có quyền cấp phát những quyền mà mình được phép cho những người sử dụng khác.Trong một số trường hợp, khi ta cấp phát quyền cho một người dùng nào đó, ta có thể cho phép người đó chuyển tiếp quyền cho người dùng khác bằng cách chỉ định tuỳ chọn WITH GRANT OPTION trong câu lệnh GRANT. Ví dụ 2: Cho phép người dùng thuchanh quyền xem dữ liệu trên bảng SINHVIEN đồng thời có thể chuyển tiếp quyền này cho người dùng khác GRANT SELECT ON sinhvien TO thuchanh WITH GRANT OPTION b. Cấp phát quyền thực thi các câu lệnh
- Ngoài chức năng cấp phát quyền cho người sử dụng trên các đối tượng cơ sở dữ liệu, câu lệnh GRANT còn có thể sử dụng để cấp phát cho người sử dụng một số quyền trên hệ quản trị cơ sở dữ liệu hoặc cơ sở dữ liệu. Những quyền có thể cấp phát trong trường hợp này bao gồm: • Tạo cơ sở dữ liệu: CREATE DATEBASE. • Tạo bảng: CREATE RULE • Tạo khung nhìn: CREATE VIEW • Tạo thủ tục lưu trữ: CREATE PROCEDURE • Tạo hàm: CREATE FUNCTION • Sao lưu cơ sở dữ liệu: BACKUP DATABASE Câu lệnh GRANT sử dụng trong trường hợp này có cú pháp như sau: GRANT ALL | danh_sách_câu_lênh TO danh_sách_người_dùng Ví dụ 3: Để cấp phát quyền tạo bảng và khung nhìn cho người dùng có tên là thuchanh, ta sử dụng câu lệnh như sau: GRANT CREATE TABLE,CREATE VIEW TO thuchanh Với câu lệnh GRANT, ta có thể cho phép người sử dụng tạo các đối tượng cơ sở dữ liệu trong cơ sở dữ liệu. Đối tượng cơ sở dữ liệu do người dùng nào tạo ra sẽ do người đó sở hữu và do đó người này có quyền cho người dùng khác sử dụng đối tượng và cũng có thể xóa bỏ (DROP) đối tượng do mình tạo ra. Khác với trường hợp sử dụng câu lệnh GRANT để cấp phát quyền trên đối tượng cơ sở dữ liệu, câu lệnh GRANT trong trường hợp này không thể sử dụng tuỳ chọn WITH GRANT OPTION, tức là người dùng không thể chuyển tiếp được các quyền thực thi các câu lệnh đã được cấp phát. 5. Thu hồi quyền Câu lệnh REVOKE được sử dụng để thu hồi quyền đã được cấp phát cho người dùng. Tương ứng với câu lệnh GRANT, câu lệnh REVOKE được sử dụng trong hai trường hợp: 0 Thu hồi quyền đã cấp phát cho người dùng trên các đối tượng cơ sở dữ liệu. 1 Thu hồi quyền thực thi các câu lệnh trên cơ sở dữ liệu đã cấp phát cho người dùng. Thu hồi quyền trên đối tượng cơ sở dữ liệu: Cú pháp câu lệnh REVOKE sử dụng để thu hồi quyền đã cấp phát trên đối tượng cơ sở dữ liệu có cú pháp như sau: REVOKE [GRANT OPTION FOR]
- ALL [PRIVILEGES]| các_quyền_cần_thu_hồi [(danh_sách_cột)] ON tên_bảng | tên_khung_nhìn |ON tên_bảng | tên_khung_nhìn [(danh_sách_cột)] |ON tên_thủ_tục |ON tên_hàm FROM danh_sách_người_dùng [CASCADE] Câu lệnh REVOKE có thể sử dụng để thu hồi một số quyền đã cấp phát cho người dùng hoặc là thu hồi tất cả các quyền (ALL PRIVILEGES). Ví dụ 4: Thu hồi quyền thực thi lệnh INSERT trên bảng LOP đối với người dùng thuchanh. REVOKE INSERT ON lop FROM thuchanh Giả sử người dùng thuchanh đã được cấp phát quyền xem dữ liệu trên các cột HODEM, TEN và NGAYSINH của bảng SINHVIEN, câu lệnh dưới đây sẽ thu hồi quyền đã cấp phát trên cột NGAYSINH (chỉ cho phép xem dữ liệu trên cột HODEM và TEN) REVOKE SELECT ON sinhvien(ngaysinh) FROM thuchanh Khi ta sử dụng câu lệnh REVOKE để thu hồi quyền trên một đối tượng cơ sở dữ liêu từ một người dùng náo đó, chỉ những quyền mà ta đã cấp phát trước đó mới được thu hồi, những quyền mà người dùng này được cho phép bởi những người dùng khác vẫn còn có hiệu lực. Nói cách khác, nếu hai người dùng khác nhau cấp phát cùng các quyền trên cùng một đối tượng cơ sở dữ liệu cho một người dùng khác, sau đó người thu nhất thu hồi lại quyền đã cấp phát thì những quyền mà người dùng thứ hai cấp phát vẫn có hiệu lực. IV. CODE VÀ CÁC TÍNH NĂNG VÔ HIỆU HÓA 1. CODE Ngôn ngữ chung (common language runtime - CLR) hỗ trợ một mô hình bảo mật được gọi là mã bảo mật truy cập cho mã quản lý. Trong mô hình này, quyền được cấp cho assembly dựa trên danh tính của các mã. Chính sách bảo mật để xác định các quyền được cấp cho các hội đồng được quy định tại ba địa điểm khác nhau: • Chính sách máy: Đây là chính sách có hiệu lực cho tất cả các mã được quản lý chạy trong máy mà trên đó SQL Server được cài đặt.
- • Chính sách người dùng: Đây là chính sách có hiệu lực cho các mã quản lý được tổ chức bởi một quá trình. Với SQL Server, các chính sách người dùng là cụ thể cho các tài khoản Windows mà trên đó các dịch vụ SQL Server đang hiện hành. • Chính sách máy chủ: Đây là chính sách thiết lập bởi các máy chủ c ủa CLR (trong trường hợp này là SQL Server) có hiệu lực trong quản lý mã hi ện hành trong máy chủ. Cơ chế bảo mật mã truy cập được hỗ trợ bởi CLR được dựa trên giả định rằng thời gian chạy có thể lưu trữ cả mã hoàn toàn tin cậy và bán tin cậy. Các nguồn tài nguyên được bảo vệ bởi mã bảo mật truy cập CLR thường được bao bọc bởi trình ứng dụng quản lí giao diện yêu cầu sự cho phép tương ứng trước khi cho phép truy cập vào các tài nguyên. Các nhu cầu về quyền thỏa mãn chỉ khi tất cả những người gọi (ở mức độ assembly) trong các cuộc gọi stack có sự cho phép nguồn tài nguyên tương ứng. 2. TÍNH NĂNG VÔ HIỆU HÓA Sau khi cài đặt, sử dụng các máy chủ SQL công cụ Configuration Manager để vô hiệu hóa các tính năng và dịch vụ không cần thiết. Cài đặt chỉ những thành phần cần thiết. Các gói dịch vụ gần đây và các bản sửa lỗi quan trọng nên được cài đặt cho SQL Server và Windows. Chế độ Windows Authentication là an toàn hơn so với SQL xác thực. Nếu vẫn có nhu cầu sử dụng SQL xác thực - thực thi chính sách mật khẩu mạnh. Vô hiệu hóa tài khoản SA và đổi tên nó. Không sử dụng tài khoản này để quản lý máy chủ SQL. Thay đổi mặc định cổng SQL Server liên quan đến việc cài đặt SQL Server để giữ cho các tin tặc từ cổng quét các máy chủ. Ẩn SQL Server hoặc các trường hợp vô hiệu hóa các dịch vụ SQL Server Browser. Loại bỏ building, nhóm quản trị từ Đăng nhập SQL Server. Cho phép đăng nhập SQL Server cố gắng đăng nhập (không thành công và thành công). SQL Server 2005 chứa các công cụ cấu hình như một hệ thống lưu trữ thủ tục được gọi là sp_configure hoặc SQL Server, Surface Area Configuration (cho các dịch vụ và các tính năng) để kích hoạt , vô hiệu hóa tính năng tùy chọn khi cần thiết. Những tính năng thường được cài đặt như bị vô hiệu hóa theo mặc định. Sp_configure là một hệ thống thủ tục lưu trữ có thể được sử dụng thay cho diện tích công cụ cấu hình để cho phép vô hiệu hóa các tính năng trong SQL Server. Các tính năng vô hiệu hóa trong SQL Server có thể kể tới như: Các kết nối từ xa, nối kết quản trị chuyên dụng, .NET Framework, Database Mail, SQL Mail, Service Broker,…..
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Hướng dẫn sử dụng chức năng Backup/restore trong SQL server 2005
23 p | 279 | 115
-
CHỨC NĂNG BACKUP,RESTORE TRONG SQL 2005
23 p | 276 | 105
-
Giáo trình Hệ quản trị cơ sở dữ liệu SQL - ĐH Công nghiệp Hà Nội
145 p | 510 | 61
-
BÀI THỰC HÀNH SỐ 7: Bảo đảm dữ liệu trong SQL Server
49 p | 179 | 33
-
Giáo trình Hệ quản trị cơ sở dữ liệu SQL server (Nghề: Lập trình máy tính - Trình độ CĐ/TC) - Trường Cao đẳng Nghề An Giang
57 p | 51 | 23
-
Bài giảng Bảo mật cơ sở dữ liệu: Chương 6 - Trần Thị Kim Chi
171 p | 111 | 23
-
Top 5 thiết lập bảo mật trong Group Policy của Windows Server 2008
13 p | 149 | 20
-
Giáo trình quản trị và bảo mật Joomla- P21
10 p | 105 | 18
-
Hướng dẫn lập trình SQL căn bản: Phần 2
80 p | 38 | 10
-
Bài giảng Kiến trúc cài đặt cơ sở dữ liệu - Chương 10: Bảo mật trong SQL Server
0 p | 120 | 8
-
Bài giảng SQL server 2
43 p | 52 | 7
-
Giáo trình Hệ quản trị cơ sở dữ liệu - CĐ Công nghiệp Hải Phòng
155 p | 36 | 7
-
Bài thực hành Bảo mật hệ thống thông tin số 4: PL/SQL
15 p | 43 | 7
-
Giáo trình mô đun Hệ quản trị CSDL MS SQL Server (Nghề Công nghệ thông tin - Trình độ trung cấp) – CĐ Kỹ thuật Công nghệ BR–VT
139 p | 55 | 6
-
Bài giảng Kiến trúc cài đặt cơ sở dữ liệu - Chương 11: Bảo mật mức hàng trong SQL Server
0 p | 77 | 6
-
Bài giảng Microsoft SQL server: Bài 12 - TS. Lê Thị Tú Kiên
66 p | 51 | 4
-
Bài giảng Cơ sở dữ liệu: Chương 8 - Nguyễn Việt Cường
31 p | 58 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn