31
1 Chương 8 SECURITY

SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

1

Chương 8

SECURITY

Page 2: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

2

BẢO MẬT TRONG SQL SERVER

Bảo mật trong SQL Server gồm 3 lớp :– Login security : kiểm soát ai có thể log vào

SQL Server.– Database access security : kiểm soát ai có

thể truy cập vào một DB cụ thể trên server.– Permission security : kiểm soát một user có

thể thực hiện thao tác gì trên DB.

Page 3: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

3

BẢO MẬT TRONG SQL SERVER

Page 4: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

4

Login security

� Hai loại chứng thực1. Windows Authentication:

User chỉ cần ñược cấp account trong Windows 2000. SQL Server sẽ dựa vào Windows 2000 ñể chứng thực cho user. gọi là kết nối tin tưởng. Khi kết nối ñến SQL server theo cách này thì có nghĩa là ñược uỷnhiệm bảo mật của Windows

2. SQL Server Authentication: Người quản trịCSDL tạo ra tài khoản và password ñăng nhập của SQL server.

Page 5: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

5

– Như vậy, nếu các client không có phép log vào Windows 2000 nhưng vẫn có thể connect với SQL Server nếu có một SQL Server login account.

− Thông tin ñăng nhập ñược lưu trong bảng sysxlogins của CSDL master

− Khi dùng chế ñộ chứng thực SQLServer, một tài khoản ñăng nhập mặc ñịnh là sa , mật khẩu là null

Login security

Page 6: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

6

Login security

� Hai chế ñộ chứng thực:Mixed security Mode

Kết nối với SQL server 2000 bằng cách dùng Windows Authentication hoặc SQL server Authentication

Windows authentication modeChỉ có thể kết nối với SQL server 2000 bằng Windows Authentication, Windows NT kiểm tra an toàn tất cả các kết nối ñến SQL server

���� Thao tác : Chuyển ñổi chế ñộ chứng thực

Page 7: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

7

Page 8: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

8

� Tạo Login account Hai phương pháp ứng với hai loại chứng thực

a) Khai báo một Windows account : 2 cách – Dùng EM : Chọn Security.Login.New login– Dùng lệnh: sp_grantlogin ‘login’

b) Tạo mới một SQL login account : 2 cách – Dùng EM : Chọn Security.Login.New login– Dùng lệnh:

sp_addlogin ‘login’,’password’,’database_name’

Login security

Page 9: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

9

Login securityChú ý :� Khi tạo login account, có một thao tác là chọn một

default database. Việc chọn default database chỉ là thiết lập một default context cho user, chứ không phải là cấp quyền cho user trên database này.

� Trình cài ñặt SQL Server tự ñộng thiết lập hai Windows login account � Một cho built-in Windows 2000 Administrator group

� Một cho SQL Server service account.� Trình cài ñặt cũng tự ñộng tạo một SQL Server login

account gọi là sa cho các nhà quản trị hệ thống.

Page 10: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

10

Database access securitySau khi cấp login account ñể truy cập vào SQL Server, bạn cần cấp cho login account này quyền là một user truy cập một / nhiều database.

– SQL Server lưu các user của mỗi database trong table sysusers.

– Một login account có thể trở thành user của nhiều database với những quyền hạn và có thể mang user name khác nhau. Mặc ñịnh user name trùng tên với login account .

Page 11: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

11

� Khi chỉ ñịnh 1 login account là user của một DB, mặc nhiên user thuộc về public database role. Bạn có thểthông qua role này ñể chỉnh sửa quyền của user.

� Khi gán 1 login account là thành viên của một database role trên một DB, nó trở thành một user của database này.

Database access security

Page 12: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

12

Hai user ñặc biệtdbo là một user có tất cả các quyền trên DB .

� Mặc ñịnh tất cả các thành viên thuộc sysadmin server role ñều là dbo của tất cả các DB trên server.

� Một login account là thành viên của db_owner database role thì cũng có quyền như dbo.

� Khi thao tác các object trong DB, các thành viên này có thể dùng tên dbo ñể chỉowner thay cho user name.

guest user : Một login account truy suất ñến 1 instance của SQL Server 2000, nhưng không có user account ñể truy xuất 1 DB cụ thể , thì có thể ñược truy xuất ñến DB như một người khách (guest user).

− Bạn có thể cấp các quyền cho guest user account giống như cấp cho các user account khác. Tuy nhiên ñây là user account dành cho khách vãng lai.

− Mặc ñịnh chỉ có master, tempdb, northwind, pubs database là có guest user. Các db khác không có sẵn guest user account .

Database access security

Page 13: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

13

� Khai báo một user� Dùng icon <tên DB>.User trong EM� Dùng thuộc tính của login account trong EM� Dùng lệnh sp_grantdbaccess loginname

� Gán user là thành viên của database role :• Dùng thuộc tính của database role trong EM• Dùng thuộc tính của login account hay user account

trong EM• Dùng lệnh

sp_addrolememberdatabase_role,database_user_account

Database access security

Page 14: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

14

Kiểm soát user có thể làm ñược gì trên database bằng sử dụng :

− Các database role− Cấp quyền cho user thao tác trên object và

statement

Permission security

Page 15: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

15

� Các cơ chế cấp quyền :� dùng login account ñược tạo sẵn bởi hệ thống và

ñược gán role default như : � sa ñược gán sysadmin fixed server role

� Chỉ ñịnh 1 login account là user của một db � mặc ñịnh có quyền thuộc public database role

� Sử dụng role / Cơ chế role bao trùm� sysadmin bao trùm db_owner

� Sử dụng các lệnh Cấp quyền cho user thao tác trên object và statement như grant, deny, revoke

Permission security

Page 16: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

16

Role là một công cụ cho phép cấp quyền cho một nhóm user thay vì thực hiện trên từng user.

− Các quyền ñược grant, deny hay revoke trên role ñều có hiệu lực với các thành viên của role.

− Nếu không còn muốn duy trì quyền hạn cho một user bạn chỉ cần loại user khỏi danh sách các thành viên của role.

− Thường các role ñược ñịnh nghĩa dựa vào nhóm công việc của một nhóm user.

Permission security ROLES

Page 17: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

17

Hai loại role� Fixed role gồm Server role và Database role

� do SQL Server tạo , không thay ñổi ñược

� User-defined database roleHoặc có thể phân biệt :� Role mức server : fixed server role do hệ

thống tạo sẵn , không thay ñổi ñược� Role mức database : có 2 loại fixed

database role, và user defined database role. Mỗi role có phạm vi trong một database.

Permission security ROLES

Page 18: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

18

Cách gán một ñăng nhập cho roles server:

Bằng T-SQL:sp_addsrvrolemember [@loginame=]‘login’,[rolename=] role’

Login: là ID ñăng nhập vào SQL serverRole : tên roles server gán cho ñăng nhập

Permission security ROLES

Page 19: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

19

� Cách gán một User vào database roles

Use Northwind EXEC Sp_addrolemember

'db_securityadmin', ' CDCN4\KeToan'

Permission security ROLES

Page 20: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

20

� User Defined Roles: Bạn phải là thành viên của db_securityadmin, hay db_owner , hay sysadmin,.. ñể cóthể tạo role.

� Dùng T-SQL tạo roleB1: ðịnh nghĩa một role (Một user_defined database role ñược

ñịnh nghĩa trong một DB)sp_addrole role_name, role_owner

B2: Gán quyền về statement và object cho roleB3: Gán các user là thành viên của role� Xoá role:

Sp_droprole rolename

Permission security ROLES

Page 21: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

21

Statement and Object permission

Statement permission :Statement Permission kiểm soát một user/role có thể thực hiện ñược lệnh nào sau ñây :

� CREATE DATABASE� CREATE DEFAULT� CREATE PROCEDURE� CREATE RULE� CREATE TABLE� CREATE VIEW� BACKUP DATABASE� BACKUP LOG

Page 22: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

22

Object permission :Kiểm soát một user/role có thể thực hiện hành ñộng gì trên một object cụ thể trong database. Object nhỏ nhất là column

table, view, và column UPDATE

table, view, và column SELECT

table , view INSERT

stored procedure EXECUTE

table DUMP TABLE

table , view DELETE

Statement and Object permission

Page 23: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

23

Các thao tác về quyền: Thực hiện với user hay user_defined database role.

Lệnh cấp (grant)Nếu bạn cấp quyền cho user, và user là thành viên của một role. Các quyền mà user có ñược hợp lại từ cả hai phía.

Statement and Object permission

Page 24: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

24

Lệnh từ chối (deny) Ngăn user sử dụng quyền và không cho phép user có cơ hội thừa hưởng do làthành viên của một role. Bạn deny quyền SELECT của một user, trong khi user thuộc về một role có quyền SELECT, thì user cũng không thể dùng quyền SELECT.

Statement and Object permission

Page 25: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

25

Lệnh hủy (revoke)Huỷ quyền ñã cấp grant hay ñã từ chối

deny.� Việc hủy quyền ñã cấp của một user không

ngăn cản user thừa hưởng do là thành viên của một role (khác với deny).

� Việc hủy quyền ñã deny của một user cónghĩa cho phép user có lại quyền nếu làthành viên của một role có quyền ñó .

Statement and Object permission

Page 26: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

26

� Granting Statement Permission :GRANT { ALL | statement [ ,...n ] } TO user_name

[,...n ]� Granting Object Permission :GRANT { { ALL | permission [ ,...n ] } [ (

column_name [ ,...n ] ) ] ON

{ table | view | stored_procedure | extended_procedure | user_defined_function }}TO user_name [ ,...n ]

Statement and Object permission

Page 27: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

27

� Denying Statement Permission :DENY { ALL | statement [ ,...n ] } TO user_name [

,...n ]� Denying Object Permission :DENY { { ALL | permission [ ,...n ] } [ ( column_name

[ ,...n ] ) ] ON

{ table | view | stored_procedure | extended_procedure | user_defined_function }}TO user_name [ ,...n ]

Statement and Object permission

Page 28: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

28

� Revoking Statement Permission :REVOKE { ALL | statement [ ,...n ] } FROM

user_name [ ,...n ]� Revoking Object Permission :REVOKE { { ALL | permission [ ,...n ] } [ (

column_name [ ,...n ] ) ] ON

{ table | view | stored_procedure | extended_procedure | user_defined_function }}{TO | FROM} user_name [ ,...n ]

Statement and Object permission

Page 29: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

29

GRANT CREATE DATABASE, CREATE TABLETO SallygoGRANT SELECT, UPDATEON Customers (CompanyName, City, Phone)TO SallygoDENY CREATE DATABASETO Sally, AndygoDENY UPDATE, DELETEON CustomersTO Sally

Statement and Object permission

Page 30: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

30

Ví dụ

QLSACH

QLNHANVIEN

•NHÓM SÁCH•SÁCH•HÓA ðƠN•CTHD

•NHÂN VIÊN•LƯƠNG

Page 31: SECURITY - smile · 2009. 12. 27. · 2 BẢO M ẬT TRONG SQL SERVER Bảo mật trong SQL Server g ồm 3 lớp : – Login security : kiểm soát ai có th ểlog vào SQL Server

31

P KINH DOANH

BỘ PHẬN BÁN HÀNG

BỘ PHẬN QuẢN LÝ SERVER � DBA

P KẾ TOÁN

� MAI

� MINH

� LAN

� HẠNH

Xem file capquyen.sql