
等保三级对 TiDB 审计日志的核心要求等保三级安全合规要求对数据库审计日志的覆盖范围、存储时长、防篡改能力有明确规范。具体到 TiDB需确保所有数据定义语言DDL、数据操纵语言DML及登录登出行为被记录且日志保存时间不少于 180 天。可通过查阅《信息安全技术 网络安全等级保护基本要求》中关于“安全审计”条款确认审计记录中须包含事件日期、时间、类型、主体身份、客体名称、成功或失败标识等要素。这段话基本划定了我们配置的底线不只是开启日志还要确保记录内容的完整性。我通常的做法是先拿合规文档列一个 checklist比如审计字段是否覆盖了“谁、什么时候、做了什么、结果如何”。如果发现缺少客户端 IP 或 SQL 原文就需要调整 TiDB 的审计参数。在 TiDB 集群中通过设置系统变量 tidb_enable_audit 为 ON 开启审计日志功能。同时需在配置文件中指定审计日志输出路径与文件名前缀例如 audit-log-path /data/tidb-audit 和 audit-log-filename audit。建议将日志存储于独立的高可用磁盘避免日志写满导致数据库异常。若需记录所有 SQL可设置 audit-log-mode 2但务必评估写入性能损耗。开启审计日志并配置基础参数在 TiDB 集群中通过设置系统变量tidb_enable_audit为ON开启审计日志功能。同时需在配置文件中指定审计日志输出路径与文件名前缀例如audit-log-path /data/tidb-audit和audit-log-filename audit。建议将日志存储于独立的高可用磁盘避免日志写满导致数据库异常。若需记录所有 SQL可设置audit-log-mode 2但务必评估写入性能损耗。这里有一个容易忽略的点audit-log-mode默认只记录 DDL 和登录登出如果等保要求记录全部 DML包括 SELECT就需要改成 mode 2。不过 mode 2 对写入 QPS 高的业务会有明显影响建议先在测试环境压测一下或者用audit-log-mode 1只记录 DDL 登录登出 DML 中的 INSERT/UPDATE/DELETE来折中。另外审计日志文件最好存放在与数据盘不同的挂载点避免日志写满导致 TiDB 节点磁盘 100% 而异常。验证审计日志是否按预期工作为了验证审计日志是否按要求生效可执行一条 INSERT 或 DELETE 语句然后到审计日志目录下查看最新生成的日志文件。使用grep命令过滤该语句的特征字符串确认日志中完整记录了执行时间、用户、客户端 IP、数据库名、表名及 SQL 原文。同时检查日志文件中是否包含操作结果如影响行数或错误码以确保满足等保三级对“审计记录完整性”的要求。我有一次发现日志里只有 SQL 文本但没有客户端 IP后来检查发现是 TiDB 的skip-grant-table参数影响了连接信息的收集。所以验证时不仅要看有无记录还要逐项核对合规清单里的字段。如果某个字段缺失可能需要升级 TiDB 版本有些旧版不记录客户端 IP或调整log-query相关设置。存储空间管理与防篡改保护审计日志的存储需特别注意空间与安全风险。若日志文件增长过快未及时轮转可能占满磁盘导致 TiDB 服务不可用。建议开启日志轮转设置audit-log-max-size和audit-log-max-backups参数并配置独立的日志分区。在安全方面必须对审计日志文件设置严格的权限控制只允许管理员读取并启用数字签名或加密存储如 LUKS以防止日志被非法篡改。轮转参数需要根据业务量和磁盘容量计算比如每天产生 5GB 日志保留 180 天就需要 900GB 空间加上备份数量最好预留 1TB 以上。我习惯用audit-log-max-size 512单位 MBaudit-log-max-backups 30再配合外部工具将旧日志归档到对象存储同时保证本地有 180 天的在线日志可供随时查询。常见配置遗漏与纠正一个常见误区是只开启审计但未保留原始 SQL 绑定变量值。等保三级要求审计记录能还原操作上下文因此需设置audit-log-record-plan true以捕获执行计划同时确保general-log未意外关闭。另外若使用 TiDB 的自动清理功能如tidb_audit_log_max_days务必与合规要求的 180 天核对避免因过早清理导致审计记录缺失。实际操作中我还遇到过因为tidb_enable_audit是动态变量但audit-log-path必须在配置文件中设置重启后才生效导致业务侧误以为已开启但实际日志没写。建议先在测试环境配好所有静态参数重启集群后再用 SET GLOBAL 打开开关然后立即用一条语句验证。关于审计日志的下一步判断配置完成后建议定期例如每周抽检一部分日志用脚本检查是否包含连续 180 天的记录。如果发现某天日志缺失优先检查磁盘空间和轮转策略。如果使用 TiDB 的tidb_audit_log_max_days自动清理注意该参数的单位是天设置tidb_audit_log_max_days 180即可。另外等保三级还要求审计记录不能随意删除或修改所以除了文件权限还可以考虑将日志实时同步到日志服务器或写入只读的文件系统。最后提醒一点如果审计日志中包含敏感数据如身份证号可能需要脱敏或加密存储这属于数据生命周期管理范畴需要结合具体业务场景和合规要求来确定。