SQL SECURITY C o u rs e I LT Chương 14 SECURITY Bảo mật trong cơ sở dữ liệu C o u rs e I LT Mục tiêu Trong phần này, chúng ta sẽ học về – Các tính chất bảo mật của SQL Server – Tạo tài khoản đăng nh[.]
Course ILT Chương 14 SECURITY Bảo mật sở liệu Mục tiêu Course ILT Trong phần này, học về: – Các tính chất bảo mật SQL Server – Tạo tài khoản đăng nhập (user login) – Phân biệt tài khoản đăng nhập (user login) tài khoản người dùng (user ID) – Các loại User Roles: Fixed Server Roles Database Roles – Các loại quyền bảo mật( Security Permissions) – Nhóm lệnh DCL : GRANT, DENY, REVOKE – Giải xung đột quyền Course ILT Khái quát tính bảo mật SQL Server Mỗi database nên có hệ thống bảo mật đáng tin cậy (reliable security system) để giám sát hoạt động thông tin cần xem chỉnh sửa Một hệ thống bảo mật đáng tin cậy phải bảo đám việc bảo vệ liệu việc user dùng cách để truy xuất vào database SQL áp dụng quyền bảo mật vào mức: mức database, mức đối tượng mức cột bảng Login ID user ID Course ILT Cần phân biệt Login ID user ID: – Người dùng muốn truy xuất vào Microsoft SQL Server, phải có login ID password Nhưng login ID khơng cho phép nguời dùng quyền truy xuất đến DB Muốn tạo login ID, dùng lệnh sp_addlogin – User ID nhận dạng người dùng DB Tất quyền chủ quyền đối tượng DB điều khiển user ID Ví dụ user ID xyz DB sales khác với user ID tên xyz DB inventory Course ILT Login ID user ID Một login ID phải kết hợp với user ID DB để truy xuất liệu DB Nếu login ID không kết hợp tường minh với user ID kết hợp với user ID guest Nều DB khơng có user ID guest khơng thể truy xuất vào DB – sa tài khoản đăng nhập (login account) ánh xạ tự động với user ID dbo DB – Guest user ID đặc biệt Việc quản trị dễ dàng login ID user ID giống điều không bắt buộc Course ILT Authentication &Authorization User truy xuất vào DB thơng qua account đăng nhập (login ID) hợp lệ , nhờ user có khả kết nối vào database server Quá trình gọi authentication(xác thực) Tài khoản đăng nhập (Login ID) ánh xạ với tài khoản user ( user ID) phép user quyền truy xuất DB Quá trình gọi authorization (cấp phép) (hay permission validation) User truy xuất vào DB họ có tài khoản đăng nhập (login ID ) hợp lệ Tạo Login ID Course ILT Sử dụng tài khoản đăng nhập Windows tài khoản đăng nhập vào SQL server – Sử dụng thủ tục sp_grantlogin Tạo tài khoản đăng nhập riêng SQL server – Sử dụng thủ tục sp_addlogin Gán user Windows Cú pháp Course ILT sp_grantlogin [@loginame =] 'login‘ Ví dụ: muốn đăng nhập vào SQL server account Windows user1, ta dùng lệnh sau: sp_grantlogin ‘user1’ Course ILT Tạo User login SQL server Chỉ có người quản tri (administrator) có quyền tạo login ID Cú pháp sp_addlogin [ @loginame = ] 'login' [ , [ @passwd = ] 'password' ] [ , [ @defdb = ] 'database' ] Ví dụ: EXEC sp_addlogin ‘student1','Password','master' Xem login ID Course ILT Dùng thủ tục sp_helplogins Course ILT Application Role Để bảo đảm tất chức ứng dụng thực thi, kết nối phải làm quyên áp dụng cho tài khoản login user hay group, database role tất DB suốt thời gian kết nối có quyền liên quan đến ứng dụng mà thơi Ví dụ user thường bị từ chối truy xuất vào bảng mà ứng dụng truy xuất vào được,khi việc bị từ chối truy xuất hủy bỏ user sử dụng ứng dụng Application role cho phép ứng dụng quyền xác nhận người dùng ( user authentication) Tuy nhiên SQL server vần phải xác nhận ứng dụng truy xuất vào DB, ứng dụng phải cung cấp password khơng có cách khác đề xác nhận ứng dụng có hợp lệ hay khơng Course ILT sp_addapprole Tạo application role cho DB hành Cú pháp sp_addapprole [ @rolename = ] 'role‘ , [ @password = ] 'password' Giá trị trả thủ tục : – (thành cơng) – 1(bị lỗi) Có thể tạo application role từ enterprise manager Course ILT sp_setapprole Để kích hoạt application role DB hành Cú pháp sp_setapprole [@rolename =] 'role' , [@password =] 'password‘ Sau application role kích hoạt sp_setapprole, role không bị tác dụng DB hành user ngắt kết nối khỏi SQL Server Thủ tục sp_setapprole gọi trực tiếp lệnh exec Nó khơng thể thực thi bên thủ tục khác hay từ transaction người dùng Ví dụ: EXEC sp_setapprole 'SalesApprole', 'AsDeFXX' Course ILT Ví dụ Sue chạy ứng dụng Sales ma ứng dụng yêu cầu quyền SELECT, UPDATE INSERT vào bảng Products Orders CSDL Sales, ta lại khơng có quyền truy xuất trực tiếp vào hai bảng dùng cửa sổ Analyzer hay công cụ khác SQL Tạo Database role cấm quyền SELECT, INSERT UPDATE bảng Products Orders, thêm Sue vào thành viên role Sau tạo application role database Sales với quyền SELECT, INSERT UPDATE bảng Products Orders Khi application chạy, cần đưa password vào để kích hoạt application role Nếu Sue cố đăng nhập vào SQL server khơng thơng qua ứng dụng ta truy xuất vào hai bảng Products Orders Course ILT Các loại quyền (Permissions) Khi đối tượng tạo ra, có owner ( người tạo đối tượng) có quyền truy xuất đối tựong Owner phải cấp quyền cho user khác User phải có quyền thích hợp để thực thi hoạt động liên quan đến việc thay đổi định nghĩa DB hay truy xuất liệu Có loại quyền • Object Permissions • Statement Permissions • Implied Permissions Tất quyền SQL server tồn trạng thái sau: granted ( cấp quyền), revoked (thu hồi) denied (từ chối) Course ILT Object Permissions (Quyền đối tượng) Ngay DB tạo, user cần cho quyền để làm việc với liệu lưu trữ DB Có lọai quyền object : – SELECT: cho phép user đọc liệu từ bảng hay view – INSERT: cho phép user thêm hàng vào bảng – UPDATE: cho phép user sửa đổi liệu có bảng, nhiên user khơng thể thêm hay xóa hàng bảng – DELETE: cho phép user quyền xóa hàng bảng – REFERENCES bảng kết với thơng qua khóa ngọai (foreign key) quyền REFERENCES cho phép user chọn liệu từ bảng primary mà khơng cần có quyền SELECT bảng foreign – EXECUTE: cho phép user thực thi thủ tục mà user cấp quyền Course ILT Statement Permissions Quyền lệnh Cho phép họat động liên quan đến việc tạo DB hay đối tượng DB bảng, thủ tục Các quyền lệnh đươc áp dụng cho lệnh cho thân đối tượng Các Statement permissions – – – – – – – – – BACKUP DATABASE BACKUP LOG CREATE DATABASE CREATE DEFAULT CREATE FUNCTION CREATE PROCEDURE CREATE RULE CREATE TABLE CREATE VIEW Course ILT Implied Permissions Quyền ngầm định Implied permissions kiểm sóat họat động mà thực thành viên role hệ thống (như sysadmin, ) owner đối tượng CSDL Các owner đối tượng DB có quyền ngầm định cho phép họ thực thi tất hoạt động với đối tượng mà họ chủ Course ILT Data Control Language Có thể dùng lệnh DCL(Data Control Language) để thay đổi quyền có liên quan đến user hay role DB Có lệnh DCL : • GRANT • REVOKE • DENY Course ILT Data Control Language Lệnh GRANT cho phép user, group hay role làm việc với lệnh liệu hay thực thi lệnh TSQL Cú pháp: Statement permissions: GRANT { ALL | statement [ , n ] } TO security_account [ , n ] Object permissions: GRANT { ALL | permission [ , n ] } { [ ( column [ , n ] ) ] ON { table | view } | ON { table | view } [ ( column [ , n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } } TO security_account [ , n ] [ WITH GRANT OPTION ] [ AS { group | role } ] Course ILT Data Control Language ALL: quyền lệnh (statement permission), ALL dùng thành viên sysadmin Đối với quyền đối tượng (object permissions), ALL dùng thành viên sysadmin, db_owner owner đối tượng CSDL WITH GRANT OPTION (chỉ dùng cho quyền đối tượng) cho khả tài khoản sau gán quyền phép cấp quyền cho tài khoản khác Ví dụ: Use pubs GRANT select, insert, update ON titles TO faculty Data Control Language (Contd.) Course ILT Lệnh Deny để loại bỏ quyền khỏi tài khoản CSDL hành để tránh tài khoản thừa hưởng quyền nhóm hay role tài khoản Cú pháp: DENY [ON ]TO Ví dụ: Use pubs DENY select, insert, update ON titles TO faculty Lệnh REVOKE dùng để thu hồi lại quyền đuợc cấp hay từ chối từ user CSDL hành Cú pháp REVOKE [GRANT OPTION FOR] [ON ] TO Ví dụ: REVOKE select, insert, update ON titles TO faculty Giải xung đột quyền Course ILT Các quyền cấp cho nhóm hay role kế thừa thành viên nhóm hay role Mặc dù user có quyền grant hay revoke mức bị xung đột mức cao làm cho user bị ngăn hay cho phép truy xuất đến đối tượng Deny: quyền deny ưu tiên Quyền deny bất kỷ mức cấm quyền đối tượng có tồn quyền grant hay revoke dành cho user hay khơng Ví dụ John thành viên role sales, role cấp quyền SELECT bảng Customer, John bị cấm (deny) cách tường minh quyền SELECT bảng Customer John khơng cịn truy xuất vào bảng Tương tự, nều role sales bị cấm truy xuất bảng customer John cấp quyền truy xuất bị cấm theo Lưu ý: SQL Server xử lý quyền bị cấm trước Nếu bạn deny quyền vào role public có nghĩa bạn cấm người truy xuất đến đối tượng kể người tạo lệnh DENY Giải xung đột quyền Course ILT Revoke: thu hồi quyền cấp bị từ chối mức thu hồi ( user, group hay role) Cùng quyền mà cấp hay cấm mức khác chẳng hạn group hay role chứa user quyền group hay role đựoc áp dụng Ví dụ: role sale cấp quyền SELECT bảng Customer John (thành viên sales) bị thu hồi cách tường minh quyền SELECT bảng customer, truy xuất bảng thành viên role sales Để tránh cho John không truy xuất vào bảng customer phải thực cách sau: – Thu hồi quyền (giả thiết John khơng có quyền khác cấp khác) – Cấm quyền vào role sales ( cấm tất thành viên sales không truy xuất vào bảng) – Cấm cách tường John quyền SELECT bảng customer Course ILT Giải xung đột quyền Grant: xóa quyền bị cấm bị thu hồi mức cấp Cùng quyền mà bị cấm mức khác chẳng hạn mức group hay role quyền cịn áp dụng Ví dụ quyền thu hồi dành cho role sales kết hợp với quyền cấp cho John cho John quyền cấp Vì vậy, user nhận tổ hợp tất quyền cấp, cấm hay thu hồi đối tượng quyền bị cấm ưu tiên