H
H
Ệ
Ệ
QU
QU
Ả
Ả
N TR
N TR
Ị
Ị
CƠ S
CƠ S
Ở
Ở
D
D
Ữ
Ữ
LI
LI
Ệ
Ệ
U
U
ThS. TRẦN NGÂN BÌNH
ThS. ĐẶNG QUỐC VIỆT
TS. NGUYỄN THÁI NGHE
2012
TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ THÔNG TIN & TT
Chương
Chương
1.
1.
AN TO
AN TO
À
À
N D
N D
Ữ
Ữ
LI
LI
Ệ
Ệ
U
U
7. 3
N
N
ộ
ộ
i Dung
i Dung
An toàn trong CSDL
Các nguy c
ơ
đố
i v
ớ
i s
ự
an toàn trong CSDL
Các bi
ệ
n pháp b
ả
o v
ệ
b
ằ
ng máy tính
Phân tích r
ủ
i ro
B
ả
o v
ệ
d
ữ
li
ệ
u và các lu
ậ
t riêng t
ư
7. 4
An to
An to
à
à
n trong CSDL
n trong CSDL
An toàn trong CSDL là s
ự
b
ả
o v
ệ
CSDL kh
ỏ
i nh
ữ
ng
đ
e d
ọ
a có ch
ủ
ý hay vô tình thông qua các bi
ệ
n pháp
có s
ử
d
ụ
ng máy tính ho
ặ
c không có s
ử
d
ụ
ng máy tính
Vi
ệ
c xem xét an toàn không ch
ỉ
áp d
ụ
ng cho d
ữ
li
ệ
u
trong CSDL, mà còn bao g
ồ
m c
ả
ph
ầ
n c
ứ
ng, ph
ầ
n
m
ề
m và con ng
ườ
i.
Chúng ta xem xét an toàn CSDL trong các tình hu
ố
ng
sau:
Bị đánh cắp hay gian lận
Mất đi tính bảo mật
Mất tính riêng tư
Mất tính toàn vẹn
Mất tính sẵn sàng
7. 5
Nguy cơ
Nguy cơ
Nguy c
ơ
là nh
ữ
ng tình hu
ố
ng hay s
ự
ki
ệ
n, có th
ể
là
c
ố
ý hay vô tình, s
ẽ ả
nh h
ưở
ng b
ấ
t l
ợ
i
đế
n m
ộ
t h
ệ
th
ố
ng và vì v
ậ
y
ả
nh h
ưở
ng
đế
n c
ả
t
ổ
ch
ứ
c.
Nguy c
ơ
có th
ể
là:
Hữu hình như mất mát về phần cứng, phần mềm, dữ liệu.
Vô hình như sự tín nhiệm của khách hàng.
M
ỗ
i nguy c
ơ
ph
ả
i
đượ
c xem nh
ư
m
ộ
t s
ự
vi ph
ạ
m an
ninh có th
ể
x
ả
y ra.
T
ổ
ch
ứ
c ph
ả
i nh
ậ
n
đị
nh
đượ
c t
ấ
t c
ả
các nguy c
ơ
ti
ề
m
ẩ
n, hay ít ra là các nguy c
ơ
quan tr
ọ
ng,
để
t
ừ
đ
ó
đư
a
ra các k
ế
ho
ạ
ch phòng tránh c
ũ
ng nh
ư
bi
ệ
n pháp
đố
i
phó phù h
ợ
p (c
ầ
n l
ư
u ý chi phí th
ự
c hi
ệ
n, m
ứ
c
độ
c
ả
n
tr
ở
đ
/v ng
ườ
i dùng).
7. 6
C
C
á
á
c bi
c bi
ệ
ệ
n ph
n ph
á
á
p b
p b
ả
ả
o v
o v
ệ
ệ
b
b
ằ
ằ
ng m
ng m
á
á
y t
y t
í
í
nh
nh
C
ấ
p quy
ề
n (authorization)
Khung nhìn (Views)
Sao l
ư
u và ph
ụ
c h
ồ
i (Backup and restore)
Toàn v
ẹ
n d
ữ
li
ệ
u (Integrity)
M
ậ
t hóa (Encryption)
Các th
ủ
t
ụ
c
đ
i kèm.
7. 7
C
C
ấ
ấ
p quy
p quy
ề
ề
n
n
C
ấ
p quy
ề
n (authorization): Là s
ự
gán quy
ề
n cho m
ộ
t
ng
ườ
i dùng hay ch
ươ
ng trình
để
có th
ể
truy c
ậ
p vào m
ộ
t
h
ệ
th
ố
ng hay m
ộ
t
đố
i t
ượ
ng c
ủ
a h
ệ
th
ố
ng.
Ch
ứ
ng th
ự
c ng
ườ
i dùng (authentication): Là c
ơ
ch
ế
để
xác
đị
nh m
ộ
t ng
ườ
i dùng là ai.
C
ơ
ch
ế
ch
ứ
ng th
ự
c ng
ườ
i dùng ph
ổ
bi
ế
n nh
ấ
t là s
ử
d
ụ
ng
đị
nh danh ng
ườ
i dùng cùng v
ớ
i m
ậ
t kh
ẩ
u, m
ặ
c dù
cách này không th
ể
đả
m báo m
ộ
t cách hoàn toàn.
M
ộ
t s
ố
HQTCSDL s
ử
d
ụ
ng các
đị
nh danh ng
ườ
i dùng
riêng, m
ộ
t s
ố
s
ử
d
ụ
ng các
đị
nh danh ng
ườ
i dùng c
ủ
a h
ệ
đ
i
ề
u hành bên d
ướ
i.
7. 8
Ch
Ch
ủ
ủ
s
s
ở
ở
h
h
ữ
ữ
u v
u v
à
à
quy
quy
ề
ề
n
n
Chủ sở hữu (ownership) của một đối tượng trong CSDL là người
đã tạo ra đối tượng đó.
Các đối tượng có sẵn trong HQTCSDL sẽ thuộc về bản thân
HQTCSDL mà đại diện là nhà quản trị CSDL (DBA).
Chủ sở hữu có mọi quyền hạn (privileges) trên đối tượng của mình
và có thể gán quyền trên đối tượng đó cho người khác.
HQTCSDL ghi nhận tất cả các quyền đã gán cho người dùng nào
và gán bởi ai; để có thể duy trì đúng đắn tập quyền trên người
dùng khi quyền được gỡ bỏ.
Các HQTCSDL có thể hỗ trợ nhiều mức cấp quyền khác nhau
(mức người dùng hoặc nhóm người dùng).
Định danh người dùng thường có độ ưu tiên cao hơn định danh
nhóm.
7. 9
Ma Tr
Ma Tr
ậ
ậ
n Đi
n Đi
ề
ề
u Khi
u Khi
ể
ể
n Truy C
n Truy C
ậ
ậ
p
p
Để cài đặt việc điều khiển truy cập, các HQTCSDL sử dụng các ma
trận điều khiển truy cập.
Mỗi loại quyền sẽ được gắn với một giá trị nhị phân:
READ UPDATE INSERT DELETE ALL
0001 0010 0100 1000 1111
Quyền của định danh trên 1 đối tượng sẽ là tổng các giá trị nhị
phân của các quyền mà định danh đó có.
Quyền của tất cả các định danh trên một đối tượng của CSDL sẽ
được thể hiện trên ma trận điều khiển truy cập (access control
matrix), như hình sau:
UserID MaHg Loai Gia MaNV SoDong
ToiDa
SG37 0101 1010 0110 0000 100
QLBanHg 1111 1111 1111 0000 150
7. 10
SQL: L
SQL: L
ệ
ệ
nh GRANT đ
nh GRANT đ
ể
ể
c
c
ấ
ấ
p quy
p quy
ề
ề
n
n
Các quy
ề
n
đị
nh ngh
ĩ
a b
ở
i chu
ẩ
n ISO: SELECT,
INSERT, UPDATE, DELETE, REFERENCES, USAGE
Gán quy
ề
n trên
đố
i t
ượ
ng cho ng
ườ
i dùng b
ằ
ng l
ệ
nh:
GRANT {danh_sách_quy
ề
n | ALL PRIVILEGES}
ON tên_
đố
i t
ượ
ng
TO {danh_sách_
đị
nh_danh_
đượ
c_c
ấ
p | PUBLIC}
[WITH GRANT OPTION]
Tùy ch
ọ
n WITH GRANT OPTION cho phép ng
ườ
i dùng
đượ
c c
ấ
p ti
ế
p t
ụ
c c
ấ
p quy
ề
n cho ng
ườ
i khác.
7. 11
SQL: L
SQL: L
ệ
ệ
nh REVOKE đ
nh REVOKE đ
ể
ể
thu h
thu h
ồ
ồ
i quy
i quy
ề
ề
n
n
L
ệ
nh REVOKE
đượ
c dùng
để
g
ỡ
b
ỏ
quy
ề
n trên
đố
i
t
ượ
ng kh
ỏ
i ng
ườ
i dùng
đ
ã
đượ
c c
ấ
p:
REVOKE [GRANT OPTION FOR] {ds_quy
ề
n | ALL
PRIVILEGES} ON
đố
i_t
ượ
ng
FROM {danh_sách_
đị
nh_danh_
đượ
c_c
ấ
p | PUBLIC}
[RESTRICT | CASCADE]
RESTRICT: mặc định, sẽ ngưng thực thi lệnh Revoke nếu kết
quả câu lệnh làm ảnh hưởng đến các đối tượng phụ thuộc.
CASCADE: Các đối tượng phụ thuộc sẽ bị xóa hoặc gỡ ra.
7. 12
Khung Nh
Khung Nh
ì
ì
n
n
Khung nhìn là k
ế
t qu
ả
độ
ng c
ủ
a m
ộ
t ho
ặ
c nhi
ề
u thao
tác quan h
ệ
trên các quan h
ệ
c
ơ
s
ở
(base table)
để
sinh
ra m
ộ
t quan h
ệ
khác.
M
ộ
t khung nhìn là m
ộ
t b
ả
ng
ả
o (virtual table), nó không
th
ự
c s
ự
t
ồ
n t
ạ
i trong CSDL.
M
ộ
t ng
ườ
i dùng có th
ể
đượ
c gán các quy
ề
n thích h
ợ
p
trên m
ộ
t khung nhìn
đị
nh ngh
ĩ
a trên nhi
ề
u b
ả
ng.
B
ằ
ng cách này ta s
ẽ
đả
m b
ả
o tính an toàn cho d
ữ
li
ệ
u
t
ố
t h
ơ
n là gán quy
ề
n trên nhi
ề
u b
ả
ng c
ơ
s
ở
7. 13
SQL: L
SQL: L
ệ
ệ
nh Create View
nh Create View
Lệnh dùng để tạo view:
CREATE VIEW tên_view [(tên_cột [, ])]
AS câu_truy_vấn
[WITH [CASCADED | LOCAL] CHECK OPTION]
Các dòng đi vào và ra khỏi view được gọi là các dòng di cư
(migrating rows).
WITH CHECK OPTION để đảm bảo rằng các dòng không di cư ra
khỏi view qua các thao tác insert và update trên view (nghĩa là, nếu
một dòng không thỏa điều kiện WHERE trong câu truy vấn của
view thì dòng đó sẽ không được cập nhật vào bảng cơ sở).
Nếu có CASCADE thì việc đảm bảo này cũng áp dụng trên các
view định nghĩa trên view này (đây là chế độ mặc định).
Nếu có LOCAL thì việc đảm bảo này cũng áp dụng trên các view
định nghĩa trên view này trừ khi dòng đó cũng di cư khỏi view hay
table nền của view này.
7. 14
V
V
í
í
d
d
ụ
ụ
WITH CHECK OPTION
WITH CHECK OPTION
CREATE VIEW manager3_staff AS SELECT * FROM
high_salary WHERE bno = ‘B3’
CREATE VIEW high_salary AS SELECT * FROM low_salary
WHERE salary > 10000 WITH LOCAL CHECK OPTION
CREATE VIEW low_salary AS SELECT * FROM staff
WHERE salary > 9000
UPDATE manager3_staff SET salary = 9500
WHERE sno = ‘SG37’
7. 15
SQL: L
SQL: L
ệ
ệ
nh DROP VIEW
nh DROP VIEW
L
ệ
nh dùng
để
xóa view
DROP VIEW tên_view [RESTRICT | CASCADE]
Nếu có các đối tượng khác tham chiếu view này thì trường hợp
có:
RESTRICT: lệnh này sẽ không được thực hiện
CASCADE: lệnh này sẽ xóa luôn cả các đối tượng kia.
M
ộ
t s
ố
gi
ớ
i h
ạ
n trên view
View có th
ể
c
ậ
p nh
ậ
t (updatable view)
7. 16
Thu
Thu
ậ
ậ
n l
n l
ợ
ợ
i v
i v
à
à
b
b
ấ
ấ
t l
t l
ợ
ợ
i c
i c
ủ
ủ
a view
a view
Thu
ậ
n l
ợ
i
Độc lập dữ liệu
Currency (TT trong view luôn là TT hiện tại)
Nâng cao tính an toàn
Giảm sự phức tạp
Thuận tiện
Khả năng tùy biến
Toàn vẹn dữ liệu
B
ấ
t l
ợ
i
Hạn chế cập nhật
Hạn chế cấu trúc
Hiệu quả hoạt động
7. 17
Sao Lưu v
Sao Lưu v
à
à
Ph
Ph
ụ
ụ
c H
c H
ồ
ồ
i
i
Sao lưu (backup) là quá trình sao chép CSDL và các tập tin nhật ký
(có thể kể cả chương trình) vào các thiết bị lưu trữ dự phòng một
cách định kỳ.
Ghi nhật ký (journaling) là quá trình ghi nhận và duy trì một tập tin
nhật ký (log file hay journal) về tất cả các thay đổi đã thực hiện trên
CSDL để có thể phục hồi một cách hiệu quả khi có sự cố.
Điểm kiểm tra (checkpoint): Là điểm diễn ra sự đồng bộ giữa CSDL
và tập tin nhật ký giao dịch. Tại thời điểm này, tất cả các vùng đệm
sẽ được ghi ra bộ lưu trữ thứ cấp và một mẫu tin kiểm tra sẽ được
ghi vào trong nhật ký.
Các kỹ thuật này sẽ được thảo luận chi tiết hơn trong bài quản lý
giao dịch.
7. 18
To
To
à
à
n v
n v
ẹ
ẹ
n d
n d
ữ
ữ
li
li
ệ
ệ
u
u
Vi
ệ
c qu
ả
n lý toàn v
ẹ
n c
ũ
ng góp ph
ầ
n duy trì m
ộ
t h
ệ
th
ố
ng CSDL an toàn, b
ả
o v
ệ
d
ữ
li
ệ
u luôn luôn h
ợ
p l
ệ
,
không b
ị
sai.
RBTV th
ườ
ng
đượ
c chia làm 4 lo
ạ
i:
Ràng buộc về khóa hay ràng buộc thực thể
Ràng buộc về miền trị
Ràng buộc về tham chiếu
Ràng buộc khác
7. 19
M
M
ậ
ậ
t h
t h
ó
ó
a
a
Mật hóa (encryption) là sự mã hóa dữ liệu bằng một giải thuật đặc
biệt làm cho dữ liệu không thể đọc được nếu không có khóa giải
mã (decryption key).
Có nhiều kỹ thuật mã hóa dữ liệu, có thể chia thành 2 loại:
Khả đảo (reversible): Có thể giải mã dữ liệu về như ban đầu.
Vô khả đảo (irreversible): không cho phép giải mã dữ liệu về như ban
đầu.
Một hệ thống mật hóa khả đảo bao gồm: khóa để mã, giải thuật mã
hóa, khóa để giải mã và giải thuật giải mã.
Có hai loại hệ thống mật hóa:
Đối xứng (symmetric): sử dụng cùng 1 khóa để mã và giải mã (DES,
PGP).
Bất đối xứng (asymmetric): sử dụng các khóa khác nhau để mã và giải
mã (các hệ thống mật hóa khóa công cộng – public key cryptosystems,
RSA).
7. 20
Công Ngh
Công Ngh
ệ
ệ
RAID
RAID
RAID (Redundancy Array of Independent Disks): m
ộ
t
dãy các
đĩ
a
độ
c l
ậ
p
để
c
ả
i ti
ế
n
độ
tin c
ậ
y và t
ă
ng hi
ệ
u
su
ấ
t ho
ạ
t
độ
ng cho h
ệ
th
ố
ng.
T
ă
ng hi
ệ
u su
ấ
t b
ằ
ng cách ‘tháo r
ờ
i’ d
ữ
li
ệ
u (data
stripping): chia d
ữ
li
ệ
u thành các ph
ầ
n b
ằ
ng nhau và
đượ
c phân ph
ố
i cho nhi
ề
u
đĩ
a m
ộ
t cách trong su
ố
t.
T
ă
ng
độ
tin c
ậ
y b
ằ
ng cách l
ư
u thông tin l
ặ
p l
ạ
i trên
nhi
ề
u
đĩ
a s
ử
d
ụ
ng c
ơ
ch
ế
ch
ẵ
n l
ẻ
(parity) hay c
ơ
ch
ế
s
ử
a l
ỗ
i (error-correcting).
Vi
ệ
c ch
ọ
n l
ự
a m
ứ
c RAID
để
cài
đặ
t ph
ụ
thu
ộ
c vào b
ả
n
ch
ấ
t d
ữ
li
ệ
u, chi phí, m
ứ
c
độ
quan tr
ọ
ng, v.v.…
7. 21
RAID 0 & RAID 1
RAID 0 & RAID 1
RAID 0 – Không dư thừa. Việc chia dữ liệu được thực hiện ở mức
khối => Tăng tốc độ truy xuất cao nhất
RAID 1: duy trì hai phiên bản dữ liệu giống hệt nhau trên các đĩa
khác nhau => tin cậy nhưng đắt tiền
RAID 0 + 1
7. 22
RAID 2 & RAID 3
RAID 2 & RAID 3
RAID 2 – chia DL theo bit và mã Hamming được sử dụng như là
cơ chế dư thừa để có thể sửa lỗi
RAID 3 – Chia DL theo byte và có 1 đĩa chẵn lẻ. Đòi hỏi các đĩa
phải quay đồng bộ, không đáp ứng nhiều yêu cầu cùng lúc
Hai cấu hình này trở
nên lỗi thời và không
còn sử dụng nữa
7. 23
RAID 4 & RAID 5
RAID 4 & RAID 5
RAID 4: chia DL theo khối và có một đĩa chẵn lẻ.
RAID 5: chia DL theo khối. TT chẵn lẻ lưu luân phiên trên các đĩa
dữ liệu.
RAID 4 không
phổ biến
7. 24
C
C
á
á
c Th
c Th
ủ
ủ
T
T
ụ
ụ
c Đi K
c Đi K
è
è
m
m
Cấp quyền và chứng thực người dùng
Mật khẩu phải được giữ kín và thay đổi định kỳ.
Định danh và mật khẩu lưu trong hệ thống phải ở dạng mã hóa.
Đưa ra các qui định về thành phần của mật khẩu.
Đề ra các thủ tục cần thiết và theo dõi sát việc cấp quyền cho người
dùng.
Sao lưu:
Các qui định, bước thực hiện sao lưu phải được mô tả rõ ràng.
Thông tin về phiên bản sao lưu phải chính xác.
Bản sao lưu phải được lưu trữ nhiều nơi.
Nơi lưu trữ các bản sao lưu phải được đảm bảo an toàn.
Phục hồi:
Quá trình này cũng cần phải được mô tả rõ ràng.
Phải tổ chức kiểm thử thường xuyên để đảm bảo hệ thống có thể phục
hồi nếu có sự cố.
7. 25
C
C
á
á
c Th
c Th
ủ
ủ
T
T
ụ
ụ
c Đi K
c Đi K
è
è
m (tt.)
m (tt.)
Ki
ể
m
đị
nh (Audit): bao g
ồ
m các th
ủ
t
ụ
c và qu
ả
n lý
để
:
Bảo đảm tính chính xác của dữ liệu vào
Bảo đảm tính chính xác của quá trình xử lý dữ liệu.
Ngăn ngừa và phát hiện lỗi trong suốt quá trình thực thi chương
trình.
Kiểm thử và tạo tư liệu đúng đắn về quá trình phát triển và bảo
trì chương trình.
Tránh những sửa đổi không được phép trên chương trình.
Cấp và quản lý sự truy cập trên dữ liệu.
Bảo đảm các tư liệu là mới nhất.
Các tập tin nhật ký sẽ được xem xét kỹ trong công tác kiểm định
để phát hiện mọi hoạt động bất thường nếu có.