ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL数据库审计(server_audit)

2022-02-18 15:03:36  阅读:395  来源: 互联网

标签:audit 插件 plugin mysql server MySQL 日志


需求:客户要求mysql数据库需要记录数据库‘增删改’操作日志,作为数据库审计使用。

方案:使用MariaDB的server_audit插件来实审计功能。

环境:1、MariaDB,版本:10.3.32,主要是用来获取server_audit.so插件。

          2、MySQL,版本:5.7.19,使用pxc搭建在k8s集群中。

 

实现过程:

1、安装MariaDB。

 yum install MariaDB-server

 

2、查找插件

find / -name server_audit.so

 

3、复制插件到k8s集群服务器中,并复制到pxc的主节点pod中(传统部署的mysql跳过这一步)。

kubectl cp server_audit.so pxc-cluster-0:/ 

 

4、进入pod,将server_audit.so插件移动至mysql的plugin目录中并添加权限。

     4.1、进入pxc-cluster-0的pod中(传统部署mysql跳过这一步)。

kubectl exec -it pxc-cluster-0 bash

     4.2、登录mysql,查询plugin目录地址。

mysql -uroot -p******
mysql> show global variables like 'plugin_dir';

     4.3、在pod中,将server_audit.so移动到plugin目录下并修改权限

mv server_audit.so /usr/lib/mysql/plugin/
chmod 777 /usr/lib/mysql/plugin/server_audit.so

 

5、在数据库中执行命令安装插件。

mysql> install plugin server_audit soname 'server_audit.so';

 

6、查看插件当前信息

mysql> show variables like "server_audit%";

     部分配置参数说明:

server_audit_events :设置定记录事件的类型,可以用逗号分隔的多个值如: set global server_audit_events='CONNCET,QUERY';  更多参数值见管网。
server_audit_excl_users :设置不记录用户,但connect信息不受该配置影响。
server_audit_file_path : 记录日志文件名称,可以指定目录,默认存储在数据目录中。
server_audit_file_rotate_now OFF : 手动切割日志,将该值设置为"on"时,日志将被切割,切割完成后,该值自动设置回"OFF"。
server_audit_file_rotate_size : 设置日志文件大小,单位为B,1073741824为1G。 
server_audit_file_rotations : 设置日志文件数量,如果为0,将不会切割文件。
server_audit_incl_users : 设置记录用户,但connect信息不受该配置影响,优先级高于server_audit_excl_users。
server_audit_logging : 插件开关。

     参数详细信息见管网:https://mariadb.com/kb/en/mariadb-audit-plugin-options-and-system-variables/

 

7、命令开启日志记录(重启失效)。

mysql> set global  server_audit_logging=on;

 

8、添加配置文件配置(永久生效,根据个人需求进行配置)。

server_audit_logging = ON        #启动开启日志记录
server_audit = FORCE_PLUS_PERMANENT    #防止插件被卸载
server_audit_file_path = server_audit.log     #设置记录日志文件名称为server_audit.log
server_audit_file_rotate_size = 1073741824 #设置单个日志文件大小最大为1G
server_audit_file_rotations = 15     #设置日志文件保留个数最多为15个
server_audit_events = 'QUERY_DML_NO_SELECT'    #设置记录时间为QUERY_DML_NO_SELECT

 

9、部署完成

     传统部署的mysql的日志审计,将其他2个节点数据库从4-8步骤全部配置好,有日志记录后就完成了。

     k8s部署的集群则在配置完成一个pod后,找到该pod的容器,将容器commit为新的镜像,最后更换k8s集群中mysql使用的镜像,重启即可。

 

标签:audit,插件,plugin,mysql,server,MySQL,日志
来源: https://www.cnblogs.com/NanZhiHan/p/15903288.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有