我已将audit_sys_operations
设为true,audit_trail
为DB,EXTENDED。现在我有一个拥有DBA特权的帐户名admin
。我使用AUDIT CREATE ANY TABLE BY ADMIN
,但select * from SYS.AUD$
只显示管理员创建新表的任何内容,即使管理员创建了多个表;
我可以看到具有DBA权限的用户的审核记录吗?
答案 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无法修改审计跟踪)。