在上面两篇中,我们已经介绍了Oracle FGA细粒度审计的核心内容组件,以及如何查看审计结果。此外,还有一些关于Oracle FGA使用中的细节问题需要注意。本篇将关注dbms_fga包的其他一些方法的方式。
4、 dbms_fga包其他方法解析
dbms_fga包是Oracle提供的FGA管理程序组件,借助dbms_fga我们可以容易的进行FGA策略的制定、删除和管理。
在上面两篇系列的文章中,我们已经熟悉了dbms_fga包的add_policy存储过程。使用该方法,我们可以方便的制定各种类型的FGA审计策略。下面介绍该包的其他方法。
ü 删除Oracle FGA审计策略drop_policy
有添加策略的方法,就有对应的删除方法。对添加进的Oracle FGA策略,可以使用drop_policy的方法进行删除。下面是该方法的签名。
PROCEDURE drop_policy(object_schema IN VARCHAR2 := NULL,
object_name IN VARCHAR2,
policy_name IN VARCHAR2);
输入指定的审计对象所属schema、审计对象名称以及对应的policy名称,就可以实现删除审计策略。
注意:笔者从这个方法中有一个感受,就是Oracle FGA策略policy是一种紧密围绕审计对象的方法。通过审计对象schema、对象名称和策略名称唯一定位到一个审计策略。这是否也就意味着不同审计对象能够拥有相同名称的policy。
下面是针对drop_policy的实验。
SQL> select policy_name,policy_text from dba_audit_policies;
POLICY_NAME POLICY_TEXT
------------------------------ --------------------------------------------------------------------------------
POL_VID_LENGTH length(vid)>5
POL_VID_MODIFY
POL_DT_DEL trunc(dt)
POL_VID_SELECT to_char(sysdate,'Day') in ('星期六','星期日')
之后实验删除。
SQL> exec dbms_fga.drop_policy(object_schema => 'SCOTT',object_name => 'T',policy_name => 'POL_VID_SELECT');
PL/SQL procedure successfully completed
SQL> select policy_name,policy_text from dba_audit_policies;
POLICY_NAME POLICY_TEXT
------------------------------ --------------------------------------------------------------------------------
POL_VID_LENGTH length(vid)>5
POL_VID_MODIFY
POL_DT_DEL trunc(dt)
ü Oracle FGA策略启用禁用方法disable_policy和enable_policy
在某些时候,需要临时性的将审计策略进行终止使用。在dba_audit_policies视图中,存在enabled列,表示当前policy是否启用。
SQL> select policy_name,enabled,policy_text from dba_audit_policies;
POLICY_NAME ENABLED POLICY_TEXT
-------------------- ------- --------------------------------------------------------------------------------
POL_VID_LENGTH YES length(vid)>5
POL_VID_MODIFY YES
POL_DT_DEL YES trunc(dt)
可以使用dbms_fga包的两个方法进行策略启用禁用的操作。方法API接口签名如下:
-- enable_policy - enable a security policy for a table or view
--
-- INPUT PARAMETERS
-- object_schema - schema owning the table/view, current user if NULL
-- object_name - name of table or view
-- policy_name - name of policy to be enabled or disabled
PROCEDURE enable_policy(object_schema IN VARCHAR2 := NULL,
object_name IN VARCHAR2,
policy_name IN VARCHAR2,
enable IN BOOLEAN := TRUE);
-- disable_policy - disable a security policy for a table or view
--
-- INPUT PARAMETERS
-- object_schema - schema owning the table/view, current user if NULL
-- object_name - name of table or view
-- policy_name - name of policy to be enabled or disabled
PROCEDURE disable_policy(object_schema IN VARCHAR2 := NULL,
object_name IN VARCHAR2,
policy_name IN VARCHAR2);
Oracle FGA策略一旦被disable掉,就不再进行审计工作。
//禁用对应的实验Policy
SQL> exec dbms_fga.disable_policy(object_schema => 'SCOTT',object_name => 'T',policy_name => 'POL_VID_LENGTH');
PL/SQL procedure successfully completed
SQL> select policy_name,enabled,policy_text from dba_audit_policies;
POLICY_NAME ENABLED POLICY_TEXT
-------------------- ------- --------------------------------------------------------------------------------
POL_VID_LENGTH NO length(vid)>5
POL_VID_MODIFY YES
POL_DT_DEL YES trunc(dt)
//之后进行插入(vid长度超过5)
SQL> insert into t values (6,'fdsfdsff');
1 row inserted
SQL> commit;
Commit complete
SQL> select sysdate from dual;
SYSDATE
-----------
2011-6-26 2
SQL> select timestamp,sql_text from dba_fga_audit_trail;
TIMESTAMP SQL_TEXT
----------- --------------------------------------------------------------------------------
2011-6-24 2 insert into t values (4,'k45545', sysdate)
2011-6-24 2 update t set vid='kkl' where id=1
2011-6-24 2 delete t where id=2
2011-6-25 2 select * from t
2011-6-25 2 select id from t
2011-6-25 2 select * from t
6 rows selected
结果发现,当策略被禁用之后,是不会进行审计操作的。
对禁用的policy,使用enable_policy可以方便的重新启用。
SQL> exec dbms_fga.enable_policy(object_schema => 'SCOTT',object_name => 'T',policy_name => 'POL_VID_LENGTH');
PL/SQL procedure successfully completed
POLICY_NAME ENABLED POLICY_TEXT
-------------------- ------- --------------------------------------------------------------------------------
POL_VID_LENGTH YES length(vid)>5
POL_VID_MODIFY YES
POL_DT_DEL YES trunc(dt)
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17203031/viewspace-700921/,如需转载,请注明出处,否则将追究法律责任。