Oracle 审计参数:AUDIT_TRAIL 和 AUDIT_SYS_OPERATIONS
一 AUDIT_TRAIL 参数
1.1 参数功能
AUDIT_TRAIL
是 Oracle 数据库中最核心的审计控制参数,决定审计记录的存储位置和记录方式。
1.2 参数取值及含义
取值 | 说明 | 适用场景 |
---|---|---|
NONE | 禁用数据库审计 | 测试环境或不需审计的场景 |
OS | 审计记录写入操作系统文件 | 需要操作系统级审计记录时 |
DB | 审计记录写入数据库表 SYS.AUD$ | 常规审计需求,记录到数据库表中 |
DB,EXTENDED | 同 DB,但包含 SQLBIND 和 SQLTEXT 字段 | 需要记录完整SQL语句和绑定变量的深度审计 |
XML | 审计记录以XML格式写入操作系统文件 | 需要结构化审计日志且不使用数据库存储时 |
XML,EXTENDED | 同 XML,包含完整SQL文本 | 需要XML格式且包含完整SQL语句的审计 |
1.3 配置方法
-- 查看当前设置
SELECT name, value FROM v$parameter WHERE name = 'audit_trail';
-- 修改设置(需要重启数据库)
ALTER SYSTEM SET audit_trail='DB,EXTENDED' SCOPE=SPFILE;
1.4 注意事项
- 修改此参数需要重启数据库生效
- 使用 DB/DB,EXTENDED 时会写入 SYS.AUD$ 表,需监控该表大小
- EXTENDED 选项会显著增加存储空间需求
- 使用OS时会生成审计文件,这会占用目录空间及文件系统的inode
二 AUDIT_SYS_OPERATIONS 参数
2.1 参数功能
控制是否审计 SYS 用户(包括 SYSDBA/SYSOPER 权限用户)的操作。
2.2 参数取值
- TRUE:审计 SYS 用户的所有操作
- FALSE:不审计 SYS 用户操作(默认值)
2.3 配置方法
-- 查看当前设置
SELECT name, value FROM v$parameter WHERE name = 'audit_sys_operations';
-- 修改设置(需要重启数据库)
ALTER SYSTEM SET audit_sys_operations=TRUE SCOPE=SPFILE;
2.4 审计记录存储
- 当
AUDIT_TRAIL=OS/XML
时:记录到$ORACLE_HOME/rdbms/audit/
目录下的 .aud 文件 - 当
AUDIT_TRAIL=DB/DB,EXTENDED
时:仍写入操作系统文件(不写入 SYS.AUD$)
2.5 典型记录内容
Thu May 15 10:23:45 2025 +08:00
LENGTH: "144"
ACTION: "CONNECT"
DATABASE USER: "/"
PRIVILEGE: "SYSDBA"
CLIENT USER: "oracle"
CLIENT TERMINAL: "pts/1"
STATUS: "0"
DBID: "1234567890"
三 生产环境最佳实践组合
3.1 高安全级别配置
ALTER SYSTEM SET audit_trail='DB,EXTENDED' SCOPE=SPFILE;
ALTER SYSTEM SET audit_sys_operations=TRUE SCOPE=SPFILE;
ALTER SYSTEM SET audit_file_dest='/u01/app/oracle/admin/ORCL/adump' SCOPE=SPFILE;
3.2 配套维护措施
-- 创建专用审计表空间
CREATE TABLESPACE audit_ts DATAFILE '+DATA' SIZE 2G AUTOEXTEND ON;
-- 迁移审计表
ALTER TABLE sys.aud$ MOVE TABLESPACE audit_ts;
ALTER INDEX sys.I_AUD1 REBUILD TABLESPACE audit_ts;
-- 设置自动清理任务
BEGIN
DBMS_AUDIT_MGMT.INIT_CLEANUP(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
default_cleanup_interval => 24 /*小时*/);
DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
last_archive_time => SYSTIMESTAMP-30);
END;
/
四 参数间关系与注意事项
-
依赖关系:
AUDIT_SYS_OPERATIONS
的存储位置由AUDIT_TRAIL
决定- 当
AUDIT_TRAIL=NONE
时,AUDIT_SYS_OPERATIONS
仍可独立工作
-
性能影响:
DB,EXTENDED
会记录完整SQL文本,对性能影响较大- 审计 SYSDBA 操作可能产生大量日志
-
存储管理:
- 使用
DB/DB,EXTENDED
时需定期维护 SYS.AUD$ 表 - 建议每月至少清理一次30天前的审计记录
- 使用
-
安全检查脚本:
-- 检查关键审计配置
SELECT
(SELECT value FROM v$parameter WHERE name = 'audit_trail') AS audit_trail,
(SELECT value FROM v$parameter WHERE name = 'audit_sys_operations') AS audit_sys_ops,
(SELECT COUNT(*) FROM dba_audit_trail WHERE timestamp > SYSDATE-1) AS audit_recs_24h,
(SELECT bytes/1024/1024 FROM dba_segments WHERE owner='SYS' AND segment_name='AUD$') AS aud_table_size_mb
FROM dual;
通过合理配置这两个核心审计参数,可以实现对Oracle数据库活动的全面监控,特别是对特权操作的跟踪,是满足安全合规要求的基础配置。