首批通过分布式安全可靠测评,为关键业务系统打造
设置和查看审计规则
更新时间:2026-07-16 19:52:04
开启安全审计后,需要设置具体的安全审计规则来对用户的操作进行审计。
设置审计规则
使用 ORAAUDITOR 用户登录到 Oracle 租户。通过内置的审计管理用户 ORAAUDITOR 可以配置审计规则,包括:
- 语句审计:对特定的操作进行审计,不指定具体对象,可以指定对具体用户或对所有用户生效。
- 对象审计:对特定的对象上执行的特定操作进行审计,可以指定对具体用户或对所有用户生效。
审计规则是通过 DDL 语句 audit/noaudit 语句来配置,审计规则也是一种 schema 对象。
有关设置审计规则的详细信息,请参见 AUDIT。
例如,对用户 user1 的表 tbl1 的所有 INSERT、UPDATE 和 DELETE 操作进行审计:
obclient> AUDIT INSERT,UPDATE,DELETE ON user1.tbl1;
查看审计规则
设置审计规则后,您可以通过一系列 Oracle 兼容的数据字典视图查看审计规则的信息。
| 字典视图 | 功能说明 |
|---|---|
| ALL_DEF_AUDIT_OPTS | 记录任何新创建对象的默认审计规则。每列的取值如下:
|
| DBA_STMT_AUDIT_OPTS | 记录语句级别审计的详细配置。 |
| DBA_OBJ_AUDIT_OPTS | 记录对象级别审计的详细配置。 |
查看 ALL_DEF_AUDIT_OPTS 中的审计规则。示例如下:
obclient> SELECT * FROM SYS.ALL_DEF_AUDIT_OPTS;
设置审计日志加密(可选)
说明
该功能从 V4.4.2 BP2 版本开始引入,仅适用于将审计记录写入磁盘文件的场景(audit_trail 为 LOG)。
Oracle 租户支持对审计日志进行加密存储。在启用加密后,归档产生的日志文件可按密钥标识落盘,便于与压缩、轮转、清理等策略组合使用。可参考下文小节步骤按需顺次操作。
启用日志加密功能
通过配置项 audit_log_encryption 控制是否启用审计日志加密,取值包括:
NONE:不启用加密,为默认取值。AES:启用加密;算法为 AES-256-CBC 的流式加密(归档写入过程中对流加密)。
例如,为当前租户启用审计日志加密:
obclient> ALTER SYSTEM SET audit_log_encryption='AES';
配置项完整说明请参见文末相关文档。
日志归档与密码生成
通过调用以下函数实现日志归档与密码生成。须将函数直接作为 SELECT 的输出列调用(不能写在子查询中),不是 AUDIT/NOAUDIT 语法:
AUDIT_LOG_ENCRYPTION_PASSWORD_SET():无参数。用于触发归档当前正在写入的审计日志,并生成新的加密密钥;后续新生成的归档文件将使用新密钥加密。函数完整说明请参见文末相关文档。
注意
使用该函数需拥有 SUPER 权限。
示例如下:
obclient> SELECT AUDIT_LOG_ENCRYPTION_PASSWORD_SET() FROM DUAL;
注意
仅在 audit_log_encryption 配置项开启且此步骤执行成功后,归档生成的审计日志文件才会被加密存储。
日志密码获取
通过调用以下函数获取日志文件的加密密码:
AUDIT_LOG_ENCRYPTION_PASSWORD_GET(pwd_id):参数pwd_id为 Int 类型,表示日志文件的时间戳后缀。用于根据日志文件的时间戳后缀返回对应归档日志文件的加密密码,如果不传入参数,默认获取最新的pwd_id对应的密码。函数完整说明请参见文末相关文档。
说明
使用该函数需拥有 SUPER 权限。
获取当前最新归档日志的加密密码:
obclient> SELECT AUDIT_LOG_ENCRYPTION_PASSWORD_GET() FROM DUAL;
获取指定日志的加密密码:
obclient> SELECT AUDIT_LOG_ENCRYPTION_PASSWORD_GET('1682089200') FROM DUAL;
日志解密
审计日志加密使用 openssl 提供的接口,用 openssl 对日志文件进行加解密需要指定 key 和 iv,或者指定 password,命令示例如下:
# -d 表示解密
# -aes-256-cbc 表示使用 AES-256-CBC 算法
# -pass pass:password 表示使用 password 作为密码
# -md sha256 表示使用 SHA-256 算法
# -in encrypted_log_file 表示输入加密的日志文件
# -out decrypted_file 表示输出解密的日志文件
obclient > openssl enc -d -aes-256-cbc -pass pass:password -md sha256 -in encrypted_log_file -out decrypted_file
附录:日志文件名格式说明
归档后的审计日志文件名在时间戳后缀基础上,按是否启用压缩、加密追加约定片段(pwd_id 为密钥标识,与视图及函数参数对应):
| 场景 | 文件名格式 |
|---|---|
| 无压缩、无加密 | audit.log.timestamp |
| 仅压缩 | audit.log.timestamp.zst |
| 仅加密 | audit.log.timestamp.enc.pwd_id |
| 压缩且加密 | audit.log.timestamp.zst.enc.pwd_id |
其中 timestamp 为归档文件名中的时间戳后缀;若同时开启压缩,压缩扩展名以配置及实现为准(当前压缩算法为 ZSTD 时对应 .zst)。
相关文档
有关安全审计的更多相关操作,参见:
- 开启安全审计
- 查看审计记录
- 设置日志加密:audit_log_encryption
- 日志归档与解密设置函数:AUDIT_LOG_ENCRYPTION_PASSWORD_SET
- 日志归档与解密查询函数:AUDIT_LOG_ENCRYPTION_PASSWORD_GET
- 审计函数概述