1. Trang chủ
  2. » Giáo án - Bài giảng

Chương 14 SECURITY

54 700 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 54
Dung lượng 411 KB

Nội dung

Mặc định, tất cả các thành viên của nhóm quản trị Windows Administratorsvà user sa thuộc vào server role này như xác lập lượng bộ nhớ mà SQL server có thể dùng khi truyền thông tin qua m

Trang 1

Chương 14 SECURITY

Bảo mật trong cơ sở dữ liệu

Trang 2

M ục tiêu

 Các tính chất bảo mật của 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) và 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 quyết xung đột giữa các quyền

Trang 3

Một số khái niệm

 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 Authentication tương đương với việc trình hộ chiếu ở cổng soát vé của sân bay

khi đã được nhận dạng có quyền được sử dụng tài nguyên không? Authorization tương đương với việc kiểm tra vé để được phép lên máy bay

Trang 4

Kh ái quát về tính bảo mật trong SQL

Server

đáng tin cậy (reliable security system) để

giám sát mọi hoạt động cũng như các

thông tin cần được xem và chỉnh sửa

đám được việc bảo vệ dữ liệu bất kể việc user

đã dùng cách nào để truy xuất vào database

cột của bảng

Trang 5

Login ID và user ID

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

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 Ví dụ user ID là xyz trong DB sales khác với user ID cũng tên là xyz trong DB

inventory

Trang 6

Login ID và user ID

DB để 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

sa là 1 tài khoản đăng nhập (login account) được

ánh xạ tự động với user ID dbo trong mọi DB

 Guest là user ID đặc biệt

user ID giống nhau nhưng điều này không bắt

buộc

Trang 7

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ệ

Trang 8

Tạo tài khoản đăng nhập Login ID

như tài khoản đăng nhập vào SQL server

server ( sa thuộc nhóm này)

Trang 9

Tạo tài khoản đăng nhập của

Windows

server bằng account của Windows là user1, ta dùng lệnh sau:

sp_grantlogin ‘user1’

Login, chọn Authentication Windows

Trang 10

Tạo tài khoản của SQL server

quyền tạo login ID mới

 Ví dụ:

EXEC sp_addlogin ‘student1', 'Password',

'master‘

chọn Authentication SQL server

Trang 11

Xem các login ID

 Dùng thủ tục sp_helplogins

Trang 12

Tạo user cho DB hiện hành

quyền tạo tài khoản DB mới

Chú ý: chỉ có thể tạo user mới cho những user nào đã có tài khoản đăng nhập (login ID)

được xác định, tên của user sẽ chính là tên login id của user đó Có thể tạo ra tài khoản user khác với tên login id của user đó.

trở thành thành viên của nhóm.

 Có thể tạo user mới từ Enterprise Manager

Trang 13

Tạo user cho DB hiện hành

 Lệnh sp_adduser để tích hợp với phiên bản cũ.

 Nên dùng lệnh sau:

 Ví dụ: Thêm tài khoản Windows Corporate\GeorgeW vào CSDL hiện hành và đặt tên là Georgie.

EXEC sp_grantdbaccess 'Corporate\GeorgeW', 'Georgie'

Ví dụ :

EXEC sp_revokedbaccess 'Corporate\GeorgeW'

Trang 14

Role là gì?

hợp các user vào cùng 1 unit nhờ đó ta có thể gán quyền chung cho cả unit đó

các công nhân làm cùng 1 công việc lại 1 nhóm, nhờ đó ta có thể giao việc, cấp quyền cho cả

nhóm 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, ta

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

Trang 15

Vai trò của role

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 đó

Trang 16

Ví dụ minh hoạ

trị cho phép 5 tài khoản Windows bao gồm giáo

sư John, Sarah, Diane và 2 sinh viên Betty và Ralph được đăng nhập vào SQL server Đặc

biệt là Diane vừa là giáo sư nhưng lại vừa theo học 1 lớp khác Người quản trị cần cấp cho các giáo sư quyền được update điểm sinh viên, còn các sinh viên thì chỉ được xem điểm của họ

Người quản trị đã tạo ra 2 view có tên là

ProfessorGradeView dành cho giáo sư, và

StudentGradeView dành cho sinh viên

 Script của người quản trị nên có nội dung như thế nào??

Trang 19

sp_addrole 'Professor' GO

sp_addrole 'Student' GO

sp_addrolemember 'Professor', 'NETDOMAIN\John‘

GO sp_addrolemember 'Professor', 'NETDOMAIN\Sarah‘ GO

sp_addrolemember 'Professor', 'NETDOMAIN\Diane‘ GO

sp_addrolemember 'Student', 'NETDOMAIN\Betty‘ GO

sp_addrolemember 'Student', 'NETDOMAIN\Ralph' GO

Trang 21

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

Trang 22

Fixed Server Roles

sau khi user đăng nhập vào

loại này mà khả năng quản trị theo thứ tự giảm

dần

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

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

Trang 23

Fixed Server Roles

và quản trị các thủ tục (extended stored procedures)

tạo login và gán quyền

tiến trình được gọi không hợp lệ

Trang 24

Fixed Server Roles

như sao chép đĩa và tạo các thiết bị sao lưu

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

Trang 25

Fixed Server Roles

dùng lệnh sau

sp_addsrvrolemember [ @loginame = ] 'login',

[ @rolename = ] 'role‘

EXEC sp_addsrvrolemember 'User1', 'sysadmin‘

Trang 26

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 Database1Database2 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

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

Trang 27

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

Fixed Database Roles

Trang 28

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_denydatareader 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

Fixed Server Roles

Trang 29

 Để xem các fixed database role:

sp_helpdbfixedrole

muốn mọi user trong 1 DB có quyền đặc biệt nào

đó thì hãy gán quyền đó cho role public Nếu 1

user chưa được cấp quyền đặc biệt gì thì họ sẽ

chỉ được dùng những quyền đã được gán cho

public

Fixed Server Roles

Trang 30

Thêm thành viên vào DB role

 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

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 đó

Trang 32

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.

Trang 33

Tạo DB role tuỳ biến

 Ví dụ: tạo 1 role mới tên Managers cho CSDL hiện hành.

Trang 34

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

 Hơn nữa, để có thể hạn chế việc truy xuất dữ liệu của người dùng thông qua 1 ứng dụng nào đó hay để tránh khỏi truy xuất dữ liệu trực tiếp, cần ngăn chặn người

dùng không được kết nối vào SQL server thông qua ứng dụng Vì khi truy xuất vào SQL server được, họ có thể tạo ra các truy vấn sai trong cửa sồ analyzer , ảnh

hưởng đến việc thực thi của cả server gây hậu quả xấu

 Để đáp ứng các yêu cầu trên, SQL server đã cung cấp 1 role đặc biệt khác với role tiêu chuẩn, đó là application role

Trang 35

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 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

Trang 36

 Việc kết nối này sẽ làm mất tất cả các

quyền của login ID, user ID, các group hay các database role khác trong tất cả các

DB trong suốt thời gian kết nối Việc kết

nối này sẽ đạt được các quyền có liên

quan đến application role của DB nào mà ứng dụng đang chạy

Trang 37

Application Role

ứng dụng đang chạy, kết nối có thể truy xuất

được đến các DB khác chỉ thông qua các quyền được cấp cho user guest trong các DB khác mà thôi Vì vậy nếu user guest không tồn tại trong 1

DB nào đó, thì kết nối không thể truy xuất vào

DB đó được Thậm chí ngay cà khi có user

guest nhưng quyền truy xuất vào 1 đối tượng

nào đó không được gán 1 cách tường minh thì user guest dù có kết nối được cũng không thể

truy xuất đối tượng đó được bất kể ai đã tạo ra đối tựong đó Quyền của user có được từ

application role vần còn có hiệu quả cho đến khi

Trang 38

bảng mà 1 ứng dụng có thể truy xuất vào được,khi đó việc bị từ chối truy xuất này sẽ hủy bỏ khi user sử dụng ứng dụng này

 Application role cho phép ứng dụng được 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 khi nó truy xuất vào

DB, ứng dụng phải cung cấp password vì không có cách nào khác đề xác nhận một ứng dụng có hợp lệ hay

không.

Trang 40

trong DB hiện hành cho đến khi user ngắt kết nối khỏi SQL Server

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

'AsDeFXX'

Trang 41

Ví dụ

 Sue đang chạy ứng dụng Sales ma ứ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ổ Analyzer hay các công cụ khác của SQL

 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

Trang 42

Các loại quyền (Permissions)

( 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

hoạt động nào liên quan đến việc thay đổi định nghĩa DB hay truy xuất dữ liệu

• Object Permissions

• Statement Permissions

• Implied Permissions

dưới 1 trong 3 trạng thái sau: granted ( cấp

quyền), revoked (thu hồi) và denied (từ chối)

Trang 43

Object Permissions (Quyền về đối tượng)

quyền để làm việc với dữ liệu được lưu trữ trong

DB

tuy nhiên user không thể thêm hay xóa các hàng trong bảng được

bảng

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

Trang 44

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

Trang 45

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ủ

Trang 46

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

Trang 47

Data Control Language

 Lệnh GRANT cho phép user, group hay role làm việc với lệnh về dữ liệu hay thực thi các lệnh T-SQL

[ ( column [ , n ] ) ] ON { table | view }

| ON { table | view } [ ( column [ , n ] ) ]

| ON { stored_procedure | extended_procedure }

| ON { user_defined_function }

}

Trang 48

Data Control Language

permission), thì ALL chỉ có thể được dùng bởi

đối tượng (object permissions), ALL chỉ được

đố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

Use pubs

GRANT select, insert, update ON titles TO faculty

Trang 49

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 đó.

Trang 50

Data Control Language (Contd.)

đã đuợc cấp hay từ chối từ 1 user của

Trang 51

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.

Trang 52

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

kỷ 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 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

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

Trang 53

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 đựoc áp dụng

 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:

 Thu hồi quyền (giả thiết là John không có quyền nào khác ở cấp khác)

 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)

Từ chối 1 cách tường mình John quyền SELECT trên

Ngày đăng: 12/05/2014, 12:04

HÌNH ẢNH LIÊN QUAN

Bảng mà 1 ứng dụng có thể truy xuất vào được,khi đó  việc bị từ chối truy xuất này sẽ  hủy bỏ khi user sử dụng - Chương 14 SECURITY
Bảng m à 1 ứng dụng có thể truy xuất vào được,khi đó việc bị từ chối truy xuất này sẽ hủy bỏ khi user sử dụng (Trang 38)

TỪ KHÓA LIÊN QUAN

w