审计用于监视和记载数据库用户所执行的各种操作。激活审计后,如果数据库用户执行了审计操作,oracle会生成审计跟踪结果,并将审计跟踪结果存放到审计跟踪记录中。审计跟踪记录中包含了操作系统用户名,数据库用户名,数据库操作,操作对象以及操作时间等信息。
1.特权用户审计
特权用户审计用于审计特权用户所执行的各种数据库操作。当以特权用户连接到数据库、启动和关闭数据库时,oracle自动将这些操作的信息记载到OS审计跟踪记录中。 默认情况下,oracle只会审计特权用户连接,启动和关闭数据库的操作,为了审计特权用户执行的其他操作信息,必须将初始化参数AUDIT_SYS_OPERATIONS设置为TRUE。因为此参数是静态的,所以必须重启数据库。示例如下:
ALTER SYSTEM SET audit_sys_operations = TRUE SCOPE=SPFILE;
2.数据库审计
@1 激活数据库审计
为了激活数据库审计,必须修改初始化参数AUDIT_TRAIL。该初始化参数默认值是NONE,为了激活数据库审计,必须将该参数设置为OS或DB。当设置为OS,oracle会将审计结果存放到OS审计跟踪记录中;当设置为DB时,oracle 会将结果存放到数据字典AUD$中。因为AUDIT_TRAIL是静态的,所以要重启。
ALTER SYSTEM SET audit_trail =db SCOPE = SPFILE;
@指定审计选项
激活数据库审计后,为了审计特定的数据库操作,必须使用AUDIT 语句指定要审计的数据库操作。有一下选项
BY SESSION :该选项表示在同一个会话中对完全相同的SQL语句只生成一条审计跟踪记录,该选项是默认选项。
BY ACCESS: 该选项表示每执行一次 语句生成一条审计跟踪记录。
BY 用户名:该选项用于指定审计数据库名。不指定,oracle会自动审计除特权用户外的所有其他用户。
WHENEVER[NOT] SUCCESSFUL : WHENEVER SUCCESSFUL 选项用于指定审计执行成功的操作,WHENEVER NOT SUCCESSFUL 选项用于指定审计执行失败的操作。
2.1 语句审计:
@1 设置语句审计
AUDIT TABLE;
@2 执行语句操作
CREATE TABLE ....
@显示审计跟踪结果
SELECT USERNAME,ACTION_NAME,OBJ_NAME, TO_CHAR(TIMESTAMP,'YYYY-MM-DD HH24:MI')
FROM DBA_AUDIT_TRAIL;
@显示已经设置的审计选项
SELECT USER_NAME,AUDIT_OPTION FROM DBA_STMT_AUDIT_OPTS;
@ 禁止语句审计
NOAUDIT TABLE;
2.2 权限审计
@指定权限审计
AUDIT CREATE SEQUENCE;
@执行权限操作
CREATE SEQUENCE;
@查询审计记录
同上
@ 显示已经设置的权限审计选项
同上
@ 禁止权限审计
同上
2.3 对象审计
同上