当前位置:   article > 正文

mysql5.7安装server_audit审计_mysql 5.7 audit

mysql 5.7 audit

一、部署环境

mysql版本:5.7.27
系统:centos7
CPU:1核
内存:1G

二、查看插件安装目录

mysql> show global variables like 'plugin_dir';
+---------------+------------------------------+
| Variable_name | Value                        |
+---------------+------------------------------+
| plugin_dir    | /usr/local/mysql/lib/plugin/ |
+---------------+------------------------------+
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

二、提取mariadb审计插件并放置插件目录

(版本并不通用,自行根据版本号提取,这里就没总结了)

wget  https://downloads.mariadb.com/MariaDB/mariadb-10.5.16/bintar-linux-x86_64/mariadb-10.5.16-linux-x86_64.tar.gz
tar -zxvf   mariadb-10.5.3-linux-x86_64.tar.gz
cp ./mariadb-10.5.3-linux-x86_64/lib/plugin/server_audit.so /usr/local/mysql/lib/plugin/
chmod +x /usr/local/mysql/lib/plugin/server_audit.so
  • 1
  • 2
  • 3
  • 4

三、mysql安装server_audit.so插件

mysql>  install plugin server_audit soname 'server_audit.so';
Query OK, 0 rows affected (0.02 sec)           
##也可以在my.cnf 加载插件方式安装
在my.cnf 设置 plugin_load = server_audit=server_audit.so  
  • 1
  • 2
  • 3
  • 4

查看当前MySQL插件情况

mysql>  show plugins;
| SERVER_AUDIT                             | ACTIVE   | AUDIT              | server_audit.so       | GPL     |
  • 1
  • 2

四、新建 auditlogs 目录,并更改所属的组和用户

mkdir /opt/mysqldata/auditlogs
chown -R mysql:mysql /opt/mysqldata/auditlogs
  • 1
  • 2

五、开启审计,写入配置文件

#防止server_audit 插件被卸载 进行配置文件配置
server_audit=FORCE_PLUS_PERMANENT
#指定哪些操作被记录到日志文件中
server_audit_events='CONNECT,QUERY,TABLE,QUERY_DDL'
#开启审计功能
server_audit_logging=on
#默认存放路径,可以不写,默认到data文件下
server_audit_file_path=/opt/mysqldata/auditlogs
#设置文件大小 默认1000000,1073741824=1GB
server_audit_file_rotate_size=1073741824
#指定日志文件的数量,如果为0日志将从不轮转
server_audit_file_rotations=0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

重启mysql生效!

/etc/init.d/mysql restart
Shutting down MySQL............... SUCCESS! 
Starting MySQL.. SUCCESS! 
  • 1
  • 2
  • 3

如不便重启mysql,

临时开启  mysql>set global server_audit_logging=on;
临时关闭  mysql>set global server_audit_logging=off;
set global server_audit_file_rotate_size=1073741824;
set global server_audit_file_rotations=0;
set global server_audit_file_path='/opt/mysqldata/auditlogs/server_audit.log';
set global server_audit_events='CONNECT,QUERY,TABLE,QUERY_DDL';
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

六、验证

查看server_audit插件参数

mysql> show variables like '%audit%';
+-------------------------------+-------------------------------------------+
| Variable_name                 | Value                                     |
+-------------------------------+-------------------------------------------+
| server_audit_events           | CONNECT,QUERY,TABLE,QUERY_DDL             |
| server_audit_excl_users       |                                           |
| server_audit_file_path        | /opt/mysqldata/auditlogs/server_audit.log |
| server_audit_file_rotate_now  | OFF                                       |
| server_audit_file_rotate_size | 1073741824                                |
| server_audit_file_rotations   | 0                                         |
| server_audit_incl_users       |                                           |
| server_audit_loc_info         |                                           |
| server_audit_logging          | ON                                        |
| server_audit_mode             | 1                                         |
| 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                                  |
+-------------------------------+-------------------------------------------+
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

测试查看日志

tail /opt/mysqldata/server_audit.log 
20230726 15:25:27,localhost.localdomain,slave,192.168.2.22,3,15,QUERY,,'SELECT @master_binlog_checksum',0
20230726 15:25:27,localhost.localdomain,slave,192.168.2.23,2,16,QUERY,,'SELECT @@GLOBAL.SERVER_UUID',0
20230726 15:25:27,localhost.localdomain,slave,192.168.2.23,2,17,QUERY,,'SET @slave_uuid= \'9c54b402-26ed-11ee-a1ac-000c2981a3ba\'',0
20230726 15:25:27,localhost.localdomain,slave,192.168.2.22,3,18,QUERY,,'SELECT @@GLOBAL.GTID_MODE',0
20230726 15:25:27,localhost.localdomain,slave,192.168.2.22,3,19,QUERY,,'SELECT @@GLOBAL.SERVER_UUID',0
20230726 15:25:27,localhost.localdomain,slave,192.168.2.22,3,20,QUERY,,'SET @slave_uuid= \'9d8e7365-26ec-11ee-ada1-000c291d69c1\'',0
20230726 15:33:04,localhost.localdomain,root,localhost,4,0,CONNECT,,,0
20230726 15:33:04,localhost.localdomain,root,localhost,4,23,QUERY,,'select @@version_comment limit 1',0
20230726 15:33:06,localhost.localdomain,root,localhost,4,24,QUERY,,'show variables like \'%audit%\'',0
20230726 15:45:22,localhost.localdomain,root,localhost,4,25,QUERY,,'show global variables like \'datadir\'',0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

七、参数说明

server_audit_events :指定记录事件的类型,可以用逗号分隔的多个值
server_audit_excl_users : 该列表的用户[行为]将不记录,connect信息将不受该设置影响
server_audit_file_path :使用该变量设置存储日志的文件,可以指定目录,默认存放在数据目录的server_audit.log文件中
server_audit_file_rotate_now :知否立即切割日志
server_audit_file_rotate_size :限制日志文件的大小
server_audit_file_rotations :指定日志文件的数量,如果为0日志将从不轮转
server_audit_incl_users : 指定哪些用户的活动将记录,connect将不受此变量影响,该变量比server_audit_excl_users优先级高
server_audit_loc_info :
server_audit_logging :启动或关闭审计ON/OFF
server_audit_mode :标识版本,用于开发测试
server_audit_output_type :指定日志输出类型,可为SYSLOG或FILE,当为syslog时记录到/var/log/messages
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

重点说明 server_audit_events

省略值全部事件类型都会记录到审计日志中,可选择事件类型才记录。

如 server_audit_events = query,table,query_ddl,query_dml

事件类型

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语句)

注意:

  1. 如果开启了查询缓存(query cache),查询直接从查询缓存返回数据,将没有table记录

  2. 由于除了DDL和DML之外还有其他类型的查询,因此将查询DDL和查询DML选项一起使用并不等同于使用查询。
    从Audit插件的1.3.0版开始,有用于记录查询的DCL类型(例如GRANT和REVOKE语句)的QUERY_DCL选项。
    在同一版本中,添加了server_audit_query_log_limit变量,以便能够设置日志记录的长度。
    以前,由于查询字符串较长,日志条目将被截断。

八、卸载审计插件

如my.cnf 有相关配置,先清空重启再卸载。

mysql>  UNINSTALL PLUGIN server_audit;
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/672159
推荐阅读
相关标签
  

闽ICP备14008679号