咨询Db2层级审计配置步骤,实现数据库用户访问行为全追踪
Db2 数据库层级审计配置实操步骤
完全可以覆盖你需要的三类核心采集目标:操作的用户身份、毫秒级精确时间戳、完整操作细节(执行SQL、访问的表、关联Schema),所有操作均使用Db2原生能力实现,不需要额外插件。
前置要求
执行所有命令的账号需要具备SECADM 或 SYSADM 权限,操作前确认数据库版本为 10.5 及以上(更低版本无内置全维度审计采集能力)。
第一步:配置对应审计采集规则
根据需求开启对应的审计事件类别,确保采集的信息维度完整:
-- 记录用户身份校验、连接接入信息 AUDIT VALIDATE; -- 记录操作的权限校验过程,绑定操作与用户身份的关联 AUDIT CHECKING; -- 记录对象变更、SQL解析过程中关联的Schema、表元数据 AUDIT OBJMAINT; -- 核心采集项:记录每条操作的精确时间、完整执行SQL、访问的全部对象 AUDIT CONTEXT; -- 可选:记录管理员级别的操作,覆盖安全边界 AUDIT SYSADMIN; AUDIT SECURITYMAINT;
注意:如果关闭CONTEXT类采集,将无法获取执行的SQL全文和关联的Schema、表信息,这是匹配需求的必选配置项
配置采集范围
默认规则会对所有数据库用户的操作进行采集,如果只需要采集特定业务账号,可执行:
-- 替换为需要审计的具体用户列表 AUDIT USER 业务应用账号, 报表查询账号;
如果需要全量审计所有用户,执行:AUDIT ALL USERS;
第二步:调整参数降低性能影响
为了避免审计写入对业务库的性能损耗,调整数据库级的审计缓存大小,减少同步刷盘的IO次数:
-- 将<你的数据库名>替换为实际需要开启审计的库名 UPDATE DB CFG FOR <你的数据库名> USING AUDIT_BUF_SZ 2000;
参数说明:2000的单位为4KB内存页,对应总缓存大小8MB,可支撑中等业务规模下的审计写入吞吐,配置后动态生效,不需要重启数据库实例。
审计记录查询方法
所有采集到的审计记录可直接通过数据库内置系统视图查询,不需要解析服务器本地的文本日志,匹配需求的核心字段如下:
- 用户身份:
SESSION_AUTH_ID字段,对应操作发起的数据库账号 - 精确时间戳:
EVENT_TIMESTAMP字段,精度可达毫秒 - 操作内容:
TEXT_DATA存储执行的完整SQL语句,SCHEMANAME记录关联的Schema,OBJECTNAME记录SQL访问的具体表、视图等对象
查询示例
统计最近1小时内所有用户的表查询操作:
SELECT SESSION_AUTH_ID AS 操作用户, EVENT_TIMESTAMP AS 操作时间戳, TEXT_DATA AS 执行的SQL语句, SCHEMANAME AS 关联Schema, OBJECTNAME AS 访问的数据对象 FROM SYSCAT.AUDITUSAGE WHERE EVENT_TIMESTAMP > CURRENT TIMESTAMP - 1 HOUR;
落地注意事项
- 不要依赖普通SQL事件监视器做审计,这类采集方式无法建立操作和身份的完整溯源链,也无法自动关联SQL解析过程中涉及的所有Schema、表对象
- 审计配置生效后,默认会采集所有在数据库上执行的SQL,包含预编译语句的参数值,无需额外开启参数捕获
- 定期配置审计日志清理策略,避免审计表占用过多表空间,可先将存量审计日志导出到备份存储后再清理旧记录
内容的提问来源于stack exchange,提问作者Geraldine86
相关产品推荐
相关产品推荐

