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ỏ.. Mỗi loại quyền sẽ được gắn với một
Trang 1H Ệ QU Ả N TR Ị C C Ơ Ơ S S Ở D Ữ LI Ệ U
ThS TR Ầ N NGÂN BÌNH ThS ĐẶ NG QU Ố C VI Ệ T
TS NGUY Ễ N THÁI NGHE
TR ƯỜ NG ĐẠ I H Ọ C C Ầ N TH Ơ
KHOA CÔNG NGH Ệ THÔNG TIN & TT
Trang 2Ch ươ ng
Trang 4An toàn trong CSDL
đ 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
Trang 5tr ở đ /v ng ườ i dùng).
Trang 7Cấp quyề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
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.
Trang 8Chủ 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
Trang 9Ma Tr ậ n n Đ Đ i i ề u Khi ể n Truy C ậ 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:
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
Trang 10SQL: L ệ nh GRANT nh GRANT đ đ ể c ấ p quy ề 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.
Trang 11SQL: L ệ nh REVOKE nh REVOKE đ đ ể thu h ồ i quy ề 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
Trang 12B ằ 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 ở
Trang 13SQL: L ệ 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
Trang 14Ví d ụ 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’
Trang 15SQL: L ệ 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)
Trang 16Thu ậ n l ợ i và b ấ t l ợ i c ủ 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
Trang 17Sao L ư u v
Sao L ư u v à Ph ụ c H ồ 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
Trang 19M ậ t hó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
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).
Trang 20Công Ngh ệ 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.…
Trang 21RAID 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
Trang 22RAID 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
Trang 23RAID 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
Trang 24Cá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 ố
Trang 25Trá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ó
Trang 26Cài đặ t và nâng c ấ p ph ầ n m ề m h ệ th ố ng.
Phải đánh giá mọi ảnh hưởng đến dữ liệu và phần mềm hiện tại
trước khi nâng cấp
Phải lên kế hoạch hành động rõ ràng
Thông thường, việc nâng cấp phải diễn ra vào cuối tuần
Những thay đổi trong phiên bản mới có thể ảnh hưởng đến các
chương trình đã được viết bởi những lập trình viên ứng dụng
Trang 27Các biện pháp bảo vệ không sử dụng máy tính
Trang 29tránh s ự phá ho ạ i hay s ử a đổ i các d ữ li ệ u h ợ p pháp.
Trang 31Ki ế n trúc ứ ng d ụ ng c ng c ơ ơ s s ở d ữ li ệ u
Mô hình Client / server Mô hình Multi-tier
Trang 32Th ể hi ệ n CSDL (DB Instance)
Là s ự k ế t h ợ p gi ữ a SGA và các ti ế n trình n ề n
Trang 33C ấ u trúc CSDL Oracle
C ấ u trúc v ậ t lý
Data Files
Control Files
Redo Log Files
Archived Redo Log
Segments Tablespaces
Trang 34Data blocks, Extents & Segments
Trang 35Tablespace thuchanh Database
Trang 36Quan h ệ gi ữ a CT lu ậ n lý & v ậ t lý
Trang 37Ba ph ươ ng ph
Extent Datafile
Trang 38Schema và schema objects
Schema là m ộ t t ậ p h ợ p các đố i t ượ ng CSDL (database
Schema objects: table, index, view, synonyms, stored procedure…
Trang 39Data Dictionary
Là t ậ p h ợ p các b ả ng và khung nhìn (view).
L ư u tr ữ các thông tin v ề c ấ u trúc lu ậ n lý và v ậ t lý
c ủ a CSDL (ng ườ i dùng, quy ề n, c ấ u trúc b ả ng…) còn g ọ i là meta-data:
Thông tin ng ườ i dùng (quy ề n, vai trò…)
Trang 40Oracle net
Là m ộ t middleware đượ c cài đặ t trên Oracle Client và
Oracle Database Server
Cho phép thi ế t l ậ p phiên k ế t n ố i m ạ ng t ừ m ộ t ứ ng d ụ ng trình khách đế n máy ch ủ CSDL.
Ph ươ ng th ứ c k ế t n ố i thông d ụ ng: TCP/IP, port 1521
Trang 41alter database
open
Trang 43Ng ư
Ng ư ờ i dùng m ặ c c đ đ ị nh
Sys / change_on_install và System / manager
C ả hai đề u có quy ề n DBA
Trang 44T ạ o ng o ng ư ư ờ i dùng m ớ i
CREATE USER username
IDENTIFIED {BY password | EXTERNALLY}
[ DEFAULT TABLESPACE tablespace ]
[ TEMPORARY TABLESPACE tablespace ]
[ QUOTA {integer [K | M ] | UNLIMITED } ON
Trang 45S ử a thông tin ng a thông tin ng ư ư ờ i dùng
ALTER USER username [ IDENTIFIED {BY password |
EXTERNALLY }]
ALTER USER username
[ DEFAULT TABLESPACE tablespace]
[ TEMPORARY TABLESPACE tablespace]
{[ QUOTA {integer [K | M] | UNLIMITED } ON tablespace
[ QUOTA {integer [K | M] | UNLIMITED } ON tablespace ] […] }; ALTER USER username ACCOUNT {LOCK|UNLOCK};
ALTER USER username PASSWORD EXPIRE;
DROP USER username
Trang 46Qu ả n lý quy ề n
Có hai lo ạ i quy ề n:
Quy ề n đố i t ượ ng:
Là các quy ề n thao tác (nh ư select, insert,
update,…) trên m ộ t đố i t ượ ng c ủ a CSDL nh ư
table, view, procedure,…
Quy ề n h ệ th ố ng:
Là các quy ề n thao tác trên CSDL nh ư ng không
g ắ n v ớ i b ấ t c ứ đố i t ượ ng nào nh ư create table,
create procedure,…
Trang 47Các quy ề n h ệ th ố ng thông d ụ ng
Phân loại Các quyền thông dụng
TABLE
CREATE TABLE CREATE ANY TABLE ALTER ANY TABLE DROP ANY TABLE SELECT ANY TABLE UPDATE ANY TABLE DELETE ANY TABLE SESSION
CREATE SESSION ALTER SESSION RESTRICTED SESSION TABLESPACE
CREATE TABLESPACE ALTER TABLESPACE DROP TABLESPACE UNLIMITED TABLESPACE
Trang 48M ộ t s ố l l ư ư u ý v u ý v ề quy ề n h ệ th ố ng
CREATE SESSION là quy ề n t ố i thi ể u nh ấ t c ủ a m ộ t user
để có th ể k ế t n ố i vào CSDL.
Các quy ề n nh ư CREATE TABLE, CREATE
PROCEDURE, CREATE TRIGGER bao g ồ m c ả các
quy ề n xoá các đố i t ượ ng đ ó.
CREATE TABLE bao g ồ m các quy ề n CREATE INDEX
và ANALYZE V ớ i quy ề n này, ng ườ i dùng c ầ n có đủ
quota trên tablespace hay ph ả i đượ c gán UNLIMITED TABLESPACE.
Các quy ề n có kèm ANY ngh ĩ a là có th ể th ự c hi ệ n quy ề n này trên b ấ t c ứ schema nào VD: quy ề n CREATE ANY TABLE.
Trang 50L ư u ý v
Ng ườ i dùng đượ c gán quy ề n a v ớ i tu ỳ ch ọ n WITH
ADMIN OPTION thì có th ể ti ế p t ụ c gán quy ề n a đ ó cho
m ộ t ng ườ i dùng khác, th ậ m chí v ớ i tùy ch ọ n WITH
ADMIN OPTION.
Ng ườ i dùng nào có quy ề n h ệ th ố ng v ớ i ADMIN
OPTION đề u có th ể thu h ồ i quy ề n này t ừ b ấ t k ỳ ng ườ i dùng nào.
T ấ t c ả các ng ườ i dùng có quy ề n GRANT ANY ROLE
c ũ ng có th ể gán hay thu h ồ i b ấ t k ỳ quy ề n nào.
Mu ố n g ỡ b ỏ ADMIN OPTION c ủ a 1 ng ườ i dùng thì ph ả i
g ỡ b ỏ quy ề n đ ó tr ướ c, sau đ ó gán l ạ i mà không có
ADMIN OPTION.
Trang 53[WITH GRANT OPTION] ;
REVOKE { object_priv [, object_priv ] | ALL
[PRIVILEGES] }
ON [schema.]object
FROM {user|role|PUBLIC} [, {user|role|PUBLIC} ]
[CASCADE CONSTRAINTS] ;
Trang 54L ư u ý khi g
L ư u ý khi g án quy ề n n đ đ ố i t i t ư ư ợ ng
Để gán các quy ề n trên đố i t ượ ng, đố i t ượ ng đ ó ph ả i
thu ộ c v ề schema c ủ a ng ườ i dùng th ự c hi ệ n gán ho ặ c
ng ườ i dùng đ ó có quy ề n WITH GRANT OPTION.
M ặ c đị nh n ế u m ộ t đố i t ượ ng thu ộ c v ề m ộ t ng ườ i dùng nào đ ó thì ng ườ i dùng đ ó có đầ y đủ các quy ề n trên đố i
t ượ ng đ ó.
Tu ỳ ch ọ n WITH GRANT OPTION không dùng cho vi ệ c gán các quy ề n đố i t ượ ng cho các Role.
Trang 55L ư u ý khi thu h
L ư u ý khi thu h ồ i quy ề n n đ đ ố i t i t ư ư ợ ng
Để thu h ồ i quy ề n đố i t ượ ng thì ng ườ i thu h ồ i ph ả i là
ng ườ i đ ã gán quy ề n đ ó.
Vì v ậ y, khi ra l ệ nh thu h ồ i t ấ t c ả (ALL) ngh ĩ a là ch ỉ thu
h ồ i t ấ t c ả các quy ề n mà ng ườ i thu đ ã gán thôi.
Mu ố n g ỡ b ỏ GRANT OPTION c ủ a 1 ng ườ i dùng thì
ph ả i g ỡ b ỏ quy ề n đ ó tr ướ c, sau đ ó gán l ạ i mà không có GRANT OPTION.
Trang 56Đượ c gán và thu h ồ i t ừ ng ườ i dùng.
Có th ể gán role cho b ấ t c ứ ng ườ i dùng nào ngo ạ i tr ừ cho chính nó.
Có th ể bao g ồ m c ả quy ề n h ệ th ố ng (system privileges) và quy ề n đố i
t ượ ng (object privileges).
Có th ể enable và disable các Role đượ c gán cho các ng ườ i dùng.
Có th ể yêu c ầ u password khi c ầ n enable các Role.
Tên các Role không trùng v ớ i tên ng ườ i dùng và tên các Role đ ang
t ồ n t ạ i.
Không thu ộ c v ề b ấ t c ứ ng ườ i dùng nào và không thu ộ c v ề b ấ t c ứ
schema nào.
Trang 57T ạ o, s ử a và xóa role
CREATE ROLE role_name [NOT IDENTIFIED | IDENTIFIED
{BY password | EXTERNALLY }]
ALTER ROLE role_name {NOT IDENTIFIED | IDENTIFIED
{BY password | EXTERNALLY }} ;
DROP ROLE role_name;
Trang 58Gán và thu h ồ i role t ừ user
GRANT role_name [, role_name ]
TO {user|role|PUBLIC} [, {user|role|PUBLIC} ]
[WITH ADMIN OPTION] ;
REVOKE role_name [, role_name ]
FROM {user|role|PUBLIC}[, {user|role|PUBLIC} ] ;
Trang 59Import / Export
Export : xu ấ t n ộ i dung lu ậ n lý c ủ a m ộ t CSDL vào m ộ t
t ậ p tin nh ị phân => t ậ p tin dump.
Import: dùng t ậ p tin dump này để t ạ o l ạ i các đố i t ượ ng CSDL trên m ộ t schema ho ặ c trên toàn b ộ CSDL.
S ử d ụ ng l ệ nh exp, imp trong c ử a s ổ command c ủ a
Windows (ho ặ c Terminal c ủ a Linux)
Trang 60Yêu c ầ u v ề quy ề n
Hành động Quyền hoặc vai trò cần thiết
Export schema của người dùng
khác
SYSDBA, EXP_FULL_DATABASE và DBA
Export toàn bộ CSDL hoặc
tablespace
EXP_FULL_DATABASE
Trang 61Ví d ụ
Export toàn bộ CSDL (full=y) không có dữ liệu (rows=n): exp
userid=sys/hqtcsdl@xe file=D:\export_full.dmp
log=D:\export_full.log full=y rows=n
Export toàn bộ schema của người dùng SCOTT: exp
userid=sys/hqtcsdl@xe file=D:\scott.dmp log=D:\scott.log
owner=scott
Export bảng DEPT trong schema SCOTT: exp
userid=scott/tiger@xe file=D:\scott_dept.dump
log=scott_dept.log tables=dept
Import tất cả schema: imp userid=system/hqtcsdl@xe
file=D:\export_full.dmp log=D:\imp_full.log full=y
Import các đối tượng của SCOTT vào schema TEST: imp
userid=system/hqtcsdl@xe file=D:\scott.dmp
log=D:\imp_scott_test.log fromuser=scott touser=test
Import bảng DEPT của SCOTT vào schema TEST: imp
Trang 62Tham số Ý nghĩĩĩĩa Giá trị mặc
Userid Chuỗi kết nối CSDL dưới
dạng <tên người dùng>/<mật khẩu>[@<tên dịch vụ mạng>]
Contraints Imp/Exp các ràng buộc Y x x File Tên tập tin DUMP expdat.dmp x x
Rows Exp dữ liệu ra file dump Y x x Grants Imp/Exp các quyền trên đối
tượng
Indexes Imp/Exp các chỉ mục Y x x Query Định nghĩa điều kiện lọc các
dữ liệu cần Export
x
Trang 63Tham số Ý nghĩĩĩĩa
Giá trị mặc
được lưu trữ trong
Trang 64Oracle Data Pump
Data Pump th ừ a h ưở ng t ấ t c ả tính n ă ng c ủ a ph ươ ng pháp import/export truy ề n th ố ng; nh ư ng có t ố c độ th ự c
hi ệ n nhanh h ơ n imp/exp ít nh ấ t 2 l ầ n.
T ậ p tin xu ấ t ra t ừ l ệ nh expdp s ẽ l ư u trên server, t ậ p tin
d ữ li ệ u mà impdp thao tác c ũ ng ph ả i l ư u trên server;
trong th ư m ụ c đố i t ượ ng
Ng ườ i dùng nào đượ c gán quy ề n đọ c ghi trên th ư m ụ c
đố i t ượ ng này thì m ớ i có th ể s ử d ụ ng nó.