Bài th c hành s 7
VIRTUAL PRIVATE DATABASE (2)
Tóm t t n i dung:
Quy n EXEMPT ACCESS POLICY
Giám sát quy n EXEMPT ACCESS POLICY
X lý các Exception v Policy Function
Column Sensitive VPD
I. Quy n EXEMPT ACCESS POLICY
A. Lý thuy tế
Tuy RLS cung c p m t k thu t b o m t r t t t, nh ng nó cũng d n đn m t s ư ế
khó ch u khi th c hi n các tác v qu n tr CSDL (ví d : tác v backup d li u). Nh ư
đã bi t, ngay c các DBA và ng i ch c a các đi t ng đó cũng không th tránhế ườ ượ
đc các chính sách b o m t. N u ng i ch c a m t b ng nào đó ho c m t DBAượ ế ườ
th c hi n backup d li u c a b ng đó trong khi các chính sách b o m t trên nó v n
có tác d ng, r t có th file backup s không có d li u nào h t. Vì lý do này (và m t ế
s lý do khác n a), Oracle cung c p quy n EXEMPT ACCESS POLICY. Ng i ườ
đc c p quy n này s đc mi n kh i t t c các function RLS. Ng i qu n trượ ượ ườ
CSDL có nhi m v th c hi n backup c n có quy n này đ đm b o r ng t t c các
d li u s đc backup l i. ượ
B. Th c hành
Ví d sau s minh h a vi c c p quy n này và nh h ng c a nó trên các function ư
RLS:
system@KNOX10g> CONN system/manager
Connected.
Chương Trình Đào Tạo Từ Xa KH & KT Máy Tính – Đại học Bách Khoa TP.HCM
system@KNOX10g> -- SYSTEM bị ảnh hưởng bởi các policy function
system@KNOX10g> -- Nên không có record nào được delete
system@KNOX10g> DELETE FROM scott.emp;
0 rows deleted.
system@KNOX10g> -- Cấp quyền để SYSTEM kg bị ảnh hưởng bởi
policy function
system@KNOX10g> GRANT EXEMPT ACCESS POLICY TO SYSTEM;
Grant succeeded.
system@KNOX10g> -- SYSTEM không còn bị ảnh hưởng bởi các policy
function
system@KNOX10g> -- Tất cả các record bị xóa
system@KNOX10g> DELETE FROM scott.emp;
14 rows deleted.
system@KNOX10g> ROLLBACK;
II. Giám sát quy n EXEMPT ACCESS POLICY
A. Lý thuy tế
Do đây là quy n r t m nh, không ch đnh trên c th m t schema hay object nào nên
ta c n c n tr ng trong vi c qu n lý xem ai đc phép n m gi quy n này. M c ượ
đnh, nh ng user có các quy n SYSDBA s có quy n này (account SYS)
Ta không th ngăn c n các user đc c p quy n kh i vi c l m d ng quy n đc ượ ượ
c p. Ta ch có th theo dõi xem h làm gì v i quy n đc c p đó. Auditing là m t ượ
cách hi u qu đ đm b o quy n mi n tr kh i các chính sách RLS không b l m
d ng. Auditing s đc trình bày k h n trong các bài lab v Auditing sau này. Trong ượ ơ
ph n này s m c đnh là sinh viên đã bi t và hi u v auditing. Sinh viên có th đc ế
l i ph n này sau khi h c v Auditing.
Chương Trình Đào Tạo Từ Xa KH & KT Máy Tính – Đại học Bách Khoa TP.HCM
B. Th c hành
Ta có th ki m tra xem ai đc c p quy n EXEMPT ACCESS POLICY b ng câu ượ
l nh sau:
Chương Trình Đào Tạo Từ Xa KH & KT Máy Tính – Đại học Bách Khoa TP.HCM
sec_mgr@KNOX10g> SELECT grantee
FROM dba_sys_privs
WHERE PRIVILEGE = 'EXEMPT ACCESS POLICY';
GRANTEE
------------------------------
SYSTEM
Ví d sau s trình bày cách đ audit quy n này. Đng th i m i khi áp d ng vi c này,
ta cũng c n ki m tra xem vi c audit đã đc th c hi n nh mình nghĩ ch a. ượ ư ư
sec_mgr@KNOX10g> -- Audit quyền EXEMPT ACCESS POLICY
sec_mgr@KNOX10g> AUDIT EXEMPT ACCESS POLICY BY ACCESS;
Audit succeeded.
sec_mgr@KNOX10g> -- Kiểm tra việc audit bằng cách thực hiện tác
sec_mgr@KNOX10g> -- vụ trong account người được cấp quyền
sec_mgr@KNOX10g> CONN system/manager
Connected.
system@KNOX10g> DELETE FROM scott.emp;
14 rows deleted.
system@KNOX10g> -- Rollback để undo lệnh delete
system@KNOX10g> -- Lệnh Rollback sẽ không xóa được audit record
mà Oracle
system@KNOX10g> -- vừa tạo ra khi SYSTEM thực hiện lệnh DELETE
system@KNOX10g> ROLLBACK ;
Rollback complete.
system@KNOX10g> CONN sec_mgr/oracle10g
Connected.
sec_mgr@KNOX10g> -- Hiển thị tác vụ vừa được audit
sec_mgr@KNOX10g>
BEGIN
Chương Trình Đào Tạo Từ Xa KH & KT Máy Tính – Đại học Bách Khoa TP.HCM
FOR rec IN (SELECT * FROM dba_audit_trail)
LOOP
DBMS_OUTPUT.put_line ('-------------------------');
DBMS_OUTPUT.put_line ('Who: ' || rec.username);
DBMS_OUTPUT.put_line ('What: ' || rec.action_name
|| ' on ' || rec.owner
|| '.' || rec.obj_name);
DBMS_OUTPUT.put_line ('When: '
|| TO_CHAR(rec.TIMESTAMP,'MM/DD HH24:MI'));
DBMS_OUTPUT.put_line ('How: "'|| rec.sql_text || '"');
DBMS_OUTPUT.put_line ('Using: ' || rec.priv_used);
END LOOP;
END;
/
-------------------------
Who: SYSTEM
What: DELETE on SCOTT.EMP
When: 04/04 14:22
How: "DELETE FROM scott.emp"
Using: DELETE ANY TABLE
-------------------------
Who: SYSTEM
What: DELETE on SCOTT.EMP
When: 04/04 14:22
How: "DELETE FROM scott.emp"
Using: EXEMPT ACCESS POLICY
PL/SQL procedure successfully completed.
Audit trail hi n th 2 record b i vì SYSTEM đã s d ng 2 quy n khi th c hi n l nh
DELETE. Quy n th nh t là quy n DELETE ANY TABLE cho phép delete trên t t
c các b ng. Quy n th hai là quy n EXEMPT ACCESS POLICY cho phép không b
nh h ng b i chính sách b o m t đc áp đt cho b ng EMP. ưở ượ
Chương Trình Đào Tạo Từ Xa KH & KT Máy Tính – Đại học Bách Khoa TP.HCM