一聚教程网:一个值得你收藏的教程网站

热门教程

如何在Oracle 19c中配置统一审计模型下的用户访问监控?

时间:2026-07-03 11:06:51 编辑:袖梨 来源:一聚教程网

统一审计未启用则所有策略静默失效,必须完成二进制重链接并重启数据库;真实启用需同时满足:V$OPTION中Unified Auditing为TRUE、UNIFIED_AUDIT_TRAIL可访问、audit_trail参数为NONE;策略须显式启用且匹配用户、对象与权限。

统一审计没启用,所有策略都不记录——不是配置错了,是根本没激活。必须先完成二进制重链接并重启数据库,否则 audit policydbms_audit_mgmt.init_cleanup 全部静默失效。

确认 Unified Auditing 是否真正启用

别只查 V$OPTION。它返回 TRUE 只表示“支持”,不代表已启用。真实状态要看三件事是否同时满足:

  • SELECT value FROM V$OPTION WHERE PARAMETER = 'Unified Auditing' 返回 TRUE
  • SELECT * FROM UNIFIED_AUDIT_TRAIL WHERE ROWNUM = 1 不报 ORA-00942,且能查到任意一行(哪怕空结果)
  • SHOW PARAMETER audit_trail 返回值必须是 NONE(不能是 DBXML 或混合模式残留)

任一不满足,说明还在传统或混合模式,后续所有操作都白忙。

创建并启用审计策略监控用户访问行为

统一审计下,“用户访问”需拆解为具体动作:登录、查询敏感表、执行 DDL 等。不能笼统配一个策略覆盖全部,得按场景选 ACTIONS

  • 监控登录失败:CREATE AUDIT POLICY login_fail_policy ACTIONS LOGON WHENEVER NOT SUCCESSFUL
  • 监控 SELECT 敏感表:CREATE AUDIT POLICY select_hr_policy ACTIONS SELECT ON hr.employees, hr.departments
  • 监控所有 DDL:CREATE AUDIT POLICY ddl_policy ACTIONS CREATE ANY TABLE, DROP ANY TABLE, ALTER ANY TABLE

关键点:策略创建后必须显式启用,否则不生效:
AUDIT POLICY login_fail_policy BY ALL USERS(全库)或 AUDIT POLICY select_hr_policy BY zabbix_mon, app_user(指定用户)

细粒度访问审计要用 DBMS_FGA,不是 AUDIT POLICY

如果目标是“谁在什么时候查了工资字段”,AUDIT POLICY 无能为力——它不捕获列级读取。必须用 DBMS_FGA,但要注意它和统一审计是并行机制,不是子集:

  • DBMS_FGA.ADD_POLICYaudit_column 必须与表中实际列名大小写完全一致(如表定义是 SALARY,就不能传 'salary'
  • 策略是否触发,取决于执行计划是否物理读取该列;索引覆盖查询、函数索引跳过列访问,FGA 就不会记录
  • SHOW PARAMETER audit_trail 必须不是 NONE,否则 DBMS_FGA 加策略会静默失败(统一审计启用后,FGA 日志默认进 UNIFIED_AUDIT_TRAIL,但策略本身仍由 FGA 独立管理)

查不到日志?优先验证这三处

策略启用后仍无记录,问题大概率卡在以下环节:

  • 执行操作的用户是否真有对应权限?例如 DROP ANY TABLE 策略只捕获拥有该系统权限的用户删他人表,删自己表需单独配 ACTIONS DROP ON schema.table
  • 操作是否落在策略定义的精确对象上?ACTIONS SELECT ON hr.employees 不会捕获 SELECT * FROM hr.emp_backup
  • 策略启用范围是否包含当前会话用户?AUDIT POLICY xxx BY SYSTEMSCOTT 登录的操作完全无效

统一审计的日志默认存在 UNIFIED_AUDIT_TRAIL,但这个视图本身依赖底层模块加载——没走重链接,连视图都不存在,更别说查数据了。

热门栏目