【MySQL 5.7】通过MariaDB Audit Plugin实现数据库的审计
原创
©著作权归作者所有:来自51CTO博客作者dbprofessional的原创作品,谢绝转载,否则将追究法律责任
[root@node01 ~]$ mysql -uroot -pabcd.1234 -e 'select @@global.plugin_dir;'
+---------------+--------------------------+
| Variable_name | Value |
+---------------+--------------------------+
| plugin_dir | /usr/lib64/mysql/plugin/ |
+---------------+--------------------------+
1 row in set (0.00 sec)
[root@node01 ~]# cd /usr/lib64/mysql/plugin
[root@node01 plugin]# chmod a+x server_audit.so
[root@node01 ~]# mysql -uroot -pabcd.1234 -hnode01
(root@node01) > install plugin server_audit soname 'server_audit.so';
Query OK, 0 rows affected (0.03 sec)
(root@node01) > set global server_audit_logging=on;
Query OK, 0 rows affected (0.00 sec)
(root@node01) > set global server_audit_events = 'query,table,query_ddl,query_dml';
Query OK, 0 rows affected (0.00 sec)
(root@node01) > set global server_audit_incl_users='tpcc';
Query OK, 0 rows affected (0.00 sec)
(root@node01) > set global server_audit_file_rotate_size = 1073741824;
Query OK, 0 rows affected (0.00 sec)
(root@node01) > set global server_audit_file_rotations=7;
Query OK, 0 rows affected (0.00 sec)
[root@node01 ~]# cat /var/lib/mysql/mysqld_error.log
220920 14:48:30 server_audit: server_audit_incl_users set to 'soe'.
220920 14:48:30 server_audit: MariaDB Audit Plugin version 1.4.14 STARTED.
220920 14:48:30 server_audit: logging started to the file server_audit.log.
[root@node01 ~]# vim /etc/my.cnf
[mysqld]
plugin_load_add='server_audit.so'
server_audit_logging = on
server_audit_events = query,table,query_ddl,query_dml
server_audit_incl_users= tpcc
server_audit_file_rotate_size = 1073741824
server_audit_file_rotations=7
审计参数
server_audit_logging #默认情况下,审计日志记录设置为关闭。要启用它,请将server_audit_logging变量设置为on
server_audit_events = query,table,query_ddl,query_dml #如果设置了,则将审计日志记录限制为某些事件类型。如果没有设置,那么每个事件类型都会记录到审计日志中
server_audit_incl_users #如果不为空,它包含一个逗号分隔的用户列表,这些用户的活动将被记录。连接记录不受此变量的影响-它们总是被记录
server_audit_excl_users #如果不为空,则包含其活动将不被记录的用户列表。连接记录不受此变量的影响-它们总是被记录
server_audit_output_type #日志可以写入单独的文件或系统日志。如果您希望将日志记录与其他系统信息分开,则应将变量值server_audit_output_type设置为file
server_audit_file_path = server_audit.log #审计日志文件的文件路径和名称
server_audit_file_rotate_size = 1073741824 #当审计日志文件已达到设置的大小限制,则会创建一个以连续数字作为扩展名的副本,原始文件将被截断,以便再次用于审计
server_audit_file_rotations = 9 #限制创建的审计日志文件的数量,当达到允许的文件数量时,最旧的文件将被覆盖
审计事件类型
CONNECT:连接、断开连接和失败的连接,包括错误代码
QUERY:以纯文本形式执行的查询及其结果,包括由于语法或权限错误而失败的查询
TABLE:受查询执行影响的表
QUERY_DDL:与QUERY相同,但只筛选DDL类型的查询(create、alter、drop、rename和truncate语句,create/drop[procedure/function/user]和rename user除外(它们不是DDL)
QUERY_DML:与QUERY相同,但只筛选DML类型的查询(do、call、load data/xml、delete、insert、select、update、handler和replace语句)
QUERY_DCL:与QUERY相同,但只筛选DCL类型的查询(create user、drop user、rename user、grant、revoke和set password语句)
QUERY_DML_NO_SELECT:与QUERY_DML相同,但不记录SELECT查询。(从1.4.4版开始)(do、call、load data/xml、delete、insert、update、handler和replace语句)