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

Bảo mật SQL server

• Bao gồm nhiều bước liên quan đến 4 vùng

chính sau: – Platform – Authentication – Objects (including data) – Applications that access the system

4

GV Phi Loan - Khoa CNTT – HUI

Bảo mật các file hệ thống của SQL server • Hạn chế việc truy xuất đến các file hệ thống

của SQL server. • Các cấp bảo mật:

– Bảo mật các file dữ liệu và log – Bảo mật các đối tượng (object) trong DB – Bả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 và 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 ảnh hưởng của principal phụ thuộc vào định nghĩa giới hạn của principal.

• Mỗi principal có một mã số bảo mật khác

nhau (security identifier SID).

6

GV Phi Loan - Khoa CNTT – HUI

Ví dụ về Principal

• Windows Login: là 1 principal nhỏ nhất

(indivisible )

• Windows Group là 1 principal dạ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 bản trước.

• Chiến lược “secure by design, secure by

default, and secure in deployment” dùng để bả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ó phải thực sự chính là họ 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 dạng có quyền ư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 khoản

login sau: – Windows-authenticated login – SQL Server–authenticated login – Certificate – Asymmetric key

• Một principal phải có quyền (permission)

ALTER ANY LOGIN mới có thể tạo được tài khoả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 khoả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 khoản: Windows và tài khoả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 định (Default login) • SQL Server tạo 2 tài khoản mặc định ngay tại thời điểm cài đặt và cấp quyền ưu tiên cao nhất – quyền quản trị cho hai tài khoản này. Tài khoản sa cho phép truy xuất vào SQL server bằng mode mixed authentication. Tài khoản BUILTIN\Administrators cho phép mọ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 mạnh hơn mode hôn hợp (mixed Mode) vì người dùng không cần thêm password và nó liên quan đến bảo mật của cả mạng. • Xác thực bằng 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 cả 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 đều 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 dạ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)

• Tạo sẵn trước account của Windows • Nhấp phải tại folder Security\Login, chọn New

Login

• Nhấp 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ấp phải tạ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 củ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í dụ: ALTER LOGIN user2 with password='56789'

old_password='12345'

25

GV Phi Loan - Khoa CNTT – HUI

Mã hóa - Encryption

• Encryption không giả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 nhạy cảm chẳng hạ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 bả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 khoản login

ALTER LOGIN sql_user_a DISABLE;

• Cấm tài khoản đăng nhập

ALTER LOGIN sql_user_a DISABLE;

• Xóa tài khoản đăng nhập

DROP LOGIN

28

GV Phi Loan - Khoa CNTT – HUI

Credential là gì?

• Credential là 1 bả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ầu hềt các credential đều 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ối với SQL Server bằng tài khoả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 khoản đăng nhập của SQL Server logins. Nhưng một tài khoản SQL Server login chỉ có thể được gán cho 1 credential.

30

GV Phi Loan - Khoa CNTT – HUI

Tạo Credential

• Nhấp phải tại folder Security\Credentials, chọ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 khoả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

• Giả sử đã có 1 tài khoản đăng nhập bằng

Windows tên Philoan\Philoan

• Tạo 1 credential dùng tài khoả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í dụ: 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 khoản (Orphaned Windows users) bao gồm mã SID và tên tài khoản. – Khi 1 tài khoản Windows được dùng làm tài khoản đăng nhập của SQL Server bị xóa, thì tài khoả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 khoản đăng nhập của 1 người

dùng mới vào CSDL hiện hành.

• Chỉ có dbo và thành viên của sysadmin mới

được quyền tạ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 khoản SQL Server cùng tên.

• Không thể tạ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 khoả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 củ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ấp 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

khoản SQL Server có phải là thành viên của fixed server role không

• sys.server_role_members : cung cấp 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 tạ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ụ

• Tạo 1 server role quản l{ tài khoả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ến

• 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 chọn AUTHORIZATION,

thì role sẽ được sở hữu bới chính principal thực hiện lệnh tạo role.

59

GV Phi Loan - Khoa CNTT – HUI

Ví dụ tạo role tùy biến

• Tạo role do kim_alert quản l{

• Cấp quyền cho role

60

GV Phi Loan - Khoa CNTT – HUI

Ví dụ tạo role tùy biến

• 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 đến dữ

liệu khi người dùng kết nối đến 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 chạy ứng dụng . Ứng dụng này kết nối

đền SQL Server.

2. Ứng dụng sẽ chạy thủ tục sp_setapprole để kích

hoạt application role.

3. Khi application hoạ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 lại session trước đó.

66

GV Phi Loan - Khoa CNTT – HUI

Tạo application role

• Nhấp phải tại security\Role\Application Role,

chọ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í dụ: 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 hoạ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 hoạt động SELECT USER_NAME(); -- xem tên application role --Ngưng hoạ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ấp (granted) một số quyền(privileges hay permissions).

• Có 3 loạ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

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à

BACKUP DATABASE

CREATE PROCEDURE

BACKUP LOG

CREATE RULE

CREATE DATABASE

CREATE TABLE

CREATE DEFAULT

CREATE VIEW

CREATE FUNCTION

78

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ấp 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ối 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ối hay thu hồi trên 1 đối tượng thì quyền bị từ chối sẽ ưu tiên hơn.

94

GV Phi Loan - Khoa CNTT – HUI

Có thể bạn quan tâm