ORACLE审计管理

审计(audit)用于监视用户所执行的数据库操作,审计记录可存在数据字典表,存储在system表空间中的 sys.aud$表中,可通过视图dba_audit_trail查看
默认位置为$oracle_base/admin/$oracle_sid/adump/
oracle 10g 默认情况下审计是没有开启的
oracle 11g 默认情况下审计是开启的
审计的三个视图
dba_audit_trail:保存所有的audit trail,实际上它只是一个基于aud$的视图。其它的视图dba_audit_session,dba_audit_object, dba_audit_statement都只是dba_audit_trail的一个子集
dba_stmt_audit_opts:可以用来查看statement审计级别的audit options,即数据库设置过哪些statement级别的审计。dba_obj_audit_opts,dba_priv_audit_opts视图功能与之类似
all_def_audit_opts:用来查看数据库用on default子句设置了哪些默认对象审计
审计级别
当开启审计功能后,可在三个级别对数据库进行审计:statement(语句),privilege(权限),object(对象)
statement
语句审计,对某种类型的sql语句审计,不指定结构或对象.比如audit table 会审计
数据库中所有的create table,drop table,truncate table语句,alter session by cmy
会审计cmy用户所有的数据库连接

privilege
权限审计,当用户使用了该权限则被审计,如执行grant selectany table to a,当执
行了audit select any table语句后,当用户a 访问了用户b的表时(如select * from 
b.t)会用到select any table权限,故会被审计.注意用户是自己表的所有者,所以用
户访问自己的表不会被审计

object
按对象审计,只审计on关键字指定对象的相关操作,如aduit alter,delete,drop,insert on cmy.t by scott; 这里会对cmy用户的t表进行审计,但同时使用了by子句,所以只会对scott用户发起的操作进行审计

注意:oracle没有提供对schema中所有对象的审计功能,只能一个一个对象审计,对于后面
创建的对象,oracle则提供on default子句来实现自动审计,比如执行audit drop on 
defaultby access;后,对于随后创建的对象的drop操作都会审计。但这个default会
对之后创建的所有数据库对象有效,似乎没办法指定只对某个用户创建的对象有效,
想比 trigger可以对schema的ddl进行“审计”,这个功能稍显不足。
审计选项
by access 每一个被审计的操作都会生成一条audit trail
by session 一个会话里面同类型的操作只会生成一条audit trail,默认为by session
whenever successful 操作成功(dba_audit_trail中returncode字段为0) 才审计
whenever not successful 反之.省略该子句的话,不管操作成功与否都会审计

审计的安装
在这里插入图片描述
这里可以看到,11g默认是开始审计的,有审计记录,所以不需要安装,如果查询发现表不存在,则需要安装.

此命令安装即可,安装完成后重启数据库
在这里插入图片描述
审计表空间迁移
审计表默认安装在SYSTEM表空间,在生产环境一般都建议迁移到其他表空间里面步骤如下

create tablespace shenji
 logging 
 datafile '/u01/app/oracle/oradata/db/shenji.dbf' size 200m autoextend
 off extent management local segment space 
management auto;

alter table aud$ move tablespace shenji;
alter table audit$ move tablespace shenji;
alter index i_audit rebuild online tablespace shenji;
alter table audit_actions move tablespace shenji;
alter index i_audit_actions rebuild online tablespace shenji;

select table_name,tablespace_name from dba_tables where table_name like 
'%AUD%'; 
select index_name,tablespace_name from dba_indexes where index_name 
like '%AUDIT%';

在这里插入图片描述
在这里插入图片描述
这里可以看到,表和索引都已经迁移完成

一般生产环境下,只会对某个业务用户下的,某个表审计,具体操作如下:

开启审计
alter system set audit_sys_operations=true scope=spfile;
alter system set audit_trail=db,extended scope=spfile;
在这里插入图片描述
audit delete on xthis.HJJ —开启表的delete操作
delete from hjj where ID=‘1’;
delete from hjj where ID=‘2’;

在这里插入图片描述
已经记录
在这里插入图片描述
当然还可以对HJJ这个表做高精度审计,操作如下

exec  dbms_fga.add_policy('XTHIS','HJJ','HYP','id=1','id,xm',statement_types=>'UPDATE,SELECT');
select  USERHOST,SQL_TEXT  from dba_fga_audit_trail;

在这里插入图片描述
ok

------禁用
begin
dbms_fga.disable_policy (
object_schema => ‘XTHIS’,
object_name => ‘HJJ’,
policy_name => ‘HYP’);
end;
/

----启动
begin
dbms_fga.enable_policy (
object_schema => ‘XTHIS’,
object_name => ‘HJJ’,
policy_name => ‘HYP’,
enable => true);
end;
/

----删除
begin
dbms_fga.drop_policy (
object_schema => ‘XTHIS’,
object_name => ‘HJJ’,
policy_name => ‘HYP’);
end;
/

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值