背景
鉴于目前MySQL审计需求不断深入扩张,以提高数据资产的安全,使得数据库愈来愈规范化管理,数据库实现审计功能成为必要安全环节。MySQL社区版是不带审计插件的(Audit Plugin)
MariaDB开发的MariaDB审计插件,虽然具有一些仅适用于MariaDB的独特功能,但它也可以与MySQL一起使用。MariaDB审计插件所生成的审计日志记录内容包括:用户名和主机、执行了哪些查询、访问了哪些表以及更改了服务器变量等详情信息
实现步骤
1、获取MariaDB的审计插件 - server_audit.so
下载MariaDB Server安装包
##下载地址:https://mariadb.org/download/?t=mariadb&p=mariadb&r=10.3.17&os=Linux&cpu=x86_64&i=systemd&m=bkns
##本地解压后,在解压目录下找到审计插件`server_audit.so`
2、将审计插件 server_audit.so复制到MySQL的plugin目录下,并授权
cp server_audit.so /usr/lib64/mysql/plugin/
cd /usr/lib64/mysql/plugin
chown -R mysql:mysql server_audit.so
chmod 755 server_audit.so
3、进入MySQL客户端,安装插件
安装命令
INSTALL PLUGIN server_audit SONAME 'server_audit.so';
4、配置说明
当安装完审计插件之后,MySQL中将有一些新的全局变量出现。这些变量就是用于配置审计日志的,例如配置审计日志的位置、日志大小、记录的信息格式等。
查看相关变量
show variables like '%server_audit%';
5、开启审计功能
mysql> SET GLOBAL server_audit_logging=ON;
(可更改记录信息,可不用)
##指定记录内容‘connect,query’,记录用户的连接和查询语句
SET global server_audit_events='connect,query';
##重命名审计日志
mysql> set global server_audit_file_path='mysql_3306_audit.log';
6、审计日志结果
日志的文件在MySQL的data目录下,里面的内容特别多,可以使用tail命令监控,可用grep、sed、awk去查看自己想要的内容
日志的文件名可有自己定,修改在“重命名审计日志”,默认的文件名server_audit.log
head /var/lib/mysql/server_audit.log
Docker容器实现步骤
1、上传server_audit.so到容器
先上传至服务器,给755权限
chmod +755 server_audit.so
复制到容器
docker ps |grep mysql
docker cp server_audit.so a5ad0923ec2c:/usr/lib/mysql/plugin/
去容器中查看是否传入
2、进入MySQL客户端,安装插件
安装命令
INSTALL PLUGIN server_audit SONAME 'server_audit.so';
查看参数
show variables like '%server_audit%';
3、开启审计功能
mysql> SET GLOBAL server_audit_logging=ON;
4、查看审计日志结果
日志的文件在MySQL的data目录下,容器的目录是/var/lib/mysql/,可在服务器的映射目录中查看,默认的文件名server_audit.log