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_* => '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 --
【FGA】扩展Oracle细粒度审计功能——调用定制的存储过程
分享好友
分享这个小栈给你的朋友们,一起进步吧。
订阅须知
• 所有用户可根据关注领域订阅专区或所有专区
• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询
• 专区发布评论属默认订阅所评论专区(除付费小栈外)