mysql审计之插件MariaDB Audit Plugin
精选
原创
©著作权归作者所有:来自51CTO博客作者哭泣的馒头的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、概述
审计插件是包含在 MariaDB 中的,所以需要先下载 MariaDB 然后将 server_audit.so 审计插件 copy 出来。
MariaDB 的 10.1 版本对应与 Oracle 的 MySQL 5.7 版本,这里是 MariaDB 官方下载地址 可以从链接里下载 MariaDB
我做实验使用的版本是8.0.25
MariaDB并不兼容mysql 5.7新版本与mysql 8.0以上版本
亚马逊RDS for MySQL的开发团队已经folk了MariaDB审计日志插件,并确保与MySQL 8 API兼容,以便在其RDS for MySQL数据库系列上使用。
最近,他们已经在GitHub上公开了这个项目的代码库。该插件的源代码在Github上公开发布,作为对MySQL和MariaDB用户社区的一项服务。
AWS不为该插件提供任何保证或支持。目标受众是具有C++技能的软件开发人员,他们能够独立编译和使用该插件。
这个插件不是官方的,与MySQL没有关系。
5.7以前的版本可以直接去mariadb官网下载,5.7以后的版本可以通过下面方式获取
只是插件获取方式不一样,加载和使用完全一样
二、具体配置
1、审计插件
1、下载地址
https://github.com/Vettabase/audit-plugin-for-mysql
可以根据需要选择5.7或者8.0分支
插件放在build/server_audit.so
2、安装
将server_audit.so上传到mysql的basedir下面的lib/plugin目录下
注意权限设置成755,注意用户和mysql服务启动用户一致
#导入插件到配置文件
vi my.cnf
plugin_load_add=server_audit
#或者直接命令导入插件
INSTALL PLUGIN server_audit SONAME 'server_audit.so';
3、配置完就会将操作信息写入datadir目录下的server_audit.log
2、常用参数
查看支持的插件参数
SHOW GLOBAL VARIABLES LIKE 'server_audit%';
+-------------------------------+-----------------------+
| Variable_name | Value |
+-------------------------------+-----------------------+
| server_audit_events | CONNECT,QUERY,TABLE |
| server_audit_excl_users | |
| server_audit_file_path | server_audit.log |
| server_audit_file_rotate_now | OFF |
| server_audit_file_rotate_size | 1000000 |
| server_audit_file_rotations | 9 |
| server_audit_incl_users | |
| server_audit_logging | ON |
| server_audit_mode | 0 |
| server_audit_output_type | file |
| server_audit_query_log_limit | 1024 |
| server_audit_syslog_facility | LOG_USER |
| server_audit_syslog_ident | mysql-server_auditing |
| server_audit_syslog_info | |
| server_audit_syslog_priority | LOG_INFO |
+-------------------------------+-----------------------+
具体文档可以查看mariadb官网
https://mariadb.com/kb/en/mariadb-audit-plugin/
2.1 server_audit_events
该参数设置需要保存哪些类型的 SQL 语句,可以保存的类型有:
CONNECT, QUERY, TABLE, QUERY_DDL, QUERY_DML, QUERY_DCL, QUERY_DML_NO_SELECT
如果没有设置该参数,将记录所有类型的 SQL 语句。
2.2 server_audit_excl_users
用户列表,设置后表示该列表的用户行为将不会被记录,相当于一个黑名单。
2.3 server_audit_output_type
指定日志输出类型,可为 SYSLOG 或 FILE,默认和推荐使用的模式都是 FILE 模式。
2.4 server_audit_file_path
当 server_audit_output_type=file 时,通过该参数可以设置日志存放目录,默认为 server_audit.log 表示在数据目录。
2.5 server_audit_file_rotate_now
2.6 server_audit_file_rotate_size
2.7 server_audit_file_rotations
2.8 server_audit_incl_users
用户列表,设置后表示哪些用户的操作需要被记录,优先级高于 server_audit_excl_users 参数列表。
2.9 server_audit_loc_info
2.10 server_audit_logging
默认为 OFF,设置为 ON 表示打开审计日志记录。
2.11 server_audit_mode
2.12 server_audit_query_log_limit
2.13 server_audit_syslog_facility
SYSLOG-mode 变量,设置一些 “facility”。
2.14 server_audit_syslog_ident
2.15 server_audit_syslog_info
2.16 server_audit_syslog_priority
SYSLOG-mode 变量,为 syslog 定义日志记录的优先级。
3、卸载插件
UNINSTALL PLUGIN 'server_audit';
如果是写到配置文件的,将相关配置删除就好
4、实验
1、配置参数
plugin_load_add=server_audit
server_audit_logging=on
server_audit_events=connect,query
server_audit_file_path=/data/mysql/mysql_audit_log
server_audit_file_rotate_size=5G
server_audit_file_rotations=10
server_audit_file_rotate_now=on
2、试验记录
第一次启动,从库连接信息会记录到主库文件server_audit.log
主从复制数据,从库不会记录
server_audit.log删除不会自动创建,可以set global server_audit_logging=off/on,重新生成
依旧可以cat /dev/null > server_audit.log 清理
日志文件有开关,可以关闭或打开
可以单独设计日志记录SQL类型