Bài th c hành s  13

FINE­GRAINED AUDITING

ắ ộ

 Tóm t

t n i dung:

(cid:0) ớ ệ ề Gi i thi u v  Fine­grained Auditing

(cid:0) Các chính sách Fine­grained Auditing

(cid:0) ử ụ S  d ng gói DBMS_FGA trong Oracle

I. Fine­grained 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.

ể ỏ ữ ầ ớ Fine­grained 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 Fine­grained Auditing so v i Trigger:

ấ ự ệ ữ ầ ằ ỏ Fine­grained 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 fine­grainned 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 Fine­grained 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 Fine­grained 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:

Chương Trình Đào Tạo Từ Xa

KH & KT Máy Tính – Đại học Bách Khoa TP.HCM