Oracle的审计(Auditing) 详解

审计(Audit)用于监视用户所执行的数据库操作,审计记录可存在数据字典表(称为审计记录:存储在system表空间中的 SYS.AUD$ 表中,可通过视图dba_audit_trail查看)或操作系统审计记录中(audit_file_dest参数决定)。默认情况下审计是没有开启的。

1、审计的类型有四种:

Statement Auditing(语句审计):在语句级别进行审计,如审计执行SELECT TABLE的语句,而不针对某一单独的对象。

Privilege Auditing(权限审计):审计某一系统权限的使用情况,如果审计在创建表时用到的CREATE ANY TABLE权限。

Schema Object Auditing(对象审计):审计对指定对象上的操作,如审计对表scott.emp的INSERT操作。

Fine-Grained Auditing(细粒度审计):用于指定更细粒度的审计,用DBMS_FGA包来实现。

2、相关参数:

AUDIT_TRAIL参数

这参数决定数据库审计的开启和关闭。可以被赋与如下值

DB,启用数据库审计,并把审计记录记录到数据库中的SYS.AUD$

XML,启用数据库审计,并把审计记录在文件系统以XML文件的开始存放

DB,EXTENDED,具有与DB一样的功能,并在必要时在SYS.AUD$中记录SQL bind and SQL text CLOB-type columns。

XML,EXTENDED,具有与XML一样的功能,并在可用时在XML文件中记录SQL bind and SQL text CLOB-type columns。

OS,启用数据库审计,并把审计记录记录到操作系统的文件中。

NONE,不启用数据库审计,默认值。

AUDIT_FILE_DEST参数

如果AUDIT_TRAIL=OS,则审计记录的文件,存放在AUDIT_FILE_DEST指定的目录中。

AUDIT_SYS_OPERATIONS参数

指定是否启用对SYS用户的审计。默认为FALSE,启用设置为TRUE。记录不存放在AUD$中,而是记录在其它地方。如果是windows平台,audti trail会记录在windows的事件管理中,如果是linux/unix平台则会记录在audit_file_dest参数指定的文件中。

3、启用和停用数据库审计

使用ALTER SYSTEM语句设置AUDIT_TRAIL参数,这个参数不可在线修改,修改后需重库数据库实例生效。例句如下:

ALTER SYSTEM SET AUDIT_TRAIL=DB,EXTENDED SCOPE=SPFILE;

停用数据库审计使用如下语句,重启数据库生效

ALTER SYSTEM SET AUDIT_TRAIL=NONE SCOPE=SPFILE;

4、启用和停止审计功能的语法:

1)启用审计使用AUDIT语句

wKiom1j-EfDxoTsbAAGXMKVir5E923.png

2)停止审计功能

要停用审计功能把上面的AUDIT改为NOAUDIT。

在启用审计功能前,必须先设置AUDIT_TRAIL参数为非NONE,否则数据库不会进行审计。

5、使用审计功能的示例

启用数据库审计

sys@TEST>alter system set audit_trail=DB scope=spfile;

  

System altered.

1)Statement Auditing(语句审计)

审计由SCOTT用户发出的所有SELECT TABLE

sys@TEST>audit select table by scott;

  

Audit succeeded.

  

sys@TEST>select * from dba_stmt_audit_opts;

  

USER_NAME             PROXY_NAME              AUDIT_OPTION             SUCCESS              FAILURE

------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------

SCOTT                                SELECT TABLE           BY SESSION          BY SESSION

  

scott@TEST>select count(*) from emp;

  

  COUNT(*)

----------

    14

      

sys@TEST>select timestamp,sql_text from dba_audit_trail;

  

TIMESTAMP      SQL_TEXT

------------------- --------------------------------------------------------------------------------

2017-04-24 23:07:47 select count(*) from emp

2)Privilege Auditing(权限审计)

审计所有系统权限

sys@TEST>audit all privileges;

  

Audit succeeded.

  

sys@TEST>select * from dba_priv_audit_opts;

  

USER_NAME             PROXY_NAME              PRIVILEGE           SUCCESS              FAILURE

------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/5f66aef7208bd7bae46af68a6683a42b.html