oracle10g日志审计,应用ORACLE 10G以上细粒度审计功能实现操作审计

最近因某企业莫名出现3次某重要数据采集表记录全部被修改为某个值的事情,通过LOGMINER工具分析出的日志结果,每个UPDATE都带有具体的ROWID,并且绑定变量也都替换了成了具体的数值,不大好和源程序中的语句进行匹配。

细粒度审计(FGA)功能摸索了下,9i这个版本虽然有此功能,但只能对SELECT语句进行审计,用处不大,不做具体测试。考察下10G和11G两个版本,设置简单,而且最后的审计结果还算理想,有完整的SQL_TEXT,也有绑定变量的前值和后值,下面说下具体的操作过程:

在10G11G上测试下细粒度查询的功能:

1首先登陆oracle后输入show parameter audit_trail来查看审计是否打开

Sqlplus /nolog

Conn / as sysdba;

SQL > showparameteraudit_trail ;

返回结果:

NAMETYPEVALUE

udit_trailstringNONE

NONE表示审计未打开。

打开审计功能:

alter system set audit_trail=DB,Extended;

DB,Extended选项在DB选项基础上,在audit$表中还增加了SQLBIND和SQLTEXT两个clob栏位,用来存储SQLBIND和SQLTEXT信息,即审计结果里面除了连接信息还包含了当时执行的具体语句以及绑定的变量信息。

2重启数据库

Shutdown immediate;

Startup;

3设置细粒度审计

--可以增加审计列和审计条件,对用户TEST的表T进行审计,操作类型包括INSERT, UPDATE, DELETE,SELECT,SELECT条件针对JHZTZ>=3,语句如下:

begin

dbms_fga.add_policy (

object_schema=>'TEST',

object_name=>'T',

policy_name=>'T _ACCESS',

statement_types=>'INSERT, UPDATE, DELETE,SELECT',--不加这个默认是SELECT?

audit_column => 'JHZTZ',

audit_condition => 'JHZTZ >= 3'

);

end;

/

--启用审计策略

begin

dbms_fga.enable_policy (

object_schema => 'TEST',

object_name => 'T',

policy_name => 'T _ACCESS',

enable => TRUE

);

end;

/

4查询系统数据字典,看监控的结果:(fga_tmp001NEW.xls)

select * from dba_audit_trail ;

详细信息看附件图示

c189ae0c0e8743ba2b35919c92a0cde5.png

5 --删除审计策略

begin

dbms_fga.drop_policy (

object_schema => 'TEST',

object_name => 'T',

policy_name => 'TACCESS'

);

end;

/

6--停用审计策略

begin

dbms_fga.enable_policy (

object_schema => 'TEST',

object_name => 'T',

policy_name => 'T _ACCESS',

enable => FALSE

);

end;

/

要重新启用它,可使用同一函数,将参数enable设置为TRUE即可。

7更改审计的默认表空间:

默认审计表安装在SYSTEM表空间。我们看到数据量不小。所以要确保SYSTEM表空间有足够的空间存放审计信息。若SYSTEM表空间没有足够的空间存放审计信息或者为了不影响系统的性能保护SYSTEM表空间,可以将审计结果表从system表空间里移动到别的表空间上。下面是具体的操作过程(需要SYSDBA权限才能进行该操作):

在设置audit_trail=’DB,extended’的情况下:

SQL> alter table audit$ move tablespace users;

SQL> alter table audit$ move lob(sqlbind) store as(tablespace users)

SQL> alter table audit$ move lob(SQLTEXT) store as(tablespace users)

SQL> alter index i_audit rebuild tablespace users;

将审计结果表从system表空间里移动到users表空间。

可以通过以下命令查看具体表空间剩余大小:

select sum(bytes)/1024/1024 as free_space , tablespace_name from dba_free_space group by tablespace_name ;

(注意:若设置audit_trail=’DB’移动的步骤将更为简单:

SQL> alter table audit$ move tablespace users;

SQL> alter index i_audit rebuild tablespace users;

)

8也可以对存储过程进行审计,用以下两个参数:

handler_schema拥有数据过程的模式

handler_module过程名称

后记:在FGA中,审计更加灵活—仅当访问某些列,当某个特定的条件为真时等等。这种多功能性在您需要控制线索的增长时非常方便。

在FGA中,SQL赋值变量默认被捕获。在常规审计中,必须把初始化参数audit_trail设为db_extended,以启用这一功能。

权限差异:常规审计需要审计系统或语句权限;FGA只需要dbms_fga程序包上的运行权限。

通过上面的比较,您将了解为什么可以证明FGA在某些情况下很有用。利用Oracle Database 10g中的增强的常规审计特性,一些以前认为不可能的任务—例如捕获赋值变量的值—变得十分容易。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值