mysql如何配置数据库审计插件_mysql audit_log安全合规

2次阅读

mysql 8.0+社区版默认不支持oracle官方audit_log插件,需改用mariadb的server_audit插件;其支持灵活事件过滤、用户排除和文件输出,配置更实用且开箱即用。

mysql如何配置数据库审计插件_mysql audit_log安全合规

MySQL 8.0+ 如何启用 audit_log 插件

MySQL 自带的 audit_log 插件(由 Oracle 提供)仅在企业版中默认可用,社区版需手动安装且依赖特定编译版本。官方二进制包的社区版通常不包含该插件文件,直接执行 INSTALL PLUGIN audit_log SONAME 'audit_log.so' 会报错 Plugin 'audit_log' is not loaded

  • 社区版用户实际能用的是 MariaDB 的 server_audit 插件(兼容 MySQL 协议),或 Percona Server 的 audit_log 实现
  • 若坚持用 Oracle 官方插件,必须确认你的 MySQL 是企业版,或从官网下载含插件的 tar.gz 包(非 yum/apt 安装源)
  • 插件文件路径一般为 lib/plugin/audit_log.solinux)或 lib/plugin/audit_log.dllwindows),加载前先用 select PLUGIN_LIBRARY FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'audit_log'; 检查是否已注册

audit_log 能记录什么、不能记录什么

它只记录连接建立、断开、查询语句执行(QUERY 类型事件),但不记录查询结果、不解析 SQL 内容、不审计 DML 修改的数据行。比如 UPDATE users SET name='x' WHERE id=1 会被记下,但不会记录旧值/新值;SELECT * FROM salaries 会被记,但返回了哪些行完全不体现。

  • 默认只记录 CONNECTQUERYQUIT 三类事件,需通过 audit_log_events 变量追加,如设为 'CONNECT,QUERY,table,QUERY_DCL' 才能捕获 GRANT/REVOKE
  • 不支持按用户、数据库、IP 过滤日志,所有匹配事件全量输出,日志体积增长快,容易撑爆磁盘
  • 日志格式固定为 jsonxml,无法自定义字段(比如加 trace_id、应用名),解析依赖外部工具

audit_log_output=file 时的关键配置陷阱

写入文件最常用,但几个参数稍不注意就会导致日志“消失”或“卡死”:

  • audit_log_file 必须是 MySQL 进程有写权限的路径,且目录存在;若设为 /var/log/mysql/audit.log,但 /var/log/mysql 不存在或属主不是 mysql 用户,插件加载成功但日志完全不写入
  • audit_log_buffer_size 默认 1MB,高并发下缓冲区满会导致阻塞连接(不是丢日志!),现象是客户端 hang 住几秒后才返回,务必根据 QPS 调大(如 4–8MB)
  • audit_log_policy 设为 ALL 会记录所有事件(含内部系统查询),极易打爆 IO;生产环境建议用 LOGINS(只记连接)或 QUERIES(只记查询),避免全量
  • 文件轮转靠外部 logrotate,MySQL 不自动切分;若用 audit_log_rotate_on_size,必须配合 audit_log_rotations,否则旧文件不清理

替代方案:用 mysql.server_audit 更现实

MariaDB 的 server_audit 插件可直接用于 MySQL 5.7+/8.0(经验证),社区版开箱即用,配置更灵活:

  • 支持 server_audit_logging=ON + server_audit_output_type=file 快速启用
  • 可通过 server_audit_events 精确控制类型(如 connect,query,table
  • 支持 server_audit_excl_users 排除监控账号(如 monitorhealth_check),减少噪音
  • 日志行尾带时间戳和线程 ID,比 Oracle 版本更容易做实时流式分析

审计本身不解决权限滥用,只提供事后追溯依据。真正卡住风险的,是 GRANT 权限的最小化、定期回收,以及应用连接池复用账号带来的操作归属模糊——这些,日志里都看不出是谁点的那条 SQL。

text=ZqhQzanResources