ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle FGA细粒度审计——基于内容的数据库审计(三)

Oracle FGA细粒度审计——基于内容的数据库审计(三)

原创 Linux操作系统 作者:realkid4 时间:2011-06-28 21:27:18 0 删除 编辑

 

在上面两篇中,我们已经介绍了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_policyenable_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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
求道~

注册时间:2010-11-30

  • 博文量
    545
  • 访问量
    7676542