从20C开始,对执行SQL语句的当前用户强制实施统一审核策略。
在以前的版本中,对拥有执行SQL语句的顶级用户会话(即登录用户会话)的用户实施了统一审核策略。当前用户与登录用户不同的情况包括但不限于以下各项:触发执行定义权限的过程执行在评估视图期间执行的功能和过程。
AUDIT带有该POLICY子句的语句启用了统一的审核策略,适用于所有类型的审核选项,包括对象级选项。
该策略将在当前会话以及任何正在进行的活动会话(包括已登录的其他用户的会话)中立即启用。
您可以为单个用户或角色启用审核策略。通过为角色启用审核策略,可以为直接被授予角色的一组用户启用策略。将角色直接授予新用户后,该策略将自动应用于该用户。从用户撤消该角色后,该策略将不再适用于该用户。
您可以通过查询UNIFIED_AUDIT_TRAIL数据字典视图来检查审计结果。要查找现有统一审核策略的列表,请查询AUDIT_UNIFIED_POLICIES数据字典视图。
该AUDIT语句使您可以指定以下可选的附加设置:
是否将统一审核策略应用于一个或多个用户或角色。要将策略应用于一个或多个用户或角色,包括使用SYSDBA管理特权(例如SYS)登录的管理用户,请使用此BY子句。例如,将策略应用于用户SYS和SYSTEM:
例如,将策略应用于两个用户:
AUDIT POLICY role_connect_audit_pol BY SYS, SYSTEM;
复制
要将策略应用于直接被授予DBA和CDB_DBA角色的用户:
AUDIT POLICY admin_audit_pol BY USERS WITH GRANTED ROLES DBA, CDB_DBA;
复制
是否从统一审核策略中排除用户。要将用户从审核策略中排除,请包括以下EXCEPT子句。
例如:
AUDIT POLICY role_connect_audit_pol EXCEPT rlee, jrandolph;
复制
活动成功还是失败,是否创建审核记录。这种审核方法减少了审核记录,帮助您专注于特定操作。这可以帮助维持良好的数据库性能。输入以下子句之一:
WHENEVER SUCCESSFUL 仅审核用户活动的成功执行。
WHENEVER NOT SUCCESSFUL仅审核用户活动的失败执行。监视不成功的SQL语句可以暴露正在监听或恶意行为的用户,尽管大多数不成功的SQL语句都不是。
例如:
AUDIT POLICY role_connect_audit_pol WHENEVER NOT SUCCESSFUL;
复制
如果省略此子句,则失败和成功的用户活动都将写入审核跟踪。
请注意以下几点:
统一的审计策略只能有两种的BY,BY USERS WITH GRANTED ROLES或EXCEPT条款,但不超过这些条款为相同的策略之一。
如果您AUDIT在同一统一审核策略上运行多个语句,但指定了不同的BY用户或不同的BY USERS WITH GRANTED ROLES角色,则Oracle数据库将审核所有这些用户或角色。
如果您AUDIT在同一统一审核策略上运行多个语句,但指定了不同的EXCEPT用户,则Oracle数据库将使用最后一个例外用户列表,而不是前面列表中的任何用户。这意味着较早的AUDIT POLICY … EXCEPT语句的影响被最新的AUDIT POLICY … EXCEPT语句覆盖。
您不能将EXCEPT子句用于角色。它仅适用于用户。
您只能为普通用户或角色启用通用统一审核策略。
您只能从根目录启用通用审核策略,而只能从其应用的PDB启用本地审核策略。