Oracle 如何通过模式或其他可能的方式限制DBA_AUDIT_TRAIL活动的可见性,以查看目标模式的活动

Oracle 如何通过模式或其他可能的方式限制DBA_AUDIT_TRAIL活动的可见性,以查看目标模式的活动,oracle,database-administration,Oracle,Database Administration,我要求DBA打开DBA_审计_跟踪日志记录,我得到了回击。在某些环境中,我在查询此表时会看到记录的更改活动,而在其他环境中则不会 我只对一些模式感兴趣。在我看来,如果我对这个表的可见性可以局限于我感兴趣跟踪的模式,那么授予我访问权限的阻力可能会更小。授予我仅访问目标架构列表中的对象的最佳方式是什么?是否有其他视图可供我访问 是否存在一个现有的Oracle视图,该视图将行活动限制为只有那些用户可以看到的对象,或者我们必须创建自己的视图,或者更原始地创建这样的视图 SELECT * FROM DBA

我要求DBA打开DBA_审计_跟踪日志记录,我得到了回击。在某些环境中,我在查询此表时会看到记录的更改活动,而在其他环境中则不会

我只对一些模式感兴趣。在我看来,如果我对这个表的可见性可以局限于我感兴趣跟踪的模式,那么授予我访问权限的阻力可能会更小。授予我仅访问目标架构列表中的对象的最佳方式是什么?是否有其他视图可供我访问

是否存在一个现有的Oracle视图,该视图将行活动限制为只有那些用户可以看到的对象,或者我们必须创建自己的视图,或者更原始地创建这样的视图

SELECT * FROM DBA_AUDIT_TRAIL WHERE OWNER IN ('schema1','schema2') 

并限制对视图的SELECT访问?我不确定此查询是否在某些环境中没有返回行,因为日志记录没有打开,或者我只是没有正确的访问权限。

我没有找到基于DBA\u AUDIT\u TRAIL和统一\u AUDIT\u TRAIL的其他视图

我认为解决方案是以有限的权限创建自己的视图


DBA应该能够告诉您是否启用了审核,有无统一审计跟踪以及审计的内容:实际上,他/她很可能是唯一能够检查这一点的人,除非有某种单独的数据库安全管理角色。

我还没有找到基于DBA\u audit\u trail和统一\u audit\u trail的替代视图

我认为解决方案是以有限的权限创建自己的视图


您的DBA应该能够告诉您是否启用了审核,是否有统一的审核跟踪以及审核的内容:实际上,他/她很可能是唯一能够检查这一点的人,除非有某种单独的数据库安全管理角色。

通常,最好安装一个数据库,在那里您可以访问DBA、SYSDBA等的所有内容。然后您只需查找文档并进行尝试。如果DBA注意到您知道自己在说什么,您将更快地获得他们的信任。例如或

对于您的问题:可以完全为数据库切换审计,但这种情况很少。如果启用了它,则需要为整个模式或单个对象(如表)启用它。限制对DBA_AUDIT_TRAIL的读取访问是一种良好的做法,因为其中可能存在需要保护的数据,如个人登录等

其次,必须非常小心启用表上的审计将生成的数据量。我的DBA只在短时间内启用它,然后再次关闭它以检查生成了多少数据

限制数据的视图是一个很好的主意,您应该和DBA一起为您创建一个视图

编辑:显然,这个例子是正确的。花了一段时间,因为我不得不打开审计功能,这在Oracle的“流浪者”对话框中默认是禁用的

正如您所建议的,DBA可以在DBA_AUDIT_TRAIL上创建一个SYSDBA视图,过滤掉特定的所有者或当前连接的会话,以便每个用户都可以看到自己表的审核操作:

CREATE OR REPLACE VIEW USER_AUDIT_TRAIL 
AS
SELECT *
  FROM DBA_AUDIT_TRAIL 
 WHERE username = SYS_CONTEXT('USERENV','SESSION_USER');
您或所有用户均可访问此视图:

CREATE PUBLIC SYNONYM USER_AUDIT_TRAIL FOR SYS.USER_AUDIT_TRAIL;
GRANT SELECT ON USER_AUDIT_TRAIL TO PUBLIC;

请务必与DBA交谈,他们可能希望将视图的某些列和行排除在公共曝光之外。

一般来说,最好安装一个数据库,在那里您可以访问DBA、SYSDBA等的所有内容。然后您可以查找文档并进行尝试。如果DBA注意到您知道自己在说什么,您将更快地获得他们的信任。例如或

对于您的问题:可以完全为数据库切换审计,但这种情况很少。如果启用了它,则需要为整个模式或单个对象(如表)启用它。限制对DBA_AUDIT_TRAIL的读取访问是一种良好的做法,因为其中可能存在需要保护的数据,如个人登录等

其次,必须非常小心启用表上的审计将生成的数据量。我的DBA只在短时间内启用它,然后再次关闭它以检查生成了多少数据

限制数据的视图是一个很好的主意,您应该和DBA一起为您创建一个视图

编辑:显然,这个例子是正确的。花了一段时间,因为我不得不打开审计功能,这在Oracle的“流浪者”对话框中默认是禁用的

正如您所建议的,DBA可以在DBA_AUDIT_TRAIL上创建一个SYSDBA视图,过滤掉特定的所有者或当前连接的会话,以便每个用户都可以看到自己表的审核操作:

CREATE OR REPLACE VIEW USER_AUDIT_TRAIL 
AS
SELECT *
  FROM DBA_AUDIT_TRAIL 
 WHERE username = SYS_CONTEXT('USERENV','SESSION_USER');
您或所有用户均可访问此视图:

CREATE PUBLIC SYNONYM USER_AUDIT_TRAIL FOR SYS.USER_AUDIT_TRAIL;
GRANT SELECT ON USER_AUDIT_TRAIL TO PUBLIC;
请务必与DBA对话
,他们可能希望将视图中的某些列和行排除在公开范围之外。

尽管有人可以按照您的建议创建视图,但它仍然不一定会限制您对主审核跟踪的访问,因为对Oracle中数据字典的访问不是细粒度的。它往往是全部或全无-因此您可以有一个自定义视图,但仍然可以访问DBA_AUDIT_TRAIL,因为在大多数环境中都需要SELECT ANY DICTIONARY特权。我认为唯一可行的方法是使用定义者的权限在专用的应用程序架构中创建视图,并具有必要的权限,然后将该视图的select访问权授予您的帐户


也就是说,审计本身是非常细粒度的。如果它尚未启用并被其他人使用,那么它只能为您要审核的内容打开,因此无需创建自定义视图。

虽然有人可以按照您的建议创建视图,但它仍然不一定会限制您对主审核跟踪的访问,因为对Oracle中数据字典的访问不是细粒度的。它往往是全部或全无-因此您可以有一个自定义视图,但仍然可以访问DBA_AUDIT_TRAIL,因为在大多数环境中都需要SELECT ANY DICTIONARY特权。我认为唯一可行的方法是使用定义者的权限在专用的应用程序架构中创建视图,并具有必要的权限,然后将该视图的select访问权授予您的帐户

也就是说,审计本身是非常细粒度的。如果它尚未启用并被其他人使用,则只能为您要审核的内容启用它,因此无需创建自定义视图