首页/安全/等保与合规速查/MySQL/MariaDB 审计:插件与替代方案

MySQL/MariaDB 审计:插件与替代方案

数据库审计关注敏感表访问与高危语句:可用 MariaDB Audit Plugin、企业版审计插件或旁路审计设备;general_log 性能影响大,仅适合临时排查。

等保与合规速查安全更新于 2026-10-13

数据库审计要解决什么

数据库审计关注两件事:谁在什么时候访问了敏感表,以及是否执行了高危语句。MySQL 与 MariaDB 本身没有开箱即用的完整审计能力:可直接启用 general_log,但它是为排错设计的,写入量大、性能影响明显;生产环境通常改用 MariaDB Audit Plugin、数据库厂商的企业版审计插件,或旁路部署数据库审计设备。

基本信息

适用平台MySQL 8.0、MariaDB 10.x(Linux 服务器)
常用方案MariaDB Audit Plugin、厂商企业版审计插件、旁路审计设备
不推荐general_log 长期开启,I/O 与磁盘压力大
日志内容含完整 SQL 文本,可能包含个人信息
合规依据网络安全法第二十一条的日志留存要求、等保审计要求

典型使用场景

  • 等保整改:补齐数据库层的审计与留存能力
  • 内部风险排查:追踪批量导出与全表扫描行为
  • 账号变更审计:记录授权与账号重建操作
  • 数据泄露溯源:用 SQL 文本还原访问路径
  • 外包运维管控:第三方 DBA 操作留痕

MariaDB Audit Plugin 示例

MariaDB Audit Plugin 示例
INSTALL SONAME 'server_audit';            -- 加载审计插件
-- 旧版语法等价:INSTALL PLUGIN server_audit SONAME 'server_audit.so';
SET GLOBAL server_audit_logging = ON;      -- 开启审计
SET GLOBAL server_audit_events = 'CONNECT,QUERY_DDL,QUERY_DML';
SET GLOBAL server_audit_file_rotations = 30;   -- 保留 30 份轮转文件
SET GLOBAL server_audit_file_rotate_size = 1073741824;  -- 单个文件 1 GiB
-- 关注:批量导出、全表扫描、权限与账号变更
-- 日志含 SQL 文本,注意脱敏与访问控制

审计对象与关注点

审计对象关注行为
连接事件非常规来源 IP、非工作时间登录、失败重试
DDL 语句建删表、加索引、权限相关变更
DML 语句大批量导出、无条件的全表更新或删除
账号与授权新建账号、提权、授权收回

方案取舍

  • MariaDB Audit Plugin:随 MariaDB 分发,可按事件类型筛选,部署成本低
  • 厂商企业版审计插件:细粒度与筛选能力更强,但需要商业授权
  • 旁路审计设备:不占用数据库自身资源,适合集中管控多套实例
  • 云数据库审计:由云厂商托管,需先确认字段口径与导出留存能力
  • 触发器或代理层自建记录:侵入业务链路,维护成本高,一般只在很小范围使用
审计日志本身可能包含敏感数据(手机号、身份证号)。应对日志文件加密与访问审批,避免审计数据成为新的泄露面。
审计插件与慢查询日志不是一回事:慢查询日志用于性能排查,不记录来源账号与语句上下文,不能替代审计日志用于责任界定。

易错点

  • 用 general_log 长期开启:I/O 与磁盘压力大,且缺少结构化筛选能力
  • 审计日志无权限保护:DBA 可读可删的日志不宜直接当作审计证据
  • 只记语句不记来源:缺少客户端 IP 与账号时,溯源时无法定位责任人
  • 轮转份数设置过小:覆盖不到六个月留存要求,检查时无法提供历史记录

数据来源与参考

  • MariaDB Audit Plugin 文档
  • MySQL 8.0 Reference Manual(审计相关章节)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌