MySQL审计插件介绍

2023-03-15 00:00:00 版本 记录 日志 插件 审计

前言:

数据库审计功能主要将用户对数据库的各类操作行为记录审计日志,以便日后进行跟踪、查询、分析,以实现对用户操作的监控和审计。审计是一项非常重要的工作,也是企业数据安全体系的重要组成部分,等保评测中也要求有审计日志。对于 DBA 而言,数据库审计也极其重要,特别是发生人为事故后,审计日志便于我们进行责任追溯,问题查找。

1. MySQL 社区版审计日志现状

如果你用的是 MySQL 社区版的话,你会发现 MySQL 官方并没有提供严格意义上的审计日志。虽然 MySQL 提供有 binlog 及 general log ,这二者虽然具备部分审计功能,但一般不当做审计日志来看待。

binlog 即二进制日志文件,它记录了数据库所有执行的 DDL 和 DML 语句(除了数据查询语句select、show等),以事件形式记录并保存在二进制文件中。虽然能查到具体 SQL 的执行记录,但其作用主要是主从复制,并不能当做是审计日志。

general log 是全量日志,开启后将会记录所有到达 MySQL Server 的SQL语句。一般不会开启此日志,因为 log 的量会非常庞大,对数据库性能有影响,并且 general log 会记录大量无用信息,当做审计日志的话,后期筛选有难度。

那么 MySQL 社区版应该怎样进行审计呢?查阅资料我们发现通过安装审计插件可实现 MySQL 的审计功能,常见的审计插件有 MariaDB Audit Plugin、Percona Audit Log Plugin、McAfee MySQL Audit Plugin 三种,MariaDB 自带的审计插件比较适合用于 MySQL 社区版,下面我们来学习下如何使用审计插件来实现审计功能。

2. 审计插件使用教程

首先我们要做的是从 MariaDB 安装包中拷贝出来审计插件,需要注意的是操作系统要选择一致,比如说你的 MySQL 安装在 CentOS 系统中,那就要下载 CentOS 系统的 MariaDB 安装包并从中拷贝,Windows 系统则需要下载对应系统的审计插件。

MariaDB 审计插件的名称是 server_audit.so(Windows系统下是 server_audit.dll ),要注意的是,审计插件一直在更新,不同版本的审计插件功能也不同,推荐使用 >= 1.4.4 版本的插件,新版本的插件可以排除掉 select 语句。不同版本的审计插件支持的审计事件如下图:



审计插件版本与 MariaDB 版本对应图如下:



MySQL 5.7 一般可对应 MariaDB 10.2 版本,我们以 CentOS 系统 MySQL 5.7 版本为例来安装下审计插件。我这里选择下载的是 MariaDB 10.2.38 版本的安装包(审计插件版本 1.4.13),下载地址:https://downloads.mariadb.com/MariaDB/mariadb-10.2.38/bintar-linux-x86_64/mariadb-10.2.38-linux-x86_64.tar.gz

下载完成之后,解压安装包,然后到 mariadb-10.2.38-linux-x86_64/lib/plugin/ 路径下复制出来 server_audit.so 文件,将其拷贝到 MySQL 服务器上,具体步骤如下:

# 查看 MySQL 插件存放路径
mysql> show variables like 'plugin_dir';
+---------------+------------------------------+
| Variable_name | Value                        |
+---------------+------------------------------+
| plugin_dir    | /usr/local/mysql/lib/plugin/ |
+---------------+------------------------------+

# 将审计插件 server_audit.so 存放到该路径下
[root@localhost plugin]# ls -lh server_audit.so 
-rw-r--r--. 1 root root 191K May  4  2021 server_audit.so

# 更改插件属主及权限
[root@localhost plugin]# chown mysql:mysql server_audit.so
[root@localhost plugin]# chmod 755 server_audit.so
[root@localhost plugin]# ls -lh server_audit.so 
-rwxr-xr-x. 1 mysql mysql 191K May  4  2021 server_audit.so

相关文章