天天看点

ORACLE审计使用

1 标准审计

标准审计必须是数据库级别的,设置好后必须重启数据库。

(1)alter system set audit_trail =XXXXX scope=spfile|both;

(2)其中autdit_trail取值有以下几种情况:

 DB/TRUE:启动审计功能,并把审计结果放在数据库中的sys.aud$中

 OS:启动审计功能,并把审计结果存放在操作系统的审计信息中

 DB_EXTENDED:具有DB/TRUE的功能,另外写aud$中的sqlbind和sqltext字段

 NONE/FALSE:关闭审计

(3)查看审计相关表是否安装:

 sys.aud$、dba_audit_trail,如果没有安装,则找到$ORACLE_HOME/rdbms/admin/cataudit.sql,审计表安装在system表空间,如果空间不够,可以移动审计到自建的表空间中。

(4)设置所需要的审计信息

 SQL>connect system/manage;

 SQL>grant audit system to scott;

 SQL>connect scott/tiger;

 SQL>audit session;

 通常设置了标准审计都是通过 Audit语句开启审计。使用noaudit收回,如下:

 对表SC的修改或者数据修改进行审计语句如下:

 audit alter,update on sc;

 取消审计使用下列语句:

 noaudit all on sc;

--1 所有的审计日志都写在sys.aud$(也可以通过视图dba_audit_trail找)

select * from sys.aud$ a where a.action#=12;

--2 审计的所有类型 例如:创建表、删除表等

select * from sys.audit_actions;

--3 数据库设置了哪些可以审计

select * from dba_stmt_audit_opts

2 细粒度审计(FGA)

使用包DBMS_FGA.ADD_POLICY、DBMS_FGA.DROP_POLICY

 2.1 增加 

 begin

  dbms_fga.add_policy(object_schema => '',object_name => '',policy_name => '',audit_column => '',statement_types => '');

 end;

 object_schema:数据库用户名

 object_name:表名

 policy_name:审计的名称(这个自己随便定义,不同审计不同名称)

 audit_column:需要审计的字段(全部审计不需要该参数)

 statement_types:delete,update(只审计delete和update,中间用逗号分隔,也可以审计select,例如:select,update,delete)

 2.2 删除 

 dbms_fga.drop_policy(object_schema => '',object_name => '',policy_name => '');

 2.3查询审计结果

 select * from dba_audit_policies;--增加的审计

 select * from dba_fga_audit_trail;--审计产生日志(重点查询)

继续阅读