ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【FGA】将FGA细粒度审计功能的审计结果记录在XML文件中

【FGA】将FGA细粒度审计功能的审计结果记录在XML文件中

原创 Linux操作系统 作者:secooler 时间:2011-06-05 22:07:14 0 删除 编辑
  Oracle引以为傲的FGA细粒度审计功能为监控系统中的异常操作提供了非常便捷的手段。本文给出使用FGA功能将审计信息记录到XML文件的方法。审计信息记录到数据库中的方法参考文章:  《【FGA】将FGA细粒度审计功能的审计结果记录在数据库中》(http://space.itpub.net/519536/viewspace-697205)。

1.初始化环境
1)清理环境
sys@ora10g> conn / as sysdba
Connected.
sys@ora10g> exec DBMS_FGA.DROP_POLICY ( object_schema => 'SEC', object_name => 'T', policy_name => 'audit_t');

PL/SQL procedure successfully completed.

sys@ora10g> conn sec/sec
Connected.
sec@ora10g> drop table t purge;

Table dropped.

2)创建待审计表T
sys@ora10g> create table t (x number(10), y varchar2(10));

Table created.

2.创建FGA审计策略
1)audit_trail参数设置说明
①audit_trail参数设置为“DBMS_FGA.DB”:审计信息记录到数据库的SYS.FGA_LOG$中,但不包含SQL语句和SQL的绑定变量信息;
②audit_trail参数设置为“DBMS_FGA.DB + DBMS_FGA.EXTENDED”(默认值):审计信息记录到数据库的SYS.FGA_LOG$中,同时包含SQL语句和SQL的绑定变量信息;
③audit_trail参数设置为“DBMS_FGA.XML”:审计信息记录到AUDIT_FILE_DEST参数对应的操作系统目录下,为XML格式,但不包含SQL语句和SQL的绑定变量信息;
④audit_trail参数设置为“DBMS_FGA.XML + DBMS_FGA.EXTENDED”:审计信息记录到AUDIT_FILE_DEST参数对应的操作系统目录下,为XML格式,同时包含SQL语句和SQL的绑定变量信息;

这里重点介绍审计记录到数据库中的方法。

2)审计结果记录到XML文件的创建方法
sec@ora10g> conn / as sysdba
Connected.
sys@ora10g> begin
  2  DBMS_FGA.ADD_POLICY (
  3  object_schema => 'SEC',
  4  object_name => 'T',
  5  policy_name => 'audit_t',
  6  audit_condition => 'X < 100',
  7  audit_column => 'X',
  8  enable => TRUE,
  9  statement_types => 'SELECT, INSERT, UPDATE, DELETE',
 10  audit_trail => DBMS_FGA.XML + DBMS_FGA.EXTENDED,
 11  audit_column_opts => DBMS_FGA.ANY_COLUMNS
 12  );
 13  end;
 14  /

PL/SQL procedure successfully completed.

3.查询确认FGA审计策略
通过DBA_AUDIT_POLICIES视图可以查看数据库中的审计规则。
sys@ora10g> col OBJECT_SCHEMA for a3
sys@ora10g> col OBJECT_NAME for a2
sys@ora10g> col POLICY_NAME for a7
sys@ora10g> col POLICY_TEXT for a10
sys@ora10g> col POLICY_COLUMN for a2
sys@ora10g> col PF_SCHEMA for a2
sys@ora10g> col PF_PACKAGE for a2
sys@ora10g> col PF_FUNCTION for a2
sys@ora10g> select * from dba_audit_policies;

OBJ OB POLICY_ POLICY_TEX PO PF PF PF ENA SEL INS UPD DEL AUDIT_TRAIL  POLICY_COLU
--- -- ------- ---------- -- -- -- -- --- --- --- --- --- ------------ -----------
SEC T  AUDIT_T X < 100    X           YES YES YES YES YES XML+EXTENDED ANY_COLUMNS


我们创建的审计规则尽收眼底。

4.触发审计规则并查看审计结果
1)触发审计规则
连接到sec用户向表T中插入一条x列值小于100的记录。
sys@ora10g> conn sec/sec
Connected.
sec@ora10g> insert into t values (1,'secooler');

1 row created.

sec@ora10g> commit;

Commit complete.

注意,这里我们重新连接sec用户再插入一条数据
sec@ora10g> conn sec/sec
Connected.
sec@ora10g> insert into t values (2,'Andy');

1 row created.

sec@ora10g> commit;

Commit complete.

2)查看V$XML_AUDIT_TRAIL中记录的审计信息
sec@ora10g> conn / as sysdba
Connected.
sys@ora10g> set feedback 1
sys@ora10g> select SQL_TEXT,SQL_BIND from V$XML_AUDIT_TRAIL;

SQL_TEXT
----------------------------------------------------------
SQL_BIND
----------------------------------------------------------
insert into t values (:"SYS_B_0",:"SYS_B_1")
 #1(1):1 #2(8):secooler

insert into t values (:"SYS_B_0",:"SYS_B_1")
 #1(1):2 #2(4):Andy


2 rows selected.

3)查看XML审计文件中的内容
(1)查看并进入到审计文件存放目录
ora10g@secdb /home/oracle$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jun 5 21:00:24 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

sys@ora10g> show parameter user_dump_dest

sys@ora10g> show parameter audit_file_dest

NAME              TYPE    VALUE
----------------- ------- -------------------------------------
audit_file_dest   string  /oracle/ora10gR2/admin/ora10g/adump

sys@ora10g> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
ora10g@secdb /home/oracle$ cd /oracle/ora10gR2/admin/ora10g/adump
ora10g@secdb /oracle/ora10gR2/admin/ora10g/adump$

(2)查看生成的XML审计文件种类
ora10g@secdb /oracle/ora10gR2/admin/ora10g/adump$ ls -tlr
total 20K
-rw-r----- 1 oracle oinstall 634 Jun  5 21:05 ora_5367.aud
-rw-r--r-- 1 oracle oinstall 970 Jun  5 21:06 ora_3217384196.xml
-rw-r--r-- 1 oracle oinstall 110 Jun  5 21:07 adx_ora10g.txt
-rw-r----- 1 oracle oinstall 634 Jun  5 21:11 ora_5400.aud
-rw-r--r-- 1 oracle oinstall 966 Jun  5 21:11 ora_3217745444.xml

其中两个.aud结尾的文件记录了登录信息,与审计具体内容无关;
adx_ora10g.txt文件中记录了多次登录生成的审计文件列表;
以.xml结尾的文件详细记录了被审计到的信息。

(3)查看adx_ora10g.txt文件中的内容
ora10g@secdb /oracle/ora10gR2/admin/ora10g/adump$ cat adx_ora10g.txt
/oracle/ora10gR2/admin/ora10g/adump
ora_3217384196.xml
/oracle/ora10gR2/admin/ora10g/adump
ora_3217745444.xml
这里表示记录了两次审计触发过程。

(4)XML格式的审计信息内容
ora10g@secdb /oracle/ora10gR2/admin/ora10g/adump$ cat ora_3217384196.xml

 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://xmlns.oracle.com/oracleas/schema/dbserver_audittrail-10_2.xsd">
   10.2
227598912011-06-05T21:06:55.028121SECoracleoraclesecdb53780SECTAUDIT_T201002D008E060000
0
#1(1):1 #2(8):secooler

insert into t values (:"SYS_B_0",:"SYS_B_1")



ora10g@secdb /oracle/ora10gR2/admin/ora10g/adump$ cat ora_3217745444.xml

 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://xmlns.oracle.com/oracleas/schema/dbserver_audittrail-10_2.xsd">
   10.2
227599912011-06-05T21:07:01.368908SECoracleoraclesecdb53790SECTAUDIT_T20600160080060000
0
#1(1):2 #2(4):Andy

insert into t values (:"SYS_B_0",:"SYS_B_1")




在以上的XML文件中以XML格式记录两次被审计的内容。

5.测试审计规则不带DBMS_FGA.EXTENDED参数内容的审计效果
若审计规则中不带DBMS_FGA.EXTENDED参数,则触发审计规则后,SQL语句和绑定变量值将不被记录。
1)删除审计策略
sys@ora10g> exec DBMS_FGA.DROP_POLICY ( object_schema => 'SEC', object_name => 'T', policy_name => 'audit_t');

PL/SQL procedure successfully completed.


2)创建不带DBMS_FGA.EXTENDED参数仅含有DBMS_FGA.XML参数的审计规则
sys@ora10g> begin
  2   DBMS_FGA.ADD_POLICY (
  3   object_schema => 'SEC',
  4   object_name => 'T',
  5   policy_name => 'audit_t',
  6   audit_condition => 'X < 100',
  7   audit_column => 'X',
  8   enable => TRUE,
  9   statement_types => 'SELECT, INSERT, UPDATE, DELETE',
 10   audit_trail => DBMS_FGA.XML,
 11   audit_column_opts => DBMS_FGA.ANY_COLUMNS
 12   );
 13   end;
 14   /

PL/SQL procedure successfully completed.

3)确认审计规则
sys@ora10g> col OBJECT_SCHEMA for a3
sys@ora10g> col OBJECT_NAME for a2
sys@ora10g> col POLICY_NAME for a7
sys@ora10g> col POLICY_TEXT for a10
sys@ora10g> col POLICY_COLUMN for a2
sys@ora10g> col PF_SCHEMA for a2
sys@ora10g> col PF_PACKAGE for a2
sys@ora10g> col PF_FUNCTION for a2
sys@ora10g> select * from dba_audit_policies;

OBJ OB POLICY_ POLICY_TEX PO PF PF PF ENA SEL INS UPD DEL AUDIT_TRAIL  POLICY_COLU
--- -- ------- ---------- -- -- -- -- --- --- --- --- --- ------------ -----------
SEC T  AUDIT_T X < 100    X           YES YES YES YES YES XML          ANY_COLUMNS


4)触发审计规则
sys@ora10g> conn sec/sec
Connected.
sec@ora10g> insert into t values (3, 'HOU');

1 row created.

sec@ora10g> commit;

Commit complete.

5)查看V$XML_AUDIT_TRAIL视图中记录的审计结果
sec@ora10g> conn / as sysdba
Connected.
sys@ora10g> set feedback 1
sys@ora10g> select SQL_TEXT,SQL_BIND from V$XML_AUDIT_TRAIL;

SQL_TEXT
----------------------------------------------------------------
SQL_BIND
----------------------------------------------------------------
insert into t values (:"SYS_B_0",:"SYS_B_1")
 #1(1):1 #2(8):secooler

insert into t values (:"SYS_B_0",:"SYS_B_1")
 #1(1):2 #2(4):Andy





3 rows selected.

此处显示返回三行信息,最后一行空内容就说明了审计信息中没有记录SQL意义SQL的绑定变量信息。

6)查看XML文件中记录的审计结果
(1)审计文件生成列表
ora10g@secdb /oracle/ora10gR2/admin/ora10g/adump$ ls -ltr
total 32K
-rw-r----- 1 oracle oinstall 634 Jun  5 21:05 ora_5367.aud
-rw-r--r-- 1 oracle oinstall 970 Jun  5 21:06 ora_3217384196.xml
-rw-r----- 1 oracle oinstall 634 Jun  5 21:11 ora_5400.aud
-rw-r--r-- 1 oracle oinstall 966 Jun  5 21:11 ora_3217745444.xml
-rw-r----- 1 oracle oinstall 634 Jun  5 22:08 ora_5638.aud
-rw-r--r-- 1 oracle oinstall 165 Jun  5 22:09 adx_ora10g.txt
-rw-r----- 1 oracle oinstall 634 Jun  5 22:09 ora_5644.aud
-rw-r--r-- 1 oracle oinstall 857 Jun  5 22:09 ora_3218245620.xml

(2)查看adx_ora10g.txt文件中的XML文件列表
ora10g@secdb /oracle/ora10gR2/admin/ora10g/adump$ cat adx_ora10g.txt
/oracle/ora10gR2/admin/ora10g/adump
ora_3217384196.xml
/oracle/ora10gR2/admin/ora10g/adump
ora_3217745444.xml
/oracle/ora10gR2/admin/ora10g/adump
ora_3218245620.xml

(3)这里我们仅需查看最后一个XML文件即可
这个文件记录了我们最后一次被触发的审计信息。
ora10g@secdb /oracle/ora10gR2/admin/ora10g/adump$ cat ora_3218245620.xml

 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://xmlns.oracle.com/oracleas/schema/dbserver_audittrail-10_2.xsd">
   10.2
227600912011-06-05T22:09:23.529200SECoracleoraclesecdb56410SECTAUDIT_T204001400AA060000
0



XML文件中同样也没有记录SQL以及SQL绑定变量信息。效果得现。

6.小结
  本文给出了将FGA细粒度审计结果信息记录在XML文件中的方法,到此我们已经将FGA的四种审计结果记录方式了然于胸。

Good luck.

secooler
11.06.05

-- The End --

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

请登录后发表评论 登录
全部评论
Oracle ACE 总监,阿里云MVP,北京大学理学硕士,恩墨学院创始人,教育专家,中国区 Cloudera 首位官方授权大数据讲师,金牌培训专家,BDA大数据联盟创始人,OCM联盟创始人,ACCUG创始人、ACOUG核心专家,Blogger。

注册时间:2008-03-16

  • 博文量
    797
  • 访问量
    8200058