在XP SP2虚拟机中运行Oracle 11gR1。完整披露:这是一项作业。

每当有用户被授予DBA角色时,我都试图进行审计,并在事件发生时触发电子邮件。

我相信命令AUDIT DBA;将审核对DBA角色执行的所有操作。我有一个可以正常工作的程序,可以处理电子邮件部分,但是我不了解标准审核以与细化审核策略相同的方式触发该程序的方法。

我已尝试使用该政策

begin
dbms_fga.drop_policy
    (object_schema => 'SYS',
    object_name => 'DBA_ROLE_PRIVS',
    policy_name => 'EXAMPLE');
dbms_fga.add_policy
    (object_schema => 'SYS',
    object_name => 'DBA_ROLE_PRIVS',
    policy_name => 'EXAMPLE',
    audit_condition => 'GRANTED_ROLE = DBA',
    audit_column => 'GRANTED_ROLE',
    handler_schema => 'SYS',
    handler_module => 'FGA_NOTIFY');
end;


其中FGA_NOTIFY是电子邮件过程。但是我得到通知“不允许向SYS拥有的对象添加策略”。在搜索Oracle文档时,我找不到解决方法。

我的问题是:当用户获得DBA角色(也可以触发电子邮件通知)时,有人可以建议一种审计方法和Oracle数据库吗?

在此先感谢您的帮助!

最佳答案

您可以启用AUDIT_TRAIL并创建一个作业,该作业定期查询DBA_AUDIT_TRAIL视图,以查找要检查的授予类型:

   select os_username, username, userhost, terminal, timestamp, grantee
   from   dba_audit_trail
   where  action_name = 'GRANT ROLE'
   and    obj_name    = 'DBA'
   and    timestamp   >= (last_time_check_was_done)

09-10 23:17