Giáo trình Hệ quản trị cơ sở dữ liệu - Chương 9: An toàn dữ liệu - Lê Thị Minh Nguyên

USE AdventureWorks2012; -- Get the pass phrase from the user. DECLARE @PassphraseEnteredByUser nvarchar(128); SET @PassphraseEnteredByUser = 'A little learning is a dangerous thing!'; -- Decrypt the encrypted record. SELECT CardNumber, CardNumber_EncryptedbyPassphrase AS 'Encrypted card number', CONVERT(nvarchar, DecryptByPassphrase(@PassphraseEnteredByUser, CardNumber_EncryptedbyPassphrase, 1 , CONVERT(varbinary, CreditCardID))) AS 'Decrypted card number' FROM Sales.CreditCard WHERE CreditCardID = '3681'

pdf9 trang | Chia sẻ: huongthu9 | Lượt xem: 520 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Giáo trình Hệ quản trị cơ sở dữ liệu - Chương 9: An toàn dữ liệu - Lê Thị Minh Nguyên, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
8/25/2017 1 Chương 9. An toàn dữ liệu GV: Lê Thị Minh Nguyện Email: nguyenltm@huflit.edu.vn Nội dung 1. Khái niệm 2. Phân loại sự cố 3. Các cơ chế an toàn dữ liệu 4. Kiểm soát quyền truy cập CSDL 5. Phân quyền 6. Quản lý quyền người dùng 7. Quản lý phân quyền 8. Khung nhìn (view) như các cơ chế bảo vệ 9. Mã hóa dữ liệu Hệ quản trị Cơ sở dữ liệu 2 1. Khái niệm Hệ quản trị Cơ sở dữ liệu 3 • An toàn dữ liệu: nhằm chống lại sự xâm nhập trái phép từ bên trong và bên ngoài hệ thống. Các tác nhân tác động từ bên ngoài gây hư hỏng hệ quản trị cơ sở dữ liệu, sai lệch, mất mát dữ liệu, cấu trúc dữ liệu, 3. Các cơ chế an toàn dữ liệu 3.1. Cơ chế chứng thực 3.2. Cơ chế phân quyền 3.3. Cơ chế mã hóa Hệ quản trị Cơ sở dữ liệu 4 8/25/2017 2 3.1. Cơ chế chứng thực • Hai chế độ chứng thực • Mixed security Mode: Kết nối với SQL server bằng cách dùng Windows Authentication hoặc SQL server Authentication • Windows authentication mode: Chỉ có thể kết nối với SQL server bằng Windows Authentication Hệ quản trị Cơ sở dữ liệu 5 3.1. Cơ chế chứng thực • Sửa đổi chứng thực Hệ quản trị Cơ sở dữ liệu 6 3.2. Cơ chế phân quyền Hệ quản trị Cơ sở dữ liệu 7 1. Quyền chứng thực 2. Quyền người sử dụng sử dụng 1 hoặc nhiều CSDL 3. Các quyền cụ thể sử dụng bảo vệ CSDL 3.3. Cơ chế mã hóa • Mã hóa những dữ liệu nhạy cảm như: ??? • Các kỹ thuật mã hóa • Mã hóa bằng mật khẩu • Mã hóa đối xứng • Mã hóa bất đối xứng • Mã hóa chứng nhận Hệ quản trị Cơ sở dữ liệu 8 8/25/2017 3 4. Kiểm soát quyền truy cập CSDL Xét cơ sở dữ liệu bán hang gồm các table PhongBan, SanPham, DonHang, CTDonHang, KhachHang, ChiNhanh và bảng NhanVien(MaNV, HoLot, TenNV, NgayVaoLam, MaNQL, MaPB, Luong, HoaHong). Khi đó, mỗi phát biểu sau chỉ ra một mức độ truy cập tới CSDL trên và có thể được trao cho một nhóm user: Hệ quản trị Cơ sở dữ liệu 9 4. Kiểm soát quyền truy cập CSDL (tt) (1)User được phép truy xuất không điều kiện tới toàn bộ CSDL và thực hiện bất kỳ thao tác nào trên CSDL đó. (2)User không được phép truy xuất tới bất kỳ bộ phận nào của CSDL (3)User có thể đọc một bộ phận của CSDL nhưng không được thay đổi nội dung của bộ phận đó. (4) User có thể đọc đúng một bộ trong bảng NhanVien nhưng không được sửa đổi bộ này. (5)User có thể đọc đúng một bộ trong bảng NhanVien và sửa đổi nhưng không phải tất cả giá trị của bộ này (6)User có thể đọc các thuộc tính MaNV, TenNV, MaPB nhưng trong mỗi bộ chỉ được sửa giá trị của các thuộc tính MaPB Hệ quản trị Cơ sở dữ liệu 10 4. Kiểm soát quyền truy cập CSDL (tt) (7) User có thể áp dụng các phép toán thống kê cho thuộc tính Luong (như tính lương trung bình của từng phòng ban) nhưng không được đọc hay sửa đổi các giá trị cá biệt. (8) User có thể đọc các thuộc tính MaNV, Luong, HoaHong và trong mỗi bộ có thể sửa giá trị của thuộc tính HoaHong của nhân viên nếu và chỉ nếu người đó là trưởng phòng của phòng đó. (9) User có thể bổ sung thêm nhân viên vào một phòng ban nào đó hay xóa nhân viên khỏi một phòng nào đó. Hệ quản trị Cơ sở dữ liệu 11 4. Kiểm soát quyền truy cập CSDL (tt) User có thể được cấp một số quyền truy cập sau: • Quyền đọc dữ liệu • Quyền thêm dữ liệu • Quyền sửa dữ liệu • Quyền xóa dữ liệu Hệ quản trị Cơ sở dữ liệu 12 8/25/2017 4 5. Phân quyền (Cấp quyền cho người dùng) Bước 1. Tạo tài khoản đăng nhập Bước 2. Tạo người dùng Bước 3. Cấp quyền cho người dùng Hệ quản trị Cơ sở dữ liệu 13 Bước 1. Tạo tài khoản đăng nhập • Cách 1: create login tên_login with password = 'nhập_mật_khẩu' • Cách 2: sp_addlogin 'tên_login','mật_khẩu' Hệ quản trị Cơ sở dữ liệu 14 Bước 2. Tạo người dùng • Cách 1: create user tên_user for login tên_login • Cách 2: sp_adduser 'tên_login','tên_user' Hệ quản trị Cơ sở dữ liệu 15 Bước 3. Cấp quyền cho người dùng grant danh_sách_quyền on tên_bảng to tên_user [with grant option] Tuỳ chọn [with grant option] được sử dụng để cho phép người dùng được phép cấp lại những quyền của mình cho người dùng khác. Hệ quản trị Cơ sở dữ liệu 16 8/25/2017 5 5. Phân quyền (tt) • Tình huống: Cấp quyền xem và thêm dữ liệu trên bảng MatHang cho người dùng huynhsuhuynh. • Các bước thực hiện: • Bước 1: Tạo tài khoản đăng nhập create login huynhsuhuynh with password = ‘abc123’ • Bước 2: Tạo người dùng create user huynhsuhuynh for login huynhsuhuynh • Bước 3: Cấp quyền grant select,insert on MatHang to huynhsuhuynh Hệ quản trị Cơ sở dữ liệu 17 6. Quản lý quyền người dùng • Sau 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 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à mang nhiều user name khác nhau. Mặc định user name trùng tên với Login account. Hệ quản trị Cơ sở dữ liệu 18 6. Quản lý quyền người dùng (tt) • Hai User đặc biệt: • dbo: một user có tất cả các quyền trên Database. • guest user: Một Login account truy xuất đến một instance của SQL Server, nhưng không có user account để truy xuất 1 Database cụ thể, thì có thể được truy xuất đến Database như một người khách (guest user) Hệ quản trị Cơ sở dữ liệu 19 7. Quản lý phân quyền • 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 • 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 • Chỉ định 1 login account là user của một Database: mặc định có quyền thuộc public database role. • Sử dụng role: Sysadmin bao trùm db_ower • 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 Hệ quản trị Cơ sở dữ liệu 20 8/25/2017 6 7. Quản lý phân quyền (tt) • ROLES: • 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ó 2 loại Roles: • Fixed role • User-defined Database role • Hoặc có thể phân biệt: • Role mức server • Role mức Database Hệ quản trị Cơ sở dữ liệu 21 7. Quản lý phân quyền (tt) • Object permission (Đối tượng): Kiểm soát một User / role có thể thực thi hành động gì trên một object cụ thể trong Database. Hệ quản trị Cơ sở dữ liệu 22 • Quyền cho phép người dùng thực hiện cách hành động trong Database. Có hai loại quyền: GRANT { { ALL | permission [ ,...n ] } [ (column_name [ ,...n ] ) ] ON { table | view | stored_procedure |extended_procedure | user_defined_function }} TO user_name [ ,...n ] 7. Quản lý phân quyền (tt) Hệ quản trị Cơ sở dữ liệu 23 • Statement (Phát biểu): 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 GRANT { ALL | statement [ ,...n ] } TO user_name [,...n ] 7. Quản lý phân quyền (tt) Hệ quản trị Cơ sở dữ liệu 24 Lệnh hủy (revoke): Hủy quyền đã cấp grant hay từ chối deny 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 ] 8/25/2017 7 7. Quản lý phân quyền (tt) • Như vậy thay vì chúng ta cấp quyền cho từng user, người quản trị có thể cấp quyền theo nhóm. Và những user thuộc nhóm quyền nào sẽ có tất cả quyền của nhóm đó. Do đó, khi người quản trị thực hiện thêm bớt quyền sẽ dễ dàng hơn. Hệ quản trị Cơ sở dữ liệu 25 Cấp quyền cho nhóm (Role) Cấp quyền cho Role (tt) • Bước 1: Tạo nhóm Cách 1: Create Role Tên_Nhóm Cách 2: Sp_AddRole 'Tên_Nhóm’ Bước 2: Cấp quyền cho nhóm Grant Quyền On Bảng To Tên_Nhóm Bước 3: Thêm user vào nhóm Sp_AddRoleMember 'Tên_Nhóm', 'Tên_User' Hệ quản trị Cơ sở dữ liệu 26 Cấp quyền cho Role (tt) • Ví dụ cấp quyền cho nhóm xemdulieu quyền xem dữ liệu cơ sở dữ liệu QuanLyBanHang. Trong nhóm quyền này có một user là DangLH Hệ quản trị Cơ sở dữ liệu 27 Cấp quyền cho Role (tt) Bước 1: Tạo nhóm quyền Use QuanLyBanHang Create role xemdulieu Bước 2: Cấp quyền cho nhóm Grant select to xemdulieu Bước 3: Tạo login tên DangLH, mật khẩu Abc12345 Create Login DangLH With Password = 'Abc12345’ Bước 4: Tạo user DangLH sử dụng login DangLH Use QuanLyBanHang Create User DangLH For Login DangLH Bước 5: Thêm usser DangLH vào nhóm xemdulieu Sp_addRoleMember 'xemdulieu', 'DangLH' Hệ quản trị Cơ sở dữ liệu 28 8/25/2017 8 8. Khung nhìn (view) như các cơ chế bảo vệ Hệ quản trị Cơ sở dữ liệu 29 • Bảng là một quan hệ được tổ chức lưu trữ vật lý trong CSDL • Khung nhìn cũng là một quan hệ • Không được lưu trữ vật lý (bảng ảo) • Không chứa dữ liệu • Đối tượng bên trong nó chỉ lưu trữ duy nhất một câu lệnh SELECT • Các dữ liệu được lấy từ bảng cơ sở • Có thể thêm, xóa, sửa được trong bảng ảo 8. Khung nhìn (view) như các cơ chế bảo vệ (tt) Hệ quản trị Cơ sở dữ liệu 30 • Cú pháp: CREATE VIEW [(tên_các_cột)] [WITH ENCRYPTION] //mã hoá nội dung câu lệnh AS Câu lệnh SELECT [WITH CHECK OPTION]// ngăn cản các thao tác cập nhật dữ liệu (thêm, sửa) tác động trực tiếp vào bảng ảo không thoả điều kiện trong mệnh đề WHERE. Xem lại nội dung câu lệnh SELECT bên trong View EXEC Sp_helptext 9. Mã hóa dữ liệu • Mã khóa mật khẩu Hệ quản trị Cơ sở dữ liệu 31 EncryptByPassPhrase ( { 'passphrase' | @passphrase } , { 'cleartext' | @cleartext } [ , { add_authenticator | @add_authenticator } , { authenticator | @authenticator } ] ) 9. Mã hóa dữ liệu (tt) Hệ quản trị Cơ sở dữ liệu 32 USE AdventureWorks2012; GO -- Create a column in which to store the encrypted data. ALTER TABLE Sales.CreditCard ADD CardNumber_EncryptedbyPassphrase varbinary(256); GO -- First get the passphrase from the user. DECLARE @PassphraseEnteredByUser nvarchar(128); SET @PassphraseEnteredByUser = 'A little learning is a dangerous thing!’; -- Update the record for the user's credit card. -- In this case, the record is number 3681. UPDATE Sales.CreditCard SET CardNumber_EncryptedbyPassphrase = EncryptByPassPhrase(@PassphraseEnteredByUser , CardNumber, 1, CONVERT( varbinary, CreditCardID)) WHERE CreditCardID = '3681'; 8/25/2017 9 9. Mã hóa dữ liệu (tt) • Giải mã Hệ quản trị Cơ sở dữ liệu 33 DecryptByPassPhrase ( { 'passphrase' | @passphrase } , { 'ciphertext' | @ciphertext } [ , { add_authenticator | @add_authenticator } , { authenticator | @authenticator } ] ) 9. Mã hóa dữ liệu (tt) Hệ quản trị Cơ sở dữ liệu 34 USE AdventureWorks2012; -- Get the pass phrase from the user. DECLARE @PassphraseEnteredByUser nvarchar(128); SET @PassphraseEnteredByUser = 'A little learning is a dangerous thing!'; -- Decrypt the encrypted record. SELECT CardNumber, CardNumber_EncryptedbyPassphrase AS 'Encrypted card number', CONVERT(nvarchar, DecryptByPassphrase(@PassphraseEnteredByUser, CardNumber_EncryptedbyPassphrase, 1 , CONVERT(varbinary, CreditCardID))) AS 'Decrypted card number' FROM Sales.CreditCard WHERE CreditCardID = '3681' Hệ quản trị Cơ sở dữ liệu 35

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

  • pdfgiao_trinh_he_quan_tri_co_so_du_lieu_chuong_9_an_toan_du_lie.pdf