DBMS_FGA包使用介绍

来源:互联网 发布:我们不一样知乎 编辑:程序博客网 时间:2024/06/05 22:53
DBMS_FGA包使用介绍
 
 
   从Oracle9i开始,就可以使用DBMS_FGA对指定的表的SELECT语句进行审计,但是在9i中只能对select语句进行审计,在10g中可以实现对DML的审计功能。简单得看看这个包的使用方法:
 
   首先按照惯例列出Oracle自带说明:
 
******************************************************************************

CREATEOR REPLACE PACKAGE SYS.dbms_fgaAS

  --------------------------------------------------------------------------

 

  -- CONSTANTS

  --

 EXTENDED   CONSTANT PLS_INTEGER := 1 ;

 DB         CONSTANT PLS_INTEGER := 2 ;

  DB_EXTENDED CONSTANTPLS_INTEGER := 3;            -- (default)

 XML        CONSTANT PLS_INTEGER := 4 ;

 

  ALL_COLUMNS CONSTANTBINARY_INTEGER := 1 ;

  ANY_COLUMNS CONSTANTBINARY_INTEGER := 0;         -- (default)

 

  -- add_policy-  add a fine grained auditing policy to a tableor view

  --

  -- INPUT PARAMETERS

 --  object_schema   - schema owningthe table/view, current user if NULL

 --  object_name    - name of table or view

 --  policy_name    - name of policy to be added

 --  audit_column   - column to be audited

 --   audit_condition -predicates for this policy

 --  handler_schema  - schema where the event handlerprocedure is

 --  handler_module  - name of the eventhandler

 --  enable         - policy is enabled by DEFAULT

 --  statement_type  - statement type a policy appliesto (default SELECT)

 --  audit_trail    - Write sqltext and sqlbind into audit trail by default(DB_EXTENDED)

 --   audit_column_options -option of using 'Any' or 'All' on audit columns for thepolicy

 

  PROCEDUREadd_policy(object_schema  IN VARCHAR2 := NULL ,

                      object_name    IN VARCHAR2 ,

                      policy_name    IN VARCHAR2 ,

                      audit_condition IN VARCHAR2 := NULL ,

                      audit_column   IN VARCHAR2 := NULL ,

                      handler_schema  IN VARCHAR2 :=NULL ,

                      handler_module  IN VARCHAR2 :=NULL ,

                      enable         IN BOOLEAN   := TRUE ,

                      statement_typesIN VARCHAR2 := 'SELECT' ,

                      audit_trail    IN PLS_INTEGER   := 3 ,

                      audit_column_opts IN BINARY_INTEGER DEFAULT 0);

 

  -- drop_policy - drop a finegrained auditing policy from a table or view

  --

  -- INPUT PARAMETERS

 --  object_schema   - schema owningthe table/view, current user if NULL

 --  object_name    - name of table or view

 --  policy_name    - name of policy to be dropped

 

  PROCEDUREdrop_policy(object_schema IN VARCHAR2 := NULL,

                       object_name   INVARCHAR2 ,

                       policy_name   INVARCHAR2 );

 

  -- enable_policy - enable asecurity policy for a table or view

  --

  -- INPUT PARAMETERS

 --  object_schema   - schema owningthe table/view, current user if NULL

 --  object_name    - name of table or view

 --  policy_name    - name of policy to be enabled or disabled

 

  PROCEDUREenable_policy(object_schema IN VARCHAR2 :=NULL ,

                         object_name  IN VARCHAR2 ,

                         policy_name   INVARCHAR2 ,

                         enable       IN BOOLEAN := TRUE );

 

  -- disable_policy - disable asecurity policy for a table or view

  --

  -- INPUT PARAMETERS

 --  object_schema   - schema owningthe table/view, current user if NULL

 --  object_name    - name of table or view

 --  policy_name    - name of policy to be enabled or disabled

 

  PROCEDUREdisable_policy(object_schema IN VARCHAR2 :=NULL ,

                          object_name   INVARCHAR2 ,

                          policy_name   INVARCHAR2 );

 

END dbms_fga;

******************************************************************************
 
 

   基本上每个部分的功能上面就已经说了,简单得介绍一下需要注意的几个地方:

 

   1、在审计策略生效之前,必须对表进行分析,因为只有在CBO模式,DBMS_FGA才能正确的工作

   2、指定audit_condition可以设定监控条件(例如select某部分记录)

   3、可以指定audit_column来审计专门的字段

   4、statement_types包括“SELECT,UPDATE,INSERT.DELETE”四种,如需多种以','分开

 

 

举例:

 

begin

dbms_fga.add_policy(object_schema =>'wangxiaoqi',  --schema名(默认当前操作用户)

                   object_name =>'t_check',      --被操作object对象

                   policy_name => 't_check_audit',--policy名(唯一)

                   audit_condition => NULL,

                   audit_column => 'tno,type,modifydate',--监视的字段(默认为全部)

                   handler_schema => NULL,

                   handler_module => NULL,

                   enable => TRUE,

                   statement_types => 'insert,update,delete',--受影响的操作 

                   audit_trail =>dbms_fga.DB_EXTENDED,      --默认值

                   audit_column_opts =>dbms_fga.ANY_COLUMNS);--默认值

end;

/

 

 

 

 

   当然也可以不用 =>来指定每个参数,只需要列出前几个就可以了,有默认值的参数如果不需要改变默认值,可以不给出。 但是必须要按照定义的顺序来指定。例如:

 

begin

dbms_fga.add_policy('wangxiaoqi','T1','T1_AUDIT','B>=20','B');

end;

/

 

 

 

 

 
   最后看一下,如何查看审计的结果:
 
    select *from dba_audit_policies; --所有policy的列表
 
    selectdb_user,timestamp,sql_text,sql_bind from dba_fga_audit_trail;--审计结果
 
    SELECTtext FROM dba_Views where view_name=upper('DBA_FGA_AUDIT_TRAIL');--查看记录来源

   注:如果指定了XML类型的审计,则在V$XML_AUDIT_TRAIL试图中查看信息.

 
 
 
 
最后给一个对DBMS_FGA的详细介绍文章:
***************************************
《现实中的细粒度审计》 第一部分
 
《现实中的细粒度审计》 第二部分

《现实中的细粒度审计》第三部分
***************************************
0 0
原创粉丝点击