Cơ sở dữ liệu - Chương 10: Bảo mật trong SQL server

Cơ sở dữ liệu - Chương 10: Bảo mật trong SQL server 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 lọa database

pdf94 trang | Chia sẻ: huyhoang44 | Lượt xem: 952 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Cơ sở dữ liệu - Chương 10: Bảo mật trong SQL server, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
GV Phi Loan - Khoa CNTT – HUI 1 GV Phi Loan - Khoa CNTT – HUI Nội dung ◦ Các tính chất bảo mật của SQL Server ◦ Tài khoản đăng nhập (user login) ◦ Phân biệt user login và 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 quyết xung đột giữa các quyền 2 GV Phi Loan - Khoa CNTT – HUI • Information is an organizational asset, and, according to its value and scope, must be organized, inventoried, and secured . . . . • If SQL Server is the box, then this part is about padlocking the box to keep out those who should be out, while extending welcome to those who should be allowed in. 3 GV Phi Loan - Khoa CNTT – HUI Ba ̉o mâ ̣t SQL server • Bao gôm̀ nhiều bước liên quan đêń 4 vùng chính sau: – Platform – Authentication – Objects (including data) – Applications that access the system 4 GV Phi Loan - Khoa CNTT – HUI Ba ̉o mâ ̣t các file hê ̣ thống của SQL server • Ha ̣n chế việc truy xuất đêń các file hệ thống của SQL server. • Các cấp ba ̉o mâ ̣t: – Ba ̉o mâ ̣t các file dữ liê ̣u và log – Ba ̉o mâ ̣t các đối tượng (object) trong DB – Ba ̉o mâ ̣t các application • Mã hóa và chư ́ng thực (encryption and certificate) 5 GV Phi Loan - Khoa CNTT – HUI Principal va ̀ securables • Principals là các thực thể có thể yêu cầu tài nguyên của SQL Server, có thê ̉ được phân cấp (hierarchy). Phạm vi a ̉nh hưởng của principal phu ̣ thuô ̣c vào định nghĩa giới ha ̣n cu ̉a principal. • Môĩ principal có mô ̣t mã số bảo mâ ̣t khác nhau (security identifier SID). 6 GV Phi Loan - Khoa CNTT – HUI Ví du ̣ về Principal • Windows Login: là 1 principal nho ̉ nhất (indivisible ) • Windows Group là 1 principal da ̣ng tâ ̣p hợp. (collection) 7 GV Phi Loan - Khoa CNTT – HUI Phân cá̂p các principal • Windows-level principals: Windows Domain Login Windows Local Login • SQL Server-level principal: SQL Server Login • Database-level principals: Database User Database Role Application Role 8 GV Phi Loan - Khoa CNTT – HUI Principal và securables • “Securables” là server, database, và các đó̂i tượng thuộc về database • Ví dụ: – User – Database role – Server role – Type – XML schema ,. 9 GV Phi Loan - Khoa CNTT – HUI 10 GV Phi Loan - Khoa CNTT – HUI Cơ chế bảo mật • Từ SQL 2005, có 1 sự thay đỏ̂i lớn về bảo mâ ̣t so với các phiên ba ̉n trươ ́c. • Chiến lược “secure by design, secure by default, and secure in deployment” dùng đê ̉ ba ̉o vê ̣ server và các database khỏi bị tấn công (security attacks) 11 GV Phi Loan - Khoa CNTT – HUI Cơ chế bảo mật • Để kiểm soát việc truy xuất vào tài nguyên SQL Server, có 2 cơ chế bảo mâ ̣t: – Authentication: là 1 quy trình dùng để xác nhâ ̣n mô ̣t ai đó có pha ̉i thực sự chính là ho ̣ không. Thường quy trình này liên quan đến username và password – Authorization: dùng đê ̉ tìm xem mô ̣t người sau khi đã được nhâ ̣n da ̣ng có quyêǹ ưu tiên sử dụng tài nguyên ở cấp nào? 12 GV Phi Loan - Khoa CNTT – HUI Các loại tài khoản đăng nhập • SQL Server 2012 hỏ̂ trợ các loại tài khoa ̉n login sau: – Windows-authenticated login – SQL Server–authenticated login – Certificate – Asymmetric key • Mô ̣t principal pha ̉i có quyền (permission) ALTER ANY LOGIN mới có thê ̉ tạo được tài khoa ̉n login SQL. 13 GV Phi Loan - Khoa CNTT – HUI Các mư ́c bảo mật 14 GV Phi Loan - Khoa CNTT – HUI Hai mode Authentication • Windows Authentication: cho phép user truy xuât́ vào SQL server thông qua tài khoa ̉n của Windows • Mixed Mode Authentication: cho phép người dùng truy xuất vào SQL server bằng cả 2 loại tài khoa ̉n: Windows và tài khoa ̉n riêng của SQL server • Để thay đô ̉i mode đăng nhâ ̣p vào SQL server: – Mở server Properties, – Chọn trang Security 15 GV Phi Loan - Khoa CNTT – HUI Các tài khoản đăng nhập mặc đi ̣nh (Default login) • SQL Server ta ̣o 2 tài khoa ̉n mă ̣c định ngay ta ̣i thời điê ̉m cài đă ̣t và cấp quyền ưu tiên cao nhất – quyền qua ̉n trị cho hai tài khoa ̉n này. Tài khoa ̉n sa cho phép truy xuất vào SQL server bằng mode mixed authentication. Tài khoa ̉n BUILTIN\Administrators cho phép mo ̣i thành viên trong nhóm administrator truy xuất vào SQL server bằng mode Windows authentication 16 GV Phi Loan - Khoa CNTT – HUI Windows Authentication mode • Mode xác thực bằng Windows ma ̣nh hơn mode hôn hợp (mixed Mode) vì ngươ ̀i dùng không câǹ thêm password và nó liên quan đến ba ̉o mâ ̣t của ca ̉ ma ̣ng. • Xác thực băǹg Windows không chỉ xác thực ngươ ̀i dùng riêng lẻ của Windows mà còn xác thực ca ̉ ngươ ̀i dùng trong nhóm ngươ ̀i dùng (user group) của Windows. – Khi 1 user group nào đó được chấp nhâ ̣n như SQL Server login, thì ngươ ̀i dùng nào thuộc nhóm user này đêù có thê ̉ được xác thực bởi SQL Server. 17 GV Phi Loan - Khoa CNTT – HUI Các loại tài khoản trong SQL server • Cần phân biệt Login ID và user ID: – Login ID đê ̉ thực hiện cơ chế́ Authentication. Người dùng muốn truy xuất vào hệ thống SQL Server, thì phải có login ID và password. Nhưng login ID chính nó không cho phép nguời dùng quyền truy xuất đến các DB. – User ID thực hiện cơ chế Authorization. User ID nhận dạng người dùng trong 1 DB. Tất cả các quyền và chủ quyền của các đối tượng trong DB đều được điều khiển bởi user ID 18 GV Phi Loan - Khoa CNTT – HUI Login ID và user ID • Một login ID phải kết hợp với 1 user ID trong mỗi DB để có thê ̉ truy xuất dữ liệu trong DB. Nếu login ID không được kết hợp tường minh với 1 user ID thì nó sẽ kết hợp với user ID là guest. Nếu DB không có user ID guest thì không thể truy xuất vào DB được • Việc quản trị sẽ dễ dàng hơn nếu login ID và user ID giống nhau nhưng điều này không bắt buộc. 19 GV Phi Loan - Khoa CNTT – HUI Authentication & Authorization • Tài khoản đăng nhập (Login ID) sẽ được ánh xạ với tài khoản user ( user ID) để cho phép user được quyền truy xuất trong 1 DB. Quá trình này gọi là authorization (hay permission validation). • User sẽ không thể truy xuất vào DB ngay cả khi họ có tài khoản đăng nhập (login ID) hợp lệ. 20 GV Phi Loan - Khoa CNTT – HUI Bảo mật trong CSDL server 21 the Mgr125 login corresponds to User A in the Employees database and to User D in the Products database. These privileges permit the login to connect to the database(s), but they do not give the user any privileges against objects in those databases GV Phi Loan - Khoa CNTT – HUI Tạo tài khoản đăng nhập Login ID • Hai da ̣ng login ID: – Dùng tài khoản đăng nhập của chính Windows làm tài khoản đăng nhập vào SQL server. – Tạo 1 tài khoản đăng nhập của riêng SQL server 22 GV Phi Loan - Khoa CNTT – HUI Thêm tài khoản đăng nhập mới bằng Windows (Windows login) • Ta ̣o sẵn trước account của Windows • Nhâṕ pha ̉i ta ̣i folder Security\Login, cho ̣n New Login • Nhâṕ nút Search để tìm account của Windows • Hoă ̣c dùng lê ̣nh: CREATE LOGIN [\] FROM WINDOWS; • Vd: create login [philoan\dhth5] from windows 23 GV Phi Loan - Khoa CNTT – HUI Tạo tài khoản của SQL server • Chỉ có người quản tri (administrator) mới có quyền tạo login ID mới. • Nhâṕ phải ta ̣i folder Security\Login, chọn New Login • Tạo login của SQL server CREATE LOGIN WITH PASSWORD = '' [MUST_CHANGE] 24 GV Phi Loan - Khoa CNTT – HUI Thay đổi các thuộc tính cu ̉a tài khoản server • Lệnh ALTER LOGIN cho phép thay đô ̉i các thuô ̣c tính của tài khoản SQL Server ALTER LOGIN login_name { | WITH [ ,... ] Với ::= ENABLE | DISABLE Và ::= PASSWORD = 'password‘ [ OLD_PASSWORD = 'oldpassword] Ví du ̣: ALTER LOGIN user2 with password='56789' old_password='12345' 25 GV Phi Loan - Khoa CNTT – HUI Mã hóa - Encryption • Encryption không gia ̉i quyết vấn đề kiểm soát truy xuất nhưng nó hạn chế được viê ̣c mât́ mát thông tin khi viê ̣c kiê ̉m soát truy xuất bị bỏ qua. • Ví dụ: nếu máy tính chư ́a CSDL bị cấu hình sai, nếu hacker có được thông tin nha ̣y cảm chă ̉ng ha ̣n là số thẻ tín dụng thì thông tin bị đánh cắp này cũng sẽ trở nên vô dụng nếu bị mã hóa. 26 GV Phi Loan - Khoa CNTT – HUI Tạo login từ Certificate • Certificates là các “khóa phần mềm” được chia sẻ giư ̃a 2 server cho phép trao đỏ̂i thông tin ba ̉o mật giư ̃a 2 server này. • Ví dụ: CREATE CERTIFICATE Dan_Bacon WITH SUBJECT = 'Dan Bacon certificate in master DB’, EXPIRY_DATE = '01/01/2018'; CREATE LOGIN Dan_Bacon FROM CERTIFICATE Dan_Bacon; 27 GV Phi Loan - Khoa CNTT – HUI Xem/Xóa/Cá̂m tài khoản login • Xem tài khoản login select * from sys.server_principals • Enable/disable tài khoa ̉n login ALTER LOGIN sql_user_a DISABLE; • Câḿ tài khoa ̉n đăng nhâ ̣p ALTER LOGIN sql_user_a DISABLE; • Xóa tài khoa ̉n đăng nhâ ̣p DROP LOGIN 28 GV Phi Loan - Khoa CNTT – HUI Credential là gì? • Credential là 1 ba ̉n ghi chư ́a thông tin xác thực (credentials) được dùng đê ̉ kết nối với tài nguyên bên ngoài SQL Server. Thông tin này chỉ dùng nô ̣i bô ̣ trong SQL Server. • Hâù hềt các credential đêù chứa tài khoản và password của Windows. 29 GV Phi Loan - Khoa CNTT – HUI Credential là gì? • Thông tin của credential cho phép ngươ ̀i dùng đang kết nôí vơ ́i SQL Server bằng tài khoa ̉n của SQL Server được quyền truy xuât́ đến tài nguyên bên ngoài server. Khi tài nguyên bên ngoài là Windows, thì ngươ ̀i dùng được xác thực như thể ngươ ̀i dùng của Windows (đã được xác định trong credential). • Mô ̣t credential có thể được gán cho nhiều tài khoa ̉n đăng nhâ ̣p của SQL Server logins. Nhưng mô ̣t tài khoa ̉n SQL Server login chỉ có thể được gán cho 1 credential. 30 GV Phi Loan - Khoa CNTT – HUI Tạo Credential • Nhâṕ pha ̉i ta ̣i folder Security\Credentials, cho ̣n lệnh New Credential • Hoă ̣c dùng lệnh: CREATE CREDENTIAL credential_name WITH IDENTITY = 'identity_name' [ , SECRET = 'secret' ] Identity là tên của tài khoản được dùng đê ̉ kết nối ra bên ngoài, thươ ̀ng là tài khoa ̉n Windows SECRET: là password dùng để xác thực khi nối ra bên ngoài 31 GV Phi Loan - Khoa CNTT – HUI Ví dụ tạo credential • Gia ̉ sử đã có 1 tài khoa ̉n đăng nhâ ̣p bằng Windows tên Philoan\Philoan • Ta ̣o 1 credential dùng tài khoa ̉n này CREATE CREDENTIAL Loan WITH IDENTITY = ‘Philoan\Philoan’ SECRET =‘12345’ 32 GV Phi Loan - Khoa CNTT – HUI Tạo tài khoản SQL server gán vơ ́i credential CREATE LOGIN WITH PASSWORD = '', CREDENTIAL = ; Ví du ̣: CREATE LOGIN test1 WITH PASSWORD=‘12345’ CREDENTIAL = ‘Loan’ 33 GV Phi Loan - Khoa CNTT – HUI Một số lệnh kiểm tra • xp_loginconfig : kiểm tra mode xác thực • sp_validatelogins: xác định các tài khoa ̉n (Orphaned Windows users) bao gò̂m mã SID và tên tài khoản. – Khi 1 tài khoa ̉n Windows được dùng làm tài khoản đăng nhâ ̣p của SQL Server bị xóa, thì tài khoa ̉n này không còn hợp lê ̣ nư ̃a. 34 GV Phi Loan - Khoa CNTT – HUI Một số lệnh kiểm tra • Để xem danh sách các principal hiện có của server: SELECT Name, SID FROM sys.server_principals 35 GV Phi Loan - Khoa CNTT – HUI Tạo user cho DB hiện hành CREATE USER user_name [ FOR LOGIN login_name] Để thêm 1 tài khoa ̉n đăng nhâ ̣p của 1 người dùng mới vào CSDL hiê ̣n hành. • Chi ̉ có dbo và thành viên của sysadmin mới được quyêǹ ta ̣o tài khoản DB mới 36 GV Phi Loan - Khoa CNTT – HUI Tạo user cho DB hiện hành • Nếu không dùng FOR LOGIN, user mới sẽ được ánh xạ vơ ́i tài khoa ̉n SQL Server cùng tên. • Không thể ta ̣o user guest vì guest đã có sẵn bên trong mõ̂i DB. 37 GV Phi Loan - Khoa CNTT – HUI Ví dụ tạo user cho DB CREATE LOGIN abc WITH PASSWORD = ‘12345'; USE Toyworld; CREATE USER abc FOR LOGIN abc; 38 GV Phi Loan - Khoa CNTT – HUI Xóa user cho DB hiện hành • Để xoá tài khoản ra khỏi CSDL: DROP USER username • Ví dụ : DROP USER ‘Student’ 39 GV Phi Loan - Khoa CNTT – HUI Orphaned user • Orphaned user là 1 database user tương đương với 1 tài khoản SQL login nào đó mà tài khoa ̉n này đã bị xóa. • Để phát hiện orphaned users trong 1 CSDL: 40 GV Phi Loan - Khoa CNTT – HUI Role là gì? • 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 đó. • Mọi thành viên trong nhóm sẽ có quyền như nhau. Nếu chức năng của nhóm thay đổi, chỉ cần thay đổi quyền của nhóm, những thay đổi này sẽ được tự động áp dụng cho tất cả các thành viên trong nhóm. 41 GV Phi Loan - Khoa CNTT – HUI Vai trò của role • Mỗi role những quyền hạn (permission) khác nhau và chứa 1 hay nhiều thành viên – Nếu công việc thay đổi. chỉ cần thay đổi quyền trong mỗi role  thay đổi sẽ tự động được áp dụng cho toàn bộ các thành viên của role đó. • Các user có thể là thành viên của nhiều role khác nhau 42 GV Phi Loan - Khoa CNTT – HUI Các loại User Roles • 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 roles đã được định nghĩa sẵn trong SQL Server: • Fixed Server Roles • Database Roles 43 GV Phi Loan - Khoa CNTT – HUI Fixed Server Roles • Server roles enable you to simplify the assignment of permissions at the database instance level. • Có 9 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 44 GV Phi Loan - Khoa CNTT – HUI Fixed Server Roles 1. sysadmin: quyền tối đa mà không bị bất kz 1 hạn chế nào. Mặc định, tất cả các thành viên của Administratorsvà sa thuộc vào server role này 2. 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. 3. setupadmin: có quyền thực thi replication và quản trị các thủ tục (extended stored procedures). 4. securityadmin: điều hành bảo mật như tạo login và gán quyền. 45 GV Phi Loan - Khoa CNTT – HUI Fixed Server Roles 5. processadmin: có quyền kết thúc các tiến trình được gọi không hợp lệ 6. dbcreator: tạo và chỉnh sửa database 7. diskadmin: 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 8. bulkadmin: thực hiện lệnh BULK INSERT 9. Public: All SQL Server logins are members of this role. You can alter the permissions assigned to this role, but you cannot alter the membership of the role. 46 GV Phi Loan - Khoa CNTT – HUI Quyền của thành viên server role • Một thành viên của bất kz server role nào đều có thể thêm các user khác vào chính server role đó. 47 GV Phi Loan - Khoa CNTT – HUI Thay đổi thành viên cu ̉a server role • Dùng lệnh ALTER SERVER ROLE với các tùy chọn sau để thay đỏ̂i thành viên của server role: – ADD MEMBER : thêm 1 server principal – DROP MEMBER: xóa 1 server principal. • Ví dụ: ALTER SERVER ROLE serveradmin ADD MEMBER "contoso\domain_group_b"; 48 GV Phi Loan - Khoa CNTT – HUI Một số lệnh về server role • sp_helpsrvrole : cung câṕ 1 danh sách các fixed server roles • sp_helpsrvrolemember : cho xem các thành viên của 1 fixed server role nào đó • sp_srvrolepermission: cho xem quyền (permission) của 1 fixed server role • IS_SRVROLEMEMBER : cho phép kiểm tra 1 tài khoa ̉n SQL Server có pha ̉i là thành viên của fixed server role không • sys.server_role_members : cung câṕ thông tin về thành viên của role 49 GV Phi Loan - Khoa CNTT – HUI User-Defined Server Roles • Là 1 tính năng mới của SQL Server 2012. • Có thê ̉ tạo 1 server role của người dùng khi server roles hiện có không phù hợp với yêu cầu đă ̣c biê ̣t của người dùng. • Các bước ta ̣o user-defined server role – Creating the user-defined server role – Granting server-level permissions to the role – Adding SQL Server logins to the role 50 GV Phi Loan - Khoa CNTT – HUI Ví dụ • Ta ̣o 1 server role quản l{ tài khoa ̉n BenMiller USE master; CREATE SERVER ROLE buyers AUTHORIZATION BenMiller; GO 51 GV Phi Loan - Khoa CNTT – HUI 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. 52 GV Phi Loan - Khoa CNTT – HUI Database roles • 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 53 GV Phi Loan - Khoa CNTT – HUI Fixed Database Roles DatabaseRole Mô tả db_owner Có tất cả các quyền trong DB db_accessadmin Thêm hay xóa các user ID db_securityadmin Quản lý tất cả các role và permission trong DB,có thể thay đổi chủ quyềnower (ownership) db_ddladmin Có thể thực hiện tất cả các lệnh DDL nhưng không thể sử dụng các lệnh GRANT, REVOKE hay DENY db_backupoperator Có thể thực hiện các lệnh DBCC, CHECKPOINT và BACKUP. 54 GV Phi Loan - Khoa CNTT – HUI Fixed Database Roles DatabaseRole Mô tả db_datareader Có thể chọn tất cả dữ liệu từ bất kỳ bảng của user nào trong DB db_datawriter Có thể chỉnh sửa bất kỳ dữ liệu trong các bảng của user trong DB. db_denydatareade r Không thể chọn tất cả dữ liệu từ bất kỳ bảng của user nào trong DB db_denydatawriter Không thể chỉnh sửa bất kỳ dữ liệu trong các bảng của user trong DB. 55 GV Phi Loan - Khoa CNTT – HUI Fixed Server Roles • Mỗi user trong DB đều thuộc về role public. – Nếu 1 user chưa được cấp quyền đặc biệt gì thì sẽ thuô ̣c role public. • Bất kz thành viên nào của fixed database role đều có thể thêm các user khác vào role của thành viên đó 56 GV Phi Loan - Khoa CNTT – HUI Thêm thành viên vào DB role • 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 kz quyền nào của role đó. sp_addrolemember [ @rolename = ] 'role' , [ @membername = ] 'security_account' 57 GV Phi Loan - Khoa CNTT – HUI 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 kz role database cố định nào. SQL server cho phép tạo các database role tuz biến (custom) • Khi tạo một role database tùy biến, cần thêm các quyền vào role trước , sau đó sẽ gán các user vào role. 58 GV Phi Loan - Khoa CNTT – HUI Tạo role tùy biêń • Lệnh CREATE ROLE vơ ́i tùy chọn AUTHORIZATION sẽ cấp quyền sở hữu (ownership) role này cho 1 principal nào đó. • Nếu không có tùy cho ̣n AUTHORIZATION, thì role sẽ được sở hữu bới chính principal thực hiện lệnh ta ̣o role. 59 GV Phi Loan - Khoa CNTT – HUI Ví dụ tạo role tùy biêń • Ta ̣o role do kim_alert quản l{ • Câṕ quyền cho role 60 GV Phi Loan - Khoa CNTT – HUI Ví dụ tạo role tùy biêń • Gán quyền cho role 61 GV Phi Loan - Khoa CNTT – HUI Xem danh mục user và role • Các view chư ́a thông tin về about users, roles, và permissions ở mư ́c database – sys.database_principals – sys.database_role_members – sys.database_permissions. 62 GV Phi Loan - Khoa CNTT – HUI Tạo DB role tuz biến • Dùng lệnh sp_addrole [ @rolename = ] 'role' [ , [ @ownername = ] 'owner' ] • 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' 63 GV Phi Loan - Khoa CNTT – HUI Vai trò của Application Roles • Application roles cho phép truy xuất đêń dư ̃ liê ̣u khi người dùng kết nối đêń DB thông qua 1 ư ́ng dụng nào đó. 64 GV Phi Loan - Khoa CNTT – HUI Application Roles • Application role không có member (thành viên) như các role khác. 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 nguời dùng đó là thành viên của application role. • Mặc định application role không hoạt động ( inactive) và đòi hỏi password khi được kích hoạt. 65 GV Phi Loan - Khoa CNTT – HUI Kết nối với 1 application role 1. Ngươ ̀i dùng cha ̣y ư ́ng dụng . Ư ́ng dụng này kết nối đền SQL Server. 2. Ứng dụng sẽ cha ̣y thu ̉ tục sp_setapprole để kích hoạt application role. 3. Khi application hoa ̣t đô ̣ng thì làm mât́ đi các permission khác của ngươ ̀i dùng, chỉ còn các permission của application role. 4. Các quyền có được thông qua application role sẽ được duy trì trong suốt thơ ̀i gian kết nối cho đến khi disconnect hoă ̣c dùng lệnh sp_unsetapprole vơ ́i cookie để quay la ̣i session trươ ́c đó. 66 GV Phi Loan - Khoa CNTT – HUI Tạo application role • Nhấp pha ̉i tại security\Role\Application Role, cho ̣n lệnh New application của DB • Hoă ̣c Tạo 1 application role cho DB hiện hành CREATE APPLICATION ROLE application_role_name WITH PASSWORD = 'password' Ví du ̣: USE Toyworld CREATE APPLICATION ROLE ‘L1’ WITH PASSWORD =‘’l1’ 67 GV Phi Loan - Khoa CNTT – HUI Kích hoạt 1 application role sp_setapprole [@rolename =] 'role' , [@password =] 'password‘ [ , [ @fCreateCookie = ] true | false ] [ , [ @cookie = ] @cookie OUTPUT ] • 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 68 GV Phi Loan - Khoa CNTT – HUI Kích hoạt 1 application role • Cookie chứa thông tin trươ ́c khi application role được kích hoa ̣t. Cookie được dùng cho lệnh sp_unsetapprole để quay về session trươ ́c đó và ngừng hoạt động của application role • @fCreateCookie = xác định cookie có được tạo cùng lúc kích hoạt application hay không, (true  1, false  0) • @cookie OUTPUT dùng để xác định cookie kiểu varbinary(8000) 69 GV Phi Loan - Khoa CNTT – HUI Ví dụ về kích hoạt application role DECLARE @cookie varbinary(8000); EXEC sp_setapprole ‘l1', ‘l1' , @fCreateCookie = true, @cookie = @cookie OUTPUT; -- Application role đang hoa ̣t động SELECT USER_NAME(); -- xem tên application role --Ngưng hoa ̣t đô ̣ng application role và quay về session trước đó EXEC sp_unsetapprole @cookie; SELECT USER_NAME(); -- This will return the name of the original user. GO 70 GV Phi Loan - Khoa CNTT – HUI Ví dụ • Sue đang chạy ứng dụng Sales mà ứng dụng này yêu cầu các quyền SELECT, UPDATE và INSERT vào các bảng Products và Orders trong CSDL Sales, nhưng cô ta lại không có các quyền này khi truy xuất trực tiếp vào hai bảng trên khi dùng cửa sổ Query hay các công cụ khác của SQL. • Hãy phân quyền thích hợp cho Sue 71 GV Phi Loan - Khoa CNTT – HUI Ví dụ • Tạo 1 Database role cấm các quyền SELECT, INSERT và UPDATE trên bảng Products và Orders, và thêm Sue vào như là thành viên của role đó. Sau đó tạo 1 application role trong database Sales với các quyền SELECT, INSERT và UPDATE trên các bảng Products và 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 thì cô ta không thể nào truy xuất vào được hai bảng Products và Orders 72 GV Phi Loan - Khoa CNTT – HUI Least Privilege • The principle of least privilege is a principle of information security that dictates granting a security principal only those privileges that are necessary to perform required tasks. 73 GV Phi Loan - Khoa CNTT – HUI Privileges (permissions) • Mỗi user account trong 1 database có thể được câṕ (granted) mô ̣t số quyền(privileges hay permissions). • Có 3 loa ̣i quyền trong Microsoft SQL – Server privileges (Implied Permissions ): include such permissions as starting up, shutting down, and backing up the SQL server, – Statement privileges: include such permissions as creating a database and creating a table. – Object privileges allow specific actions on a specific object, such as allowing select and update on table T1 74 GV Phi Loan - Khoa CNTT – HUI Các loại 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ựong. 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 kz hoạt động nào liên quan đến việc thay đổi định nghĩa DB hay truy xuất dữ liệu • 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). 75 GV Phi Loan - Khoa CNTT – HUI 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 lọai quyền object : – SELECT: cho phép user đọc dữ liệu từ 1 bảng hay view – INSERT: cho phép user thêm các hàng mới vào bảng – UPDATE: cho phép user sửa đổi dữ liệu hiện có trong bảng, tuy nhiên user không thể thêm hay xóa các hàng trong bảng được 76 GV Phi Loan - Khoa CNTT – HUI Object Permissions (Quyền về đối tượng) • DELETE: cho phép user được quyền xóa các hàng trong bảng • REFERENCES khi 2 bảng kết với nhau thông qua khóa ngọai (foreign key) quyền REFERENCES cho phép user chọn dữ liệu từ bảng primary mà không cần có quyền SELECT trên bảng foreign • EXECUTE: cho phép user thực thi thủ tục mà user được cấp quyền 77 GV Phi Loan - Khoa CNTT – HUI BACKUP DATABASE BACKUP LOG CREATE DATABASE CREATE DEFAULT CREATE FUNCTION Statement Permissions Quyền về lệnh • Cho phép các họat độ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à 78 CREATE PROCEDURE CREATE RULE CREATE TABLE CREATE VIEW GV Phi Loan - Khoa CNTT – HUI Implied Permissions Quyền ngầm định • Implied permissions kiểm sóat các họat độ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ủ 79 GV Phi Loan - Khoa CNTT – HUI Data Control Language • Có thể dùng các lệnh DCL(Data Control Language) để thay đổi các quyền có liên quan đến user hay role của DB. • Có 3 lệnh DCL : • GRANT • REVOKE • DENY 80 GV Phi Loan - Khoa CNTT – HUI Data Control Language • Câṕ quyền về lệnh (Statement permissions): GRANT { ALL | statement [ ,...n ] } TO security_account [ ,...n ] 81 GV Phi Loan - Khoa CNTT – HUI Data Control Language Cấp quyền về đối tượng (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 ] 82 GV Phi Loan - Khoa CNTT – HUI Data Control Language • ALL: đối với quyền về lệnh (statement permission), thì ALL chỉ có thể được dùng bởi các thành viên của sysadmin. Đối với quyền về đối tượng (object permissions), ALL chỉ được dùng bởi các thành viên của sysadmin, db_owner và owner của đối tượng CSDL. 83 GV Phi Loan - Khoa CNTT – HUI Data Control Language • WITH GRANT OPTION (chỉ dùng cho quyền về đối tượng) cho khả năng các tài khoản sau khi được gán quyền được phép cấp quyền này cho các tài khoản khác • Ví dụ: Use pubs GRANT select, insert, update ON titles TO faculty 84 GV Phi Loan - Khoa CNTT – HUI Data Control Language (Contd.) • Lệnh Deny để loại bỏ quyền khỏi 1 tài khoản trong CSDL hiện hành và để tránh tài khoản này được thừa hưởng quyền của nhóm hay role của tài khoản đó. • Cú pháp: DENY [ON ]TO • Ví dụ: Use pubs DENY select, insert, update ON titles TO faculty 85 GV Phi Loan - Khoa CNTT – HUI Data Control Language (Contd.) • Lệnh REVOKE dùng để thu hồi lại quyền đã đuợc cấp hay từ chối từ 1 user của CSDL hiện hành • Cú pháp REVOKE [GRANT OPTION FOR] [ON ] TO • Ví dụ: REVOKE select, insert, update ON titles TO faculty 86 GV Phi Loan - Khoa CNTT – HUI Giải quyết xung đột các quyền • Các quyền được cấp cho 1 nhóm hay 1 role sẽ được kế thừa bởi các thành viên của nhóm hay role đó. Mặc dù user có thể có quyền grant hay revoke 1 mức nào đó nhưng có thể bị xung đột ở mức cao hơn làm cho user có thể bị ngăn hay cho phép truy xuất đến 1 đối tượng. 87 GV Phi Loan - Khoa CNTT – HUI Giải quyết xung đột các quyền • Deny: quyền deny luôn ưu tiên hơn. Quyền deny ở bất kz mức nào cũng sẽ cấm các quyền trên các đối tượng bất kể có tồn tại quyền grant hay revoke dành cho user đó hay không. 88 GV Phi Loan - Khoa CNTT – HUI Giải quyết xung đột các quyền • Ví dụ: nếu John là thành viên của role sales, role này đã được cấp quyền SELECT trên bảng Customer, nếu John bị cấm (deny) 1 cách tường minh quyền SELECT trên bảng Customer thì John sẽ không còn được truy xuất vào bảng đó nữa. Tương tự, nếu role sales bị cấm truy xuất bảng customer thì dù cho John được cấp quyền truy xuất riêng cũng sẽ bị cấm theo. 89 GV Phi Loan - Khoa CNTT – HUI Giải quyết xung đột các quyền Lưu ý: SQL Server luôn xử lý các quyền bị cấm trước. Nếu bạn deny các quyền vào role public thì có nghĩa là bạn cấm mọi người truy xuất đến đối tượng đó kể cả người đã tạo ra lệnh DENY này 90 GV Phi Loan - Khoa CNTT – HUI Giải quyết xung đột các quyền • Revoke: chỉ thu hồi các quyền được cấp hoặc bị từ chối ở mức được thu hồi ( user, group hay role). Cùng 1 quyền đó mà được cấp hay cấm ở mức khác của 1 group hay 1 role chứa user đó thì quyền của group hay role đó vẫn đựợc áp dụng. 91 GV Phi Loan - Khoa CNTT – HUI Giải quyết xung đột các quyền • Ví dụ: nếu role sale được cấp quyền SELECT trong bảng Customer và John (thành viên của sales) đã bị thu hồi một cách tường minh quyền SELECT trên bảng customer, anh ta vẫn có thể truy xuất bảng đó do anh ta vẫn là thành viên của role sales. Để tránh cho John không truy xuất được vào bảng customer phải thực hiện 1 trong 3 cách sau: 92 GV Phi Loan - Khoa CNTT – HUI Giải quyết xung đột các quyền 1. Thu hồi quyền (giả thiết là John không có quyền nào khác ở cấp khác) 2. Cấm quyền vào role sales ( cấm tất cả các thành viên của sales không được truy xuất vào bảng) 3. Từ chôí 1 cách tường mình John quyền SELECT trên bảng customer. 93 GV Phi Loan - Khoa CNTT – HUI Giải quyết xung đột các quyền • Grant: xóa các quyền bị tư ̀ chối hoặc bị thu hồi ở mức được cấp. Cùng quyền này mà bị tư ̀ chối ở mức khác chẳng hạn mức group hay role thì các quyền này vẫn còn được áp dụng. Ví dụ quyền thu hồi dành cho role sales kết hợp với quyền được cấp cho John sẽ cho John quyền được cấp. • User nhận 1 tổ hợp của tất cả quyền được cấp, tư ̀ chôí hay thu hồi trên 1 đối tượng thì quyền bị tư ̀ chối sẽ ưu tiên hơn. 94

Các file đính kèm theo tài liệu này:

  • pdfchuong_10_ktcd_dbms_4194.pdf