创建 Unified Auditing 策略、按条件启用、查看记录并删除
Oracle安全命令
-- 1) Object + condition based policy (excluding the batch module):
CREATE AUDIT POLICY pol_customer_dml
ACTIONS SELECT ON customer_app.customer,
UPDATE ON customer_app.customer,
DELETE ON customer_app.customer
WHEN 'SYS_CONTEXT(''USERENV'',''MODULE'') NOT LIKE ''batch%'''
EVALUATE PER SESSION;
-- 2) Privileged operations policy:
CREATE AUDIT POLICY pol_ddl_priv
PRIVILEGES DROP ANY TABLE, ALTER SYSTEM
ACTIONS DROP USER, ALTER USER, CREATE USER;
-- 3) Enable:
AUDIT POLICY pol_customer_dml EXCEPT customer_app; -- everyone except the schema owner
AUDIT POLICY pol_ddl_priv WHENEVER SUCCESSFUL;
AUDIT POLICY ORA_LOGON_FAILURES WHENEVER NOT SUCCESSFUL;
-- 4) Which policy is enabled for whom?
SELECT policy_name, enabled_option, entity_name, success, failure
FROM audit_unified_enabled_policies ORDER BY policy_name;
SELECT policy_name, audit_option, object_schema, object_name, audit_condition
FROM audit_unified_policies WHERE policy_name LIKE 'POL_%';
-- 5) Records:
SELECT event_timestamp, dbusername, action_name, object_schema, object_name,
return_code, unified_audit_policies, os_username, userhost
FROM unified_audit_trail
WHERE event_timestamp > SYSTIMESTAMP - INTERVAL '1' DAY
AND unified_audit_policies LIKE '%POL_%'
ORDER BY event_timestamp DESC;
-- 19c (queued-write): EXEC DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL; (not in 23ai)
-- 6) Disable and remove:
NOAUDIT POLICY pol_customer_dml;
NOAUDIT POLICY pol_ddl_priv;
DROP AUDIT POLICY pol_customer_dml;
DROP AUDIT POLICY pol_ddl_priv;作用
Unified Auditing 将所有审计记录收集到单一审计踪迹(AUDSYS schema,UNIFIED_AUDIT_TRAIL)中。策略按对象操作、系统权限或操作定义;WHEN 条件和 BY/EXCEPT 用户列表可减少噪音。
适用场景
用于记录对敏感表的访问、监控特权 DDL 和权限变更、查看登录失败尝试,以及满足审计要求。
注意
无需额外许可。对繁忙表审计 SELECT 会产生大量记录并使 SYSAUX 增长;请用条件和 EXCEPT 缩小范围,并用 DBMS_AUDIT_MGMT(CLEAN_AUDIT_TRAIL、SET_LAST_ARCHIVE_TIMESTAMP)安排归档/清理。已启用的策略无法删除(ORA-46361);请先执行 NOAUDIT。策略变更在新会话中生效。19c 默认以混合模式运行,因此也可能写入传统 AUDIT_TRAIL 记录。