5、Oracle数据库审计

1、审计(Audit):

对用户所执行的数据库活动的跟踪记录,便于事后监督、检查

 

审计信息存放位置:

审计记录信息,存储在system表空间中的SYS.AUD$数据字典表;

或操作系统默认位置$ORACLE_BASE/admin/$ORACLE_SID/adump/;

 

Oracle 11G以后,数据库默认是开启审计功能的,因此有时候我们忘记了关闭该功能导致SYSTEM表空间暴满,但由于关闭审计功能需要重启数据库,此类操作生产环境下是不允许的,因此我们需要找出哪类审计产生的较多,然后单独的进行关闭;我们可以通过如下方法查找:如果你发现AUD$这个表比较大了,检查下是哪种审计占的空间:

SQL> select action_name,count(*) from dba_audit_trail group by action_name;

--一般是LOGON和LOGOFF类型的审计最多。取消此类审计:

SQL> noaudit session whenever successful;

--一般来说,如果空间不是占的特别多,此类审计还是保留为好。可以取消对一些登录特别频繁的用户的审计,比如DBSNMP用户:

SQL> noaudit session by U007;

--关闭审计后,对表sys.aud$进行清理

select * from  sys.aud$;

truncate table selsys.aud$;

 

审计参数AUDIT_TRAIL

参数值取值列表:

(1).DB/TRUE ---- 启用审计,并且把审计结果存放在数据库的SYS.AUD$表中

(2).OS ---- 启用审计,并把审计结果存放在操作系统的审计信息中

(3).DB_EXTENDED ---- 启用审计,把审计结果存放在数据库SYS.AUD$表中,并在CLOB列的SQLBINDSQLTEXT字段记录额外的信息;

(4).XML ---- 启用审计,以XML格式写所有审计记录;

(5).EXTENDED ---- 启用审计,在审计跟踪中记录所有列,包括SQLTEXTSQLBIND

(6).NONE/FALSE ---- 禁用审计

 

以下步骤设置Oracle的审计功能:

(1).修改审计参数AUDIT_TRAIL:

Alter system set AUDIT_TRAIL=DB scope=spfile;

 (2).初始化数据库审计功能:

connect /as sysdba执行脚本cataudit.sql,脚本位置D:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN;

 (3).重启数据库:

由于参数AUDIT_TRAIL不是动态的,需要关闭数据库重启生效

  

2、审计分类和用法:

语句审计:

--语法

AUDIT sql_statement_clause [BY user_name] | [BY [SESSION | ACCESS]

WHENEVER [NOT] SUCCESSFUL]

参数说明:

sql_statement_clause ---- SQL语句或选项;

BY ACCESS ---- 存取方式,每条语句被执行一次都要审计,不管语句是否相同;

BY SESSION ---- 会话方式,相同的语句只被审计一次,这也是系统默认方式;

WHENEVER SUCCESSFUL ---- 表示只对成功语句进行审计;

WHENEVER NOT SUCCESSFUL ---- 表示只对不成功语句进行审计。

 

--举例:

--(1).审计用户对对象的操作:

Audit table by scott;

--(2).审计用户执行的SQL语句:

Audit create table by scott;

Audit insert table by u0007; ---- 审计insert into表或视图;

Audit delete table by u0007; ---- 审计删除表或视图中的行;

--(3).指定审计方式:

Audit delete table by u0007 by access; ---- 存取方式,每条语句执行一次都要审计;

--(4).审计成功与不成功的会话:

Audit session by u007 whenever not successful; ---- 只对不成功语句进行审计;

--(5).了解哪些用户进行了审计,可查询数据字典视图DBA_STMT_AUDIT_OPTS

select * from dba_stmt_audit_opts where user_name='U007';

--(6).停止语句审计:

Noaudit alter table by U007;

 

权限审计:

--语法:

AUDIT privilege [BY user_name] | [BY [SESSION | ACCESS]

WHENEVER [NOT] SUCCESSFUL]

 

对象审计:

--语法:

AUDIT schema_object_clause ON schema

[BY user_name] | [BY [SESSION | ACCESS]

WHENEVER [NOT] SUCCESSFUL]

Audit select,insert,delete on scott.dept by access;

 

3、细粒度审计(FGA)

是由DBMS_FGAPL/SQL程序实现的

posted @ 2016-05-18 23:08  囧囧友  阅读(3649)  评论(0编辑  收藏  举报