【FGA】擴充套件Oracle細粒度審計功能——呼叫定製的儲存過程
Oracle的細粒度審計(FGA)可以呼叫定製的儲存過程,這樣可以非常方便地協助我們完成更多的任務,就該方法做一個簡單展示。供參考。
1.建立待審計的表T及儲存過程操作的監控表MON_T
1)建立表T並初始化兩條記錄
sec@ora10g> create table t (x int);
Table created.
sec@ora10g> insert into t values (1);
1 row created.
sec@ora10g> insert into t values (101);
1 row created.
sec@ora10g> commit;
Commit complete.
sec@ora10g> select * from t;
X
----------
1
101
2)建立儲存過程操作的監控表MON_T
sec@ora10g> create table mon_t (x date);
Table created.
2.建立待FGA呼叫的儲存過程
CREATE OR REPLACE PROCEDURE proc_mon_t (schema_name VARCHAR2,
table_name VARCHAR2,
policy VARCHAR2)
IS
BEGIN
INSERT INTO mon_t
VALUES (SYSDATE);
END;
/
我們的目標是:當滿足審計條件之後會向表mon_t中中插入一條時間記錄,表明發生審計動作的時間。
注意上述儲存過程的引數名。
3.定製FGA審計策略
BEGIN
DBMS_FGA.ADD_POLICY (
object_schema => 'SEC',
object_name => 'T',
policy_name => 'audit_test',
audit_condition => 'X < 100',
audit_column => 'X',
HANDLER_SCHEMA => 'SEC',
HANDLER_MODULE => 'PROC_MON_T',
enable => TRUE,
statement_types => 'DELETE',
audit_trail => DBMS_FGA.XML + DBMS_FGA.EXTENDED,
audit_column_opts => DBMS_FGA.ANY_COLUMNS);
END;
/
該策略對T表滿足X<100條件的刪除動作進行審計。
這裡重點關注的引數是HANDLER_MODULE,使用該引數可以實現呼叫儲存過程的目的。
BTW:刪除該FGA審計策略的方法如下。
exec DBMS_FGA.DROP_POLICY ( object_schema => 'SEC', object_name => 'T', policy_name => 'audit_test');
4.測試審計效果
1)刪除滿足x < 100條件的記錄的測試
sec@ora10g> delete from t where x = 1;
1 row deleted.
sec@ora10g> select sql_text from V$XML_AUDIT_TRAIL;
SQL_TEXT
---------------------------------------------------------------------
delete from t where x = 1
此時已經可以檢視到具體的審計資訊,與此同時儲存過程PROC_MON_T已被觸發,對應的MON_T表中已經可以檢視到觸發的時間。
sec@ora10g> select * from mon_t;
X
-------------------
2010-09-06 21:40:33
2)刪除未滿足x < 100條件的記錄的測試
sec@ora10g> delete from t where x = 101;
1 row deleted.
sec@ora10g> select sql_text from V$XML_AUDIT_TRAIL;
SQL_TEXT
--------------------------------------------------------------------
delete from t where x = 1
sec@ora10g> select * from mon_t;
X
-------------------
2010-09-06 21:40:33
可見,在不滿足審計條件的時候,不記錄任何審計資訊,因此儲存過程亦不被觸發。
5.小結
FGA細粒度審計呼叫儲存過程的方法會給我們帶來很多的便利,給我們的想象力留有空間。我們可以使用這個技術擴充套件FGA的功能。
Good luck.
secooler
10.09.06
-- The End --
1.建立待審計的表T及儲存過程操作的監控表MON_T
1)建立表T並初始化兩條記錄
sec@ora10g> create table t (x int);
Table created.
sec@ora10g> insert into t values (1);
1 row created.
sec@ora10g> insert into t values (101);
1 row created.
sec@ora10g> commit;
Commit complete.
sec@ora10g> select * from t;
X
----------
1
101
2)建立儲存過程操作的監控表MON_T
sec@ora10g> create table mon_t (x date);
Table created.
2.建立待FGA呼叫的儲存過程
CREATE OR REPLACE PROCEDURE proc_mon_t (schema_name VARCHAR2,
table_name VARCHAR2,
policy VARCHAR2)
IS
BEGIN
INSERT INTO mon_t
VALUES (SYSDATE);
END;
/
我們的目標是:當滿足審計條件之後會向表mon_t中中插入一條時間記錄,表明發生審計動作的時間。
注意上述儲存過程的引數名。
3.定製FGA審計策略
BEGIN
DBMS_FGA.ADD_POLICY (
object_schema => 'SEC',
object_name => 'T',
policy_name => 'audit_test',
audit_condition => 'X < 100',
audit_column => 'X',
HANDLER_SCHEMA => 'SEC',
HANDLER_MODULE => 'PROC_MON_T',
enable => TRUE,
statement_types => 'DELETE',
audit_trail => DBMS_FGA.XML + DBMS_FGA.EXTENDED,
audit_column_opts => DBMS_FGA.ANY_COLUMNS);
END;
/
該策略對T表滿足X<100條件的刪除動作進行審計。
這裡重點關注的引數是HANDLER_MODULE,使用該引數可以實現呼叫儲存過程的目的。
BTW:刪除該FGA審計策略的方法如下。
exec DBMS_FGA.DROP_POLICY ( object_schema => 'SEC', object_name => 'T', policy_name => 'audit_test');
4.測試審計效果
1)刪除滿足x < 100條件的記錄的測試
sec@ora10g> delete from t where x = 1;
1 row deleted.
sec@ora10g> select sql_text from V$XML_AUDIT_TRAIL;
SQL_TEXT
---------------------------------------------------------------------
delete from t where x = 1
此時已經可以檢視到具體的審計資訊,與此同時儲存過程PROC_MON_T已被觸發,對應的MON_T表中已經可以檢視到觸發的時間。
sec@ora10g> select * from mon_t;
X
-------------------
2010-09-06 21:40:33
2)刪除未滿足x < 100條件的記錄的測試
sec@ora10g> delete from t where x = 101;
1 row deleted.
sec@ora10g> select sql_text from V$XML_AUDIT_TRAIL;
SQL_TEXT
--------------------------------------------------------------------
delete from t where x = 1
sec@ora10g> select * from mon_t;
X
-------------------
2010-09-06 21:40:33
可見,在不滿足審計條件的時候,不記錄任何審計資訊,因此儲存過程亦不被觸發。
5.小結
FGA細粒度審計呼叫儲存過程的方法會給我們帶來很多的便利,給我們的想象力留有空間。我們可以使用這個技術擴充套件FGA的功能。
Good luck.
secooler
10.09.06
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-672903/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 細粒度審計FGA儲存過程含義儲存過程
- oracle 細粒度審計(fga)Oracle
- 【FGA】將FGA細粒度審計功能的審計結果記錄在資料庫中資料庫
- 【FGA】將FGA細粒度審計功能的審計結果記錄在XML檔案中XML
- SQL Server 禁用擴充套件儲存過程SQLServer套件儲存過程
- Oracle FGA細粒度審計——基於內容的資料庫審計(一)Oracle資料庫
- Oracle FGA細粒度審計——基於內容的資料庫審計(二)Oracle資料庫
- Oracle FGA細粒度審計——基於內容的資料庫審計(三)Oracle資料庫
- Fine-grainedauditing(FGA) 細粒度審計AI
- Oracle FGA審計功能Oracle
- Oracle Database標準審計和細粒度審計功能OracleDatabase
- oracle細粒度審計Oracle
- oracle審計-細粒度(轉)Oracle
- Oracle OCP(52):細粒度審計Oracle
- java 呼叫oracle 儲存過程JavaOracle儲存過程
- C#呼叫 oracle儲存過程C#Oracle儲存過程
- C#呼叫Oracle儲存過程C#Oracle儲存過程
- java中呼叫ORACLE儲存過程JavaOracle儲存過程
- 用java呼叫oracle儲存過程JavaOracle儲存過程
- MySql 擴充套件儲存引擎MySql套件儲存引擎
- 一些比較常見的SQL Server擴充套件儲存過程SQLServer套件儲存過程
- mysql-定時呼叫儲存過程MySql儲存過程
- 呼叫儲存過程儲存過程
- Java呼叫Oracle儲存過程的問題JavaOracle儲存過程
- oracle goldengate 呼叫儲存過程案例OracleGo儲存過程
- Jsp中呼叫Oracle儲存過程JSOracle儲存過程
- Hibernate呼叫oracle儲存過程的問題Oracle儲存過程
- Winform呼叫儲存過程ORM儲存過程
- perl呼叫儲存過程儲存過程
- jdbc呼叫儲存過程JDBC儲存過程
- oracle父儲存過程呼叫子儲存過程procedure與輸出引數Oracle儲存過程
- 在儲存過程A中呼叫儲存過程B的結果儲存過程
- 用java呼叫oracle儲存過程總結JavaOracle儲存過程
- Web儲存(Web Storage)擴充套件EStorageWeb套件
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- vb呼叫儲存過程的方法儲存過程
- 使用SQLSERVER的擴充套件儲存過程實現遠端備份與恢復 (轉)SQLServer套件儲存過程
- 儲存過程呼叫其他模式的儲存過程需要注意的地方儲存過程模式