MySQL入门教程(22)如何开启MySQL审计日志?MySQL审计日志配置教程
一、MySQL审计插件介绍
MySQL的审计功能由mysql-audit插件实现(同时支持MySQL、Percona、Mariadb),该插件是McAfee所开源,项目地址https://github.com/mcafee/mysql-audit。使用审计插件后用户对数据库进行的每一个操作都会被详细记录,方便事件追溯。由于开启审计功能会降低一定的性能,这个需要自行取舍是要安全还是要性能。除了使用插件之外还可以使用ELK或者MySQL自带的init-connect结合binlog进行审计
二、mysql-audit安装与配置
1、通过https://github.com/mcafee/mysql-audit下载mysql-audit 源码包或者下载二进制安装包(https://bintray.com/mcafee/mysql-audit-plugin/release),下载的时候需要注意版本是否支持当前的MySQL版本
2、将安装包解压,获取libaudit_plugin.so插件文件和offset-extract.sh脚本,然后将.so插件上传到MySQL插件目录,如/usr/local/mysql/lib/plugin。如果不确定该路径的话可以登陆MySQL进行查询
mysql > show global variables like '%plugin_dir%' cp lib/libaudit_plugin.so /usr/local/mysql/lib/mysql/plugin/
3、审计插件出现的偏移量问题
插件会通过计算MySQL的版本获取一个偏移量来进行校验,如果使用的是已经通过了认证的MySQL版本,则不需要进行任何操作都可以安装运行AUDIT插件,无需再次校验。而如果使用到的MySQL版本是未经验证的就会无法安装插件(对于特定版本,即便MySQL发行版不同,但是偏移量是相同的),并抛出Audit Plugin: Couldn't find proper THD offsets for: MYSQL_VERSION这样的错误。对于这种情况就需要先行计算一个偏移量,而计算方式就是使用offset-extract.sh脚本,下载地址https ://raw.github.com/mcafee/mysql-audit/master/offset-extract/offset-extract.sh
chmod +x offset-extract.sh ./offset-extract.sh /usr/local/mysql/bin/mysqld #运行后会输出需要使用的偏移量,假设为{"5.1.41-community","6ccf4357688d8e46bfcb4443966970b0", **6200, 6264, 3672, 3944, 88, 2048**}
如果在执行offset-extract.sh脚本的时候会出现ERROR: gdb not found. Make sure gdb is installed and on the path的错误,需要先行安装gdb环境
yum install gdb -y
4、安装插件
· 配置文件需要增加相关内容,避免重启后插件失效
vi /etc/my.cnf [mysqld] ... plugin-load=AUDIT=libaudit_plugin.so #加载审计插件 audit_json_log_file = /data/mysql/log/audit.log #日志存放路径 audit_json_file = ON #设置为ON表示记录日志,开启审计 #audit_offsets=6200, 6264, 3672, 3944, 88, 2048 #偏移量,如果没有报错的话可以忽略 audit_uninstall_plugin = OFF #是否允许卸载插件,如果禁用则无法通过UNINSTALL命令卸载AUDIT插件,可以提升安全性 audit_sess_connect_attrs = ON #是否记录客户端连接属性到日志中,比如"connect_attrs":{"_os":"Linux","_client_name":"libmysql","_pid":"11450","_client_version":"5.6.20-68.0","_platform":"x86_64","program_name":"mysql"} audit_socket_creds = ON #是否记录客户端进程信息,如PID、应用名称和用户名 # audit_record_cmds="insert,delete,update,create,drop,alter" #需要审计的命令,不写的话所有记录都审计 # audit_whitelist_users #不需要进行审计的白名单用户 # audit_whitelist_cmds #不需要进行审计的白名单命令 # audit_json_file_flush #执行set global audit_json_file_flush=on将刷新日志,可用于轮换日志 # audit_validate_checksum #是否进行二进制偏移量校验 # audit_checksum #当配置了audit_offsets时使用,如果校验和与计算的不匹配插件将不会加载,当手动设置偏移量并且希望避免升级mysqld后未经验证使用手动偏移量时会有用 ...
· 命令行部分,在线调整部分参数
mysql > INSTALL PLUGIN AUDIT soname 'libaudit_plugin.so'; mysql > set global audit_json_file='ON'; mysql > set global audit_json_log_file='/data/mysql3311/log/mysql-audit.json'; mysql > set global audit_record_cmds='drop_db,drop_table,alter_table'; #仅审计DDL操作
5、检查插件是否安装成功
mysql > show plugins;
6、查看审计日志,清晰的展现了用户的操作记录
三、mysql-audit插件卸载方式
该插件安装好了以后默认是不能通过命令UNINSTALL的,需要在配置文件中增加一行
[mysqld] audit_uninstall_plugin=1
重启服务后登录数据库执行两次命令
mysql > uninstall plugin AUDIT;
成功卸载后记得删除配置文件中的行,否则后面服务启动会报错
[mysqld] #audit_uninstall_plugin=1
评论