为什么在SYS.AUD $中看不到帐号(DBA)的活动?

时间:2016-05-13 15:10:47

标签: oracle

我已将audit_sys_operations设为true,audit_trail为DB,EXTENDED。现在我有一个拥有DBA特权的帐户名admin。我使用AUDIT CREATE ANY TABLE BY ADMIN,但select * from SYS.AUD$只显示管理员创建新表的任何内容,即使管理员创建了多个表;

我可以看到具有DBA权限的用户的审核记录吗?

2 个答案:

答案 0 :(得分:1)

好吧,我将在这里总结一下未来的来源。

  

AUDIT_TRAIL = DB / TRUE启用系统范围审核,其中审核记录将写入       数据库审计跟踪( SYS.AUD $ 表)。唯一不会写入表的审计数据是与SYSDBA活动有关的审计数据。

正如我设置了AUDI_TRAIL,我可以在 SYS.AUD $ 中看到经过审核的活动。

如上所述here

  

AUDIT_SYS_OPERATIONS 启用或禁用顶级操作的审核,这些操作是用户在与 SYSASM 连接时直接发出的SQL语句, SYSBACKUP SYSDBA SYSDG SYSKM SYSOPER 权限。 (从PL / SQL过程或函数中运行的SQL语句不被视为顶级。)审计记录将写入操作系统的审计跟踪。如果AUDIT_TRAIL初始化参数设置为xml或xml,则会以XML格式写入审计记录。

由于我已将audit_sys_operations设置为true,oracle将审核SYSDBA个活动,但记录不会显示在 SYS.AUD $ 中,将在(在我的情况下是/u01/app/oracle/admin/orcl/adump)。

但要小心,不要查找错误的审核日志文件。活动记录包含在orcl_ora_6225_20160513082219532252143795.aud 之类的文件中。我在下面分享一些内容:

ACTION :[14] 'drop table foo'
DATABASE USER:[1] '/'
PRIVILEGE :[6] 'SYSDBA'
CLIENT USER:[6] 'oracle'
CLIENT TERMINAL:[5] 'pts/3'
STATUS:[3] '942'
DBID:[10] '1439309578'

Fri May 13 08:00:17 2016 -07:00
LENGTH : '205'
ACTION :[51] 'CREATE TABLE FOO(
        FOO1 INTEGER,
        BAR VARCHAR(10)
)'
DATABASE USER:[1] '/'
PRIVILEGE :[6] 'SYSDBA'
CLIENT USER:[6] 'oracle'
CLIENT TERMINAL:[5] 'pts/3'
STATUS:[1] '0'
DBID:[10] '1439309578'

您可以看到我使用具有SYSDBA权限的帐户删除名为foo的表并重新创建它。括号中的数字是值的长度。

这就是审计SYSDBA的工作方式。

答案 1 :(得分:0)

如果您想审核SYS的功能,您需要将AUDIT_SYS_OPERATIONS参数设置为TRUE,而您已经这样做了。但出于安全原因,SYS操作不会被写入SYS.AUD $。由于SYS可以从AUD $表中删除行,因此必须将SYS审计跟踪写入文件系统(可能您可以配置文件权限,以便DBA无法修改审计跟踪)。