ự
ố
Bài th c hành s 13
FINEGRAINED AUDITING
ắ ộ
Tóm t
t n i dung:
(cid:0) ớ ệ ề Gi i thi u v Finegrained Auditing
(cid:0) Các chính sách Finegrained Auditing
(cid:0) ử ụ S d ng gói DBMS_FGA trong Oracle
I. Finegrained Auditing
ớ
1. Gi
ệ i thi u:
ượ ớ ệ ở ủ ư Nh đã đ c gi i thi u ấ Lab 12, Standard Auditing c a Oracle có tính c u
ộ ậ ố ị ủ ả ấ ấ ự ệ hình cao. B n ghi d u (audit trail) c a nó cung c p m t t p c đ nh các s ki n
ố ượ ề ặ ượ ử ụ mà giám sát các quy n, các đ i t ng ho c có câu SQL đ ồ c s d ng bao g m
ữ ề ườ ự ủ ế ả ầ nh ng thông tin v môi tr ấ ng và k t qu câu truy v n. T m v c c a standard
ể ượ ở ộ ằ auditing cũng có th đ ấ ử ụ c m r ng b ng cách s d ng trigger và cung c p
ữ ụ ủ ể ự thêm nh ng thông tin ph . Tuy nhiên 2 tiêu chí c a auditing không th th c
ệ ở ố ữ ể ầ ế ỉ hi n b i standard auditing: t i thi u nh ng giám sát không c n thi t, và ch ra
ữ ạ ậ nh ng truy c p gây h i.
ể ỏ ữ ầ ớ Finegrained auditing (FGA) có th th a mãn nh ng nhu c u đó. V i FGA, ta có
ể ặ ề ệ ế ơ ầ ả ề th đ t ra nhi u đi u ki n giám sát chi ti t h n. Ta không c n ph i thi ế ậ t l p
ỉ ầ ạ ứ ể ố ạ thông s cho AUDIT_TRAIL đ kích ho t ch c năng này, mà ch c n t o ra các
ạ ộ ố ượ ụ ồ chính sách FGA r i áp d ng chúng trên các ho t đ ng hay các đ i t ng c th ụ ể
ơ ở ữ ệ ế ặ ố ơ ườ mà ta mu n giám sát. C ch này trong c s d li u ngăn ch n ng i dùng
ệ ố ắ ữ ể ả ấ ỏ ị kh i vi c c g ng tìm cách truy v n vòng đ không b giám sát. Nh ng b n ghi
Chương Trình Đào Tạo Từ Xa
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM
ẽ ư ượ ậ ả ủ c a FGA s l u trong b ng SYS.FGA_LOG$ và đ c truy c p thông qua view
DBA_FGA_AUDIT_TRAIL.
Ư ế ủ ớ
2.
u th c a Finegrained Auditing so v i Trigger:
ấ ự ệ ữ ầ ằ ỏ Finegrained auditing th a mãn nh ng nhu c u b ng cách cung c p s hi u qu ả
ượ ươ ả ọ ị v t lên trên ph ng pháp trigger. Trigger ph i gánh ch u quá trình g i hàm
ỗ ượ ộ ả ử ạ ỉ PL/SQL khi m i hàng đ ộ ộ c x lí và t o ra m t b n ghi audit ch khi m t c t
ổ ở ệ ợ ộ ị thích h p b thay đ i b i m t câu l nh DML.
M t khác, m t chính sách finegrainned auditing không ph i gánh ch u chi phí
ặ ả ộ ị
ụ ể ộ ầ ẽ ỗ ỗ ỉ cho m i hàng. Nó ch giám sát m t l n cho m i chính sách. C th , nó s giám
ợ ụ ể ị ộ ộ ạ ệ ộ ở ộ ị sát khi m t c t thích h p c th b tác đ ng b i m t lo i l nh DML xác đ nh,
ọ ọ ủ ặ ằ ổ ở ặ ị ệ ẩ ho c b thay đ i b i câu l nh ho c n m trong tiêu chu n ch n l c c a nó
3. Chính sách trong Finegrained Auditing:
ấ ữ ệ ự ể ệ ộ ủ Chính sách FGA có th theo dõi vi c truy xu t d li u d a trên n i dung c a
ể ỉ ử ụ ề ệ ộ ữ ệ d li u đó. S d ng chính sách, ta có th ch rõ c t nào và đi u ki n khi nào ta
ớ ầ ả ạ ệ ể ấ ấ m i c n ph i ghi l i vi c truy xu t đó. Ta cũng có th cung c p thêm tên hàm
ộ ự ệ ự ể ả ắ ố mà ta mu n th c thi khi m t s ki n giám sát x y ra. Hàm đó có th nh c nh ở
ặ ườ ử ả ỗ ấ ườ ộ ho c báo đ ng cho ng ị i qu n tr hay x lí l i và các b t th ng.
ự ệ
4. Hàm x lí s ki n: ử
ể ề ệ ị Trong chính sách FGA có th xác đ nh đi u ki n khi nào ta truy xu t d li u s ấ ữ ệ ẽ
ể ử ụ ữ ử ộ gây ra m t trigger giám sát. Nh ng chính sách đó có th s d ng các x lí s ự
ự ệ ệ ể ể ể ắ ả ỏ ị ụ ả ki n uy n chuy n đ nh c nh nhà qu n tr khi s ki n trigger x y ra. Ví d ,
ề ươ ể ậ ộ m t công ty có th cho phép nhân viên HR truy c p thông tin v l ng mà
ớ ố ươ ư ệ ị ớ ơ không b giám sát, nh ng khi làm vi c v i s l ng l n h n $500k thì s b ẽ ị
ẽ ả ệ ả ả ị ệ ố giám sát. Khi đó vi c đó x y ra h th ng s c nh báo cho nhà qu n tr .
ơ ế ự ệ ả ượ ự ệ ộ C ch th c hi n c nh báo đó đ ờ c th c hi n nh vào m t hàm:
PROCEDURE fname(
Chương Trình Đào Tạo Từ Xa
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM
object_schema VARCHAR2,
object_name VARCHAR2,
policy_name VARCHAR2)
AS ...
Chương Trình Đào Tạo Từ Xa
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM
Trong đó:
ủ ủ ụ fname: tên c a th t c
object_schema: tên c a schema ch a b ng b giám sát
ứ ả ủ ị .
object_name: tên c a b ng b giám sát.
ủ ả ị
policy_name: tên c a chính sách
ủ
ộ
5. Hàm và các c t liên quan trong Finegrained Auditng:
Đ hi n th c thêm uy n chuy n, ta có th thêm vào các hàm t
ể ệ ự ể ể ể ự ị đ nh nghĩa đ ể
ầ ượ ề ệ ộ ị ộ ư đ a ra đi u ki n cho chính sách và xác đ nh c t nào c n đ c giám sát (c t liên
ộ ả ể ạ ụ ể ọ quan) đ tinh l c chính sách giám sát. Ví d , hàm đó có th t o ra m t b n ghi
ứ ươ ậ ớ ơ ị ỉ giám sát ch khi m c l ng l n h n $250k b truy c p.
Ch rõ c t liên quan có th giúp gi m các tr
ể ả ộ ỉ ườ ư ợ ả ng h p sai cũng nh là các b n
ầ ế ỉ ầ ượ ệ ở ự ệ ghi không c n thi t, b i vì vi c giám sát ch c n đ c th c hi n khi m t c t c ộ ộ ụ
ể ượ ụ ế ể ả ộ th đ ấ c tham kh o đ n trong câu truy v n. Ví d , m t công ty có th ch ỉ
ố ạ ự ề ươ ậ ủ mong mu n ghi l i s truy c p thông tin v l ng khi tên c a nhân viên cũng b ị
ề ươ ế ậ ở ỉ ế truy c p, b i vì n u ch xem thông tin v l ng không mà không bi t tên ng ườ i
ể ỉ ệ ằ ở ử ố ươ s h u s l ng đó cũng vô nghĩa. Ta cũng có th ch rõ r ng vi c giám sát ch ỉ
ấ ả ề ộ ượ ặ ả ả x y ra khi t t c các c t liên quan đi u đ ỉ ộ ế c tham kh o đ n, ho c ch m t
ượ ả ộ trong các c t liên quan đ c tham kh o.
ườ ộ ộ ề ơ ợ ượ ỉ ị Trong tr ng h p nhi u h n m t c t liên quan đ c ch đ nh, Oracle Database
ộ ả ế ế ấ ả ộ ẽ s sinh ra m t b n ghi giám sát n u câu lênh SQL tham kh o đ n b t kì c t nào
ộ ượ ữ trong nh ng c t đ c giám sát đó.
ề ệ
6. Đi u ki n giám sát NULL:
Đ đ m báo vi c giám sát các hành đ ng c th (statement_types) nh h
ụ ể ể ả ệ ả ộ ưở ng
ớ ộ ượ ữ ặ ả ỉ ị ệ ề t i nh ng c t đ c ch đ nh rõ (audit_column), đ c t đi u ki n giám sát
ề ượ ư ề ệ ể (audit_condition) là NULL, đi u đó đ ộ c hi u nh là m t đi u ki n đúng.
ề ệ ạ ượ ử ụ ư D ng đi u ki n cũ “1=1” không còn đ c s d ng nh trong Oracle 9i vì nó
ượ ế ả ậ ố ộ không có đ ẽ ẫ ạ c k t qu mong mu n m t cách đáng tin c y. NULL s v n t o
Chương Trình Đào Tạo Từ Xa
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM
ượ ự ể ả ượ ử ra đ c s giám sát k c khi không có dòng nào đ c x lí, do đó t ấ ả ọ t c m i
L u ýư :
ạ ộ ề ượ ộ ớ ạ ho t đ ng trên c t liên quan (audit_column) v i chính sách đó đ u đ c ghi l i.
ỗ ỗ ử ụ ươ ươ ẽ ẫ ớ ị
S d ng chu i r ng không t
ng đ ng v i giá tr NULL và s d n đ n s ế ự
giám sát đáng tin c y.ậ
ế ề ệ ặ ượ ặ ả ấ
N u NULL ho c không có đi u ki n giám sát nào đ
c đ c t , thì b t kì
ộ ả ề ế ộ ộ ỏ ộ hành đ ng nào tác đ ng lên m t b ng th a chính sách đó đ u khi n cho m t
ượ ạ ượ ả b n ghi giám sát đ c t o ra, dù cho có không có dòng nào đ c tr v t ả ề ừ
câu truy v n.ấ
II. Gói DBMS_FGA trong Oracle
ứ ể ể ả ậ ả ấ Gói DBMS_FGA cung c p ch c năng b o m t FGA. Đ có th qu n lý các
ự ề ầ ả chính sách giám sát, ta c n ph i có quy n th c thi trên DBMS_FGA (EXCUTE ON
DBMS_FGA)
ủ ụ
1.
Th t c ADD_POLICY
ủ ụ ể ạ ố Th t c này dùng đ t o ra các chính sách giám sát. S chính sách giám sát t ố i
Cú pháp
ộ ả ặ đa trên m t b ng ho c view là 256.
DBMS_FGA.ADD_POLICY(
object_schema VARCHAR2,
object_name VARCHAR2,
policy_name VARCHAR2,
audit_condition VARCHAR2,
audit_column VARCHAR2,
handler_schema VARCHAR2,
handler_module VARCHAR2,
enable BOOLEAN,
statement_types VARCHAR2,
audit_trail BINARY_INTEGER IN DEFAULT,
Chương Trình Đào Tạo Từ Xa
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM
audit_column_opts BINARY_INTEGER IN DEFAULT);
Tham số
Chương Trình Đào Tạo Từ Xa
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM
Tên Mô tả ặ ị M c đ nh
ố ượ ủ ứ ế ị object_schema Tên c a schema ch a đ i t ng b giám sát (N u NULL NULL
ệ ố ẽ ấ ệ ạ ủ thì h th ng s l y schema c a user hi n t i)
ủ ị object_name Tên c a object b giám sát.
ủ ả policy_name ấ Tên c a chính sách, tên này ph i duy nh t
ệ ề ượ audit_condition ể Đi u ki n đ hàm đó đ c giám sát. NULL có nghĩa là NULL
ẽ ị hàng nào cũng s b giám
ẽ ượ ữ ộ ể audit_column Nh ng c t liên quan s đ ậ ỗ c ki m tra m i khi truy c p. NULL
ị ặ ữ ồ ị ộ ẩ Chúng bao g m nh ng c t n. Giá tr m c đ nh NULL
ẽ ả ấ ộ ữ ế nghĩa là giám sát s x y ra n u b t kì c t nào trong nh ng
ặ ả ậ ị ưở ộ c t liên quan đó b truy c p ho c nh h ng.
ử ứ ự ặ ị handler_schema ẽ ấ Schema ch a hàm x lí s kiên. M c đ nh NULL s l y NULL
ệ ạ ủ schema c a user hi n t i.
ử ượ ọ ỉ handler_module ự ệ Tên hàm x lí s ki n. Hàm này đ c g i ch sau khi hàng NULL
ề ệ ỏ ấ ầ đ u tiên mà th a đi u ki n giám sát trong câu truy v n
ượ ị ỗ ớ ạ ệ ử ế đ c x lí. N u hàm này b l ộ i v i m t ngo i l nào đó
ể ự ệ ẽ ị thì câu l nh SQL b giám sát s cũng không th th c thi
đ c.ượ
ằ ị enable Giá tr này b ng TRUE có nghĩa là chính sách này đ ượ c TRUE
kích ho t.ạ
ụ ệ ể statement_types Ki u câu l nh SQL mà chính sách này áp d ng vào: SELECT
INSERT, UPDATE, DELETE, hay ch làỉ SELECT.
audit_trail DB+EXTENDE ơ ạ ả N i ghi l i các b n ghi giám sát D
ả ớ ệ ấ ị audit_column_opt Câu l nh b giám sát khi câu truy v n tham kh o t ộ i m t ANY_COLUM
ộ ượ ố ỉ s ữ trong nh ng c t đ c ch ra trong tham s audit_column NS
ộ ượ ả ỉ hay ph i tham kh o t ả ớ ấ ả i t t c các c t đ c ch ra trong
đó.
Chương Trình Đào Tạo Từ Xa
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM
Chú ý v tham s audit_trail:
ề ố
audit_trail => DBMS_FGA.DB : b n ghi giám sát s đ
ẽ ượ ả ả c ghi vào b ng
ủ ơ ở ữ ệ ạ ỏ ộ SYS.FGA_LOG$ c a c s d li u và lo i b c t SQL Text và SQL Bind.
audit_trail => DBMS_FGA.DB+EXTENDED : b n ghi giám sát s đ
ả ẽ ượ c
ả ủ ơ ở ữ ệ ghi vào b ng SYS.FGA_LOG$ c a c s d li u và có thêm hai SQL Text
và SQL Bind.
audit_trail => DBMS_FGA.XML: b n ghi giám sát s đ
ẽ ượ ả c ghi vào file
ượ ư ệ ề ứ ộ XML, file này đ c l u trong h đi u hành và không ch a hai c t SQL Text
và SQL Bind.
audit_trail => DBMS_FGA.XML+EXTENDED: b n ghi giám sát s
ả ẽ
ượ ượ ư ệ ề ứ đ c ghi vào file XML, file này đ c l u trong h đi u hành và ch a hai
ộ c t SQL Text và SQL Bind.
Các thông s c a audit_trail n m trong view ALL_AUDIT_POLICIES.
ố ủ ằ
ủ ụ
2.
Th t c DISABLE_POLICY
Cú pháp
ể ấ ủ ụ ạ ộ Th t c này đ b t ho t m t chính sách giám sát.
DBMS_FGA.DISABLE_POLICY(
object_schema VARCHAR2,
object_name VARCHAR2,
policy_name VARCHAR2 );
Tham số
Tên Mô tả
ứ ố ượ ủ ị object_schema Tên c a schema ch a đ i t ng b giám sát
ủ ố ượ ị object_name Tên c a đ i t ng b giám sát
ủ policy_name Tên c a chính sách.
ủ ụ
3.
Th t c ENABLE_POLICY
Cú pháp
ủ ụ ạ ộ Th t c này cho phép kích ho t m t chính sách giám sát.
Chương Trình Đào Tạo Từ Xa
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM
DBMS_FGA.ENABLE_POLICY(
object_schema VARCHAR2,
object_name VARCHAR2,
policy_name VARCHAR2,
enable BOOLEAN);
Tham số
Tên Mô tả
ứ ố ượ ủ ị object_schema Tên c a schema ch a đ i t ng b giám sát.
ủ ố ượ ị object_name Tên c a đ i t ng b giám sát.
ủ policy_name Tên c a chính sách
ị ặ ị enable TRUE là giá tr m c đ nh.
ủ ụ
4.
Th t c DROP_POLICY
Cú pháp
ể ạ ỏ ộ ủ ụ Th t c này đ lo i b m t chính sách giám sát.
DBMS_FGA.DROP_POLICY(
object_schema VARCHAR2,
object_name VARCHAR2,
policy_name VARCHAR2 );
Tham số
Tên Mô tả
ứ ố ượ ủ ị object_schema Tên c a schema ch a đ i t ng b giám sát.
ủ ố ượ ị object_name Tên c a đ i t ng b giám sát.
ủ policy_name Tên c a chính sách.
ự III. Th c hành
Giám sát t
ấ ả ệ t c các câu l nh (INSERT , UPDATE, DELETE, SELECT) trên
ộ ươ ữ ể ế ấ ậ ả b ng hr.emp đ theo dõi nh ng câu truy v n mà truy c p đ n c t l ủ ng c a nhân
ộ viên thu c phòng SALES.
BEGIN
Chương Trình Đào Tạo Từ Xa
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM
DBMS_FGA.ADD_POLICY(
object_schema => 'hr',
object_name => 'emp',
policy_name => 'chk_hr_emp',
audit_condition => 'dept = ''SALES'' ',
audit_column => 'salary'
statement_types=>'insert,update,delete,select');
END;
Nh ng câu l nh sau s gây ra giám sát:
ữ ẽ ệ
SELECT count(*)
FROM hr.emp
WHERE dept = 'SALES' and salary > 10000000;
SELECT salary
FROM hr.emp
WHERE dept = 'SALES';
DELETE
FROM hr.emp
WHERE salary >1000000;
H y b chính sách này ta có th dùng th t c DROP_POLICY
ủ ỏ ủ ụ ể
BEGIN
DBMS_FGA.DROP_POLICY(
object_schema => 'hr',
object_name => 'emp',
policy_name => 'chk_hr_emp');
END;
Chương Trình Đào Tạo Từ Xa
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM
ề ệ ả ổ ỗ ầ Ta b sung thêm vào chính sách yêu c u, m i khi đi u ki n trên x y ra thì h ệ
ẽ ả ử ầ ả ầ ố ớ ộ ị ự ệ th ng s c nh báo cho nhà qu n tr . V i yêu c u đó, ta c n m t hàm x lí s ki n
ư ướ nh d i đây
/* create audit event handler */
CREATE PROCEDURE sec.log_id (schema1 varchar2, table1
varchar2, policy1 varchar2) AS
BEGIN
-- send an alert note to my pager
UTIL_ALERT_PAGER(schema1, table1, policy1);
END;
ạ T o chính sách
DBMS_FGA.ADD_POLICY(
object_schema => 'hr',
object_name => 'emp',
policy_name => 'chk_hr_emp',
audit_condition => 'dept = ''SALES'' ',
audit_column => 'salary',
handler_schema => 'sec',
handler_module => 'log_id',
enable => FALSE
statement_types =>'INSERT, UPDATE, SELECT, DELETE',
audit_trail => DBMS_FGA.DB+DBMS_FGA.EXTENDED,
audit_column_opts => DBMS_FGA.ALL_COLUMNS);
ằ ạ ạ ố ở ấ B i vì lúc t o chính sách ta đã b t ho t chính sách đó b ng tham s :
enable => FALSE
ể ạ ậ ố ủ ụ Vì v y sau này khi nào ta mu n kích ho t chính sách đó ta có th dùng th t c
ENABLE _POLICY
BEGIN
Chương Trình Đào Tạo Từ Xa
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM
DBMS_FGA.ENABLE_POLICY(
object_schema => 'hr',
object_name => 'emp',
policy_name => 'chk_hr_emp',
enable => TRUE);
END;
IV. BÀI T PẬ
1.
ủ ạ ả ộ T o b ng ACCOUNTS thu c schema c a user ACCMASTER
ACCNO ACCNAME BAL
---------- -------------------- ----------
1 Alex 10000
2 Bill 15000
3 Charlie 20000
2.
4 David 25000
ự ệ ấ ộ ả Hi n th c chính sách: giám sát khi m t user nào đó truy xu t vào b ng
3.
ặ ằ ơ ố ư ớ ACCOUNTS và xem s d l n h n ho c b ng 20000.
1 begin
2 dbms_fga.add_policy (
3 object_schema => 'ACCMASTER',
4 object_name => 'ACCOUNTS',
5 policy_name => 'ACC_MAXBAL',
6 audit_column => 'ACCNO, BAL',
7 audit_condition => 'BAL >= 20000',
8 handler_schema => 'ACCMASTER',
9 handler_module => 'FGA_SEND_MAIL'
10
audit_column_opts => dbms_fga.all_columns
11 );
12 end;
ả ử Gi s ta có chính sách:
Chương Trình Đào Tạo Từ Xa
KH & KT Máy Tính – Đại học Bách Khoa TP.HCM
select * from accounts;
select accname
from accounts
where bal > 20000 ;
select accname
from accounts
where bal > 20000 and accno >=3;
select accname
from accounts
where bal > 20000 and accno < 3;
ệ Câu l nh nào sau đây gây ra giám sát: