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'
9 trang |
Chia sẻ: huongthu9 | Lượt xem: 520 | Lượt tải: 0
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:
- giao_trinh_he_quan_tri_co_so_du_lieu_chuong_9_an_toan_du_lie.pdf