重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

标题: 统一审计(Unified Auditing) [打印本页]

作者: Inkcup    时间: 7 天前
标题: 统一审计(Unified Auditing)
AUD$UNIFIED 表是Oracle 12c+ 的统一审计(Unified Auditing)日志表,存储所有数据库审计记录。
!注意:需使用具有AUDIT_ADMI权限的非sys用户执行操作。实验中使用audit_zw用户。


-- 1. 查看当前审计日志保留策略
SELECT * FROM dba_audit_mgmt_cleanup_events;
#19c环境用下面这个
SELECT * FROM DBA_AUDIT_MGMT_CLEAN_EVENTS;



-- 查看当前审计清理配置
SELECT * FROM DBA_AUDIT_MGMT_CONFIG_PARAMS;

-- 查看已有的清理作业
SELECT * FROM DBA_AUDIT_MGMT_CLEANUP_JOBS;


查看统一审计90天前的数据条数:
SQL> r
  1  SELECT COUNT(*)
  2  FROM UNIFIED_AUDIT_TRAIL
  3* WHERE EVENT_TIMESTAMP < SYSTIMESTAMP - INTERVAL '90' DAY

  COUNT(*)
----------
  46963050


-- 2. 清理过旧的审计记录(例如清理30天前的)


有其他的软件兼具审计功能的话,本库的审计可以设置个自动清理阈值
-- 设置最后归档时间为30天前
BEGIN
  DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
    audit_trail_type  => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
    last_archive_time => SYSTIMESTAMP - INTERVAL '30' DAY
  );
END;
/

-- 验证设置是否成功
SELECT PARAMETER_NAME, PARAMETER_VALUE, AUDIT_TRAIL
FROM DBA_AUDIT_MGMT_CONFIG_PARAMS
WHERE PARAMETER_NAME = 'LAST ARCHIVE TIME'
AND AUDIT_TRAIL = 'UNIFIED AUDIT TRAIL';


--执行清理
BEGIN
  DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(
    audit_trail_type        => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
    use_last_arch_timestamp => TRUE
  );
END;
/

-- 3. 设置自动清理策略(建议保留30-90天)
-- 创建每周执行的自动清理作业
BEGIN
  DBMS_AUDIT_MGMT.CREATE_PURGE_JOB(
    audit_trail_type           => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
    audit_trail_purge_interval => 168,  -- 168小时 = 7天
    audit_trail_purge_name     => 'UNIFIED_AUDIT_PURGE_JOB',
    use_last_arch_timestamp    => TRUE
  );
END;
/

-- 查看作业状态
SELECT JOB_NAME, STATE, LAST_START_DATE, NEXT_RUN_DATE
FROM DBA_SCHEDULER_JOBS
WHERE JOB_NAME = 'UNIFIED_AUDIT_PURGE_JOB';

如果没有查到数据,可能是没有授权,需切换sys用户授予权限:

GRANT SELECT ON DBA_SCHEDULER_JOBS TO audit_zw;

再次查询可得:
318776a1c0317ce46e.png
登录/注册后可看大图