ITPub博客

首页 > 数据库 > Oracle > 精细化审计-FGA

精细化审计-FGA

原创 Oracle 作者:静以致远√团团 时间:2014-05-12 10:57:53 0 删除 编辑
 

FGAoracle 9i开始引入,FGA不但对行和列精细化审计,而且还记录触发审计的语句通过调用DBMS_FGA包来实现FGA,将需要审计的数据内容作为一个策略,在数据库里面进行定义。审计信息记录在数据字典表fga_log$里面,通过查询视图dba_fga_audit_trail可以获得FGA的审计数据。

 

基于行的审计:

开启对scott用户下aud_test表中empno7839行操作是update或者select的审计

  1  begin

  2  dbms_fga.add_policy(

  3  object_schema => 'SCOTT',

  4  object_name => 'AUD_TEST',

  5  policy_name => 'AUDIT_TEST',

  6  audit_condition => 'EMPNO=7839',

  7  enable => true,

  8  statement_types => 'SELECT,UPDATE'

  9  );

 10* end;

SQL> /

 

PL/SQL procedure successfully completed.

 

scott用户登入执行selectupdate操作:

 

SQL> conn scott/oracle

Connected.

SQL> select * from aud_test where empno=7839;

 

     EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO

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

      7839 KING       PRESIDENT            17-NOV-81       6000                    10

 

SQL> update aud_test

  2  set sal=sal+1000

  3  where empno=7839;

 

1 row updated.

 

SQL> commit;

 

Commit complete.

 

sys用户查看审计结果

SQL> conn / as sysdba

Connected.

 

SQL> select timestamp,db_user,os_user,object_schema,sql_text from dba_fga_audit_trail;

 

TIMESTAMP DB_USER    OS_USER    OBJECT_SCHEMA    SQL_TEXT

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

12-MAY-14 SCOTT      oracle     SCOTT            select * from aud_test where empno=7839

12-MAY-14 SCOTT      oracle     SCOTT            update aud_test

                                                 set sal=sal+1000

                                                 where empno=7839

 

基于列的审计:

审计对aud_test表中scott.sal列的select操作:

 

  1  begin

  2  dbms_fga.add_policy(

  3  object_schema => 'SCOTT',

  4  object_name => 'aud_test',

  5  policy_name => 'aud_col',

  6  audit_column => 'SAL',

  7  enable => true,

  8  statement_types => 'SELECT'

  9  );

 10* end;

SQL> /

 

PL/SQL procedure successfully completed.

 

 

SQL> truncate table fga_log$;

Table truncated.

 

SQL> conn scott/oracle

Connected.

SQL> select sal from aud_test;

 

       SAL

----------

       800

      1600

      1250

      2975

      1250

      2850

      2450

      3000

      7000

      1500

      1100

 

SQL> conn / as sysdba

Connected.

SQL> select timestamp,db_user,os_user,object_schema,sql_text from dba_fga_audit_trail;

 

TIMESTAMP DB_USER    OS_USER    OBJECT_SCHEMA    SQL_TEXT

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

12-MAY-14 SCOTT      oracle     SCOTT            select sal from aud_test

12-MAY-14 SCOTT      oracle     SCOTT            select sal from aud_test

 

由于行审计audit_test未删除或关闭,因此此处查询sal时显示的有empno=7839的行的信息,触发了audit_test,所以产生了两条审计记录。

 

删除fga

 

SQL> select pname from fga$;

PNAME

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

AUDIT_TEST

AUD_COL

 

SQL> begin

  2  dbms_fga.drop_policy('scott','aud_test','audit_test');

  3  end;

  4  /

 

SQL> begin

  2  dbms_fga.drop_policy('scott','aud_test','aud_col');

  3  end;

  4  /

 

SQL> select pname from fga$;

no rows selected

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29320885/viewspace-1158918/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 标准数据审计
请登录后发表评论 登录
全部评论
每个人都有梦想,去实现吧!

注册时间:2013-11-14

  • 博文量
    164
  • 访问量
    2103574