数据加密和访问控制可以大幅降低安全风险,但对于具备权限的用户,仍然需要记录其操作,以防止用户登录信息泄露,或者访问权限被滥用。审计功能可以加强企业对数据安全、合规等方面的要求,是跟踪用户行为最主要的工具。
审计开启
通过配置项 audit_trail 开启审计功能,执行完后立即生效。
NONE:关闭审计。
OS:审计记录写本地文件。
DB:审计记录写内部表。
DB,EXTENDED:审计记录写内部表且记录包含执行的 SQL 语句。
管理员用户拥有最高权限,能执行很多操作,所以针对管理员有单独配置审计。租户配置项 audit_sys_operations 决定是否对管理员的操作进行审计记录。
设置审计规则
通过内置的审计管理用户 ORAAUDITOR 可以配置审计规则,包括:
语句审计:对特定的操作进行审计,不指定具体对象,可以指定对具体用户或对所有用户生效。
对象审计:对特定的对象上执行的特定操作进行审计,可以指定对具体用户或对所有用户生效。
审计规则是通过 DDL 语句 audit/noaudit 语句来配置,审计规则也是一种 schema 对象。
审计流程
审计检查的时机位于一条用户 SQL 执行完毕后准备回包之前。审计检查的流程如下:
检查对当前用户是否进行审计,根据租户、用户名、配置项综合判断。
解析 SQL 语句中可被审计的操作,一条 SQL 语句可以包含多个不同的操作,例如
insert into t1 select * from t2, t3中包含了(insert, t1), (select, t2), (select t3)3 个操作。对每个操作单独判断是否命中任意一条审计规则。
每个命中规则的操作单独产生一条审计记录。根据配置项,审计记录可以记录在内部表或文件中。
审计记录
审计文件会放在 audit 目录中,observer_${pid}_${timestamp}.aud 文件名形式存储。写文件使用了 ObLogger 提供的接口,其功能和其他系统日志相同,当文件大小达到 256M 时,会将其进行切分。
审计记录写入内部表有如下特性:
AUDIT_TRAIL 取值 DB 时不记录用户 SQL,取值 DB,EXTENDED 会记录用户 SQL。
审计记录的插入独立于用户事务,即使用户事务回滚,审计记录依然保留。
审计写表失败时,会尝试审计写文件方式保存审计记录。




