娃哈哈好喝-真的!
技术够用就行,吃好喝好睡好!

mysql5.7安装审计插件 Audit Plugin

mysql5.7安装审计插件MariaDB Audit Plugin

centos版本:7.6.1810

mysql版本:5.7.28-log

插件下载地址

https://github.com/trellix-enterprise/mysql-audit

下载后解压,得到如下目录

[root@centos audit-plugin-mysql-5.7-1.1.13-1008]# pwd
/data/dl/audit-plugin-mysql-5.7-1.1.13-1008
[root@centos audit-plugin-mysql-5.7-1.1.13-1008]# ls
COPYING lib plugin-name.txt README.txt THIRDPARTY.txt utils
[root@centos audit-plugin-mysql-5.7-1.1.13-1008]#

查看mysql的plugin路径

[[email protected]][(none)]>show global variables like 'plugin_dir';
+---------------+-------------------------+
| Variable_name | Value                   |
+---------------+-------------------------+
| plugin_dir   | /data/mysql/lib/plugin/ |
+---------------+-------------------------+
1 row in set (0.01 sec)

[[email protected]][(none)]>

将刚才解压后lib目录下的libaudit_plugin.so文件复制到mysql的plugin目录

[root@centos lib]# pwd
/data/dl/audit-plugin-mysql-5.7-1.1.13-1008/lib
[root@centos lib]# ls
libaudit_plugin.so
[root@centos lib]# cp libaudit_plugin.so /data/mysql/lib/plugin/
[root@centos lib]# chmod 755 /data/mysql/lib/plugin/libaudit_plugin.so
[root@centos lib]# chown mysql:mysql /data/mysql/lib/plugin/libaudit_plugin.so

在线安装插件

[[email protected]][(none)]>install plugin audit soname 'libaudit_plugin.so';
Query OK, 0 rows affected (0.68 sec)
[[email protected]][(none)]>

查看是否安装成功

[[email protected]][(none)]>show global status like 'AUDIT_version';
+---------------+-------------+
| Variable_name | Value       |
+---------------+-------------+
| Audit_version | 1.1.13-1008 |
+---------------+-------------+
1 row in set (0.00 sec)

[[email protected]][(none)]>

如果要在线立即生效可以通过修改global变量的方式

# 修改文件保存路径
[[email protected]][(none)]> set global audit_json_log_file = '/data/mysql-audit-log/mysql-audit.json';
# 设置审计的语句类型
[[email protected]][(none)]> set global audit_record_cmds='insert,delete,update,create,drop,alter,grant,truncate';
# 关闭审计json日志
[[email protected]][(none)]> set global audit_json_file=off;
# 开启审计json日志
[[email protected]][(none)]> set global audit_json_file=on;

写入配置文件,重启生效

#加载审计模块
plugin-load=AUDIT=libaudit_plugin.so
#开启日志记录
audit_json_file=on
#记录时间的类型,多个类型逗号隔开
audit_record_cmds='insert,delete,update,create,drop,alter,grant,truncate'
#日志文件保存路径
audit_json_log_file=/data/mysql-audit-log/mysql-audit.json

参数说明

audit_json_log_file : json 日志文件名。如果启用了 audit_json_file 选项,则会将审计跟踪写入此文件。值可以是绝对路径或相对于 MySQL 数据目录。默认值:mysql-audit.json。
audit_json_file : json 日志文件 ON|OFF。
audit_json_file_sync: json 日志文件同步周期。如果此变量的值大于 0,则每次 audit_json_file_sync: 写入后,审计日志将同步到磁盘。默认值:0。
audit_json_file_flush: 调用set global audit_json_file_flush=on 将导致日志文件刷新(关闭并重新打开日志)。这可用于类似于 MySQL 管理其日志文件的方式轮换日志。
audit_json_socket_name: json UNIX 套接字名称。如果启用了 audit_json_socket 选项,则会将审计跟踪写入此 UNIX 套接字。

audit_json_socket: json UNIX 套接字开|关。

audit_json_socket_write_timeout: 提供写入 json 套接字的超时(以毫秒为单位)。当前值为 1000(= 1 秒)。零值禁用超时。目前,由于内部 MySQL API,最小实际超时为 1000 毫秒。(如果您提供较小但非零的值,则将其四舍五入。)我们希望未来的版本将提供更短的超时。在 1.1.3 版中引入。

audit_uninstall_plugin: 审计卸载插件 ON|OFF(仅限命令行/conf 文件)。如果禁用,尝试通过 sql UNINSTALL 命令卸载 AUDIT 插件将失败。通过卸载插件提供额外的安全性。还可以防止CVE-2010-1621影响版本高达 5.1.46。

audit_validate_checksum: mysqld 二进制校验和验证 ON|OFF。请参阅安装页面中的故障排除部分。

audit_checksum: 要验证的 mysqld 校验和(仅限命令行/conf 文件)。当存在 audit_offsets 时使用。如果指定的校验和与计算的不匹配,插件将不会加载。当手动设置偏移量并且您希望避免在升级 mysqld 后未经验证而使用手动偏移量时,这很有用。

audit_record_cmds: 以逗号分隔的命令列表,用于记录到审计跟踪。例如insert,update,delete。

audit_record_objs: 要记录到审计跟踪的对象(表)的逗号分隔列表。表名应指定为:database.table支持通配符,并且可以指定:.mytable或mydb. 指定:{}作为列表的一部分以包含空集以捕获活动没有对象的情况(例如连接和退出)。
audit_whitelist_users: 未记录查询的白名单用户的逗号分隔列表。指定:{}作为列表的一部分包含空用户。
audit_whitelist_cmds: 未记录查询的白名单 cmds 的逗号分隔列表。在 1.0.6 版中引入。

audit_force_record_logins: 强制日志记录:连接、退出和登录失败命令,无论audit_record_cmds 和audit_record_objs 变量中的设置如何。开|关。默认值:关。在 1.0.8 版中引入。

audit_header_msg: 标头消息记录 ON|OFF。默认值:开。在 1.0.6 版中引入。

audit_password_masking_cmds: 将应用密码屏蔽正则表达式的逗号分隔命令列表。默认值包括可能包含密码子句的 MySQL 命令:CREATE_USER,GRANT,SET_OPTION,SLAVE_START,CREATE_SERVER,ALTER_SERVER,CHANGE_MASTER. 在 1.0.6 版中引入。

audit_password_masking_regex:用于密码屏蔽的符合 PCRE 的正则表达式。正则表达式将仅应用于具有在以下位置指定的命令类型的语句:audit_password_masking_cmds 在 1.0.6 版引入。

audit_json_file_retry : json 日志文件重试间隔。如果插件无法打开/写入 json 日志文件,将以秒为单位重试打开每个指定的时间间隔。设置为 0 以禁用重试。默认为 60 秒。在 1.0.6 版中引入。

audit_json_socket_retry : json 套接字重试间隔。如果插件无法连接/写入 json 审计套接字,将重试连接每个指定的时间间隔(以秒为单位)。设置为 0 以禁用重试。默认为 10 秒。在 1.0.6 版中引入。

audit_json_file_bufsize: 用于日志记录的 json 文件缓冲区大小(以字节为单位)。值 0 表示默认大小,值 1 表示无缓冲。最大值:262144 (256KB)。在记录大型语句(大于 4KB 的日志条目)时,较大的值可能会提高性能。默认为 0。如果在运行时需要更改,则执行刷新以使新值生效。默认为开。在 1.0.8 版中引入。

audit_client_capabilities: 如果启用,插件将客户端功能位图的值作为无符号 64 位值发送。默认为关闭。在 1.1.1 版中引入。

audit_sess_connect_attrs: 如果启用,插件会发送会话连接属性。默认为开。目前仅在 MySQL 5.6 和 5.7 上受支持。在 1.1.1 版中引入。注意:连接属性的日志记录还需要 MySQL 5.6 及更高版本的客户端才能连接到服务器。连接属性是在 5.6 中作为通信协议的一部分添加的。启用后,表单的 json 条目将添加到每个日志条目中:“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: 如果启用,插件会发送有关客户端进程的信息,例如 PID、应用程序名称和拥有它的用户名。默认为开。在 1.1.2 版中引入。

audit_before_after: 控制插件是在执行当前 SQL 语句之前还是之后写入其日志记录,或两者兼而有之。可能的值’before’ ,‘after’ 或’both’ 。默认为’after’ 。在 1.1.2 版中引入。

日志的轮循可以使用logrotate的方式

cat >> /data/logrotate/mysql_audit << EOF
/data/mysql-audit-log/*.json {
daily
dateext
missingok
rotate 30
compress
delaycompress
notifempty
create 0640 mysql mysql
copytruncate
}
EOF
echo "1 0 * * * /usr/sbin/logrotate -vf /data/logrotate/mysql_audit >> /data/logrotate/logrotate-mysql-audit.log 2>&1" >> /var/spool/cron/root

rotate 30保留30天的记录,添加一个计划任务,每天0点执行轮循

赞(0)
未经允许不得转载:娃哈哈好喝 » mysql5.7安装审计插件 Audit Plugin
分享到: 更多 (0)