MySQL审计audit

导读:
MySQL社区版是不带审计功能的,如果要使用MySQL审计,可以考虑使用中间件(例如proxysql)或者是MariaDB的审计插件。这里以MariaDB的审计插件为例,实现MySQL 5.7的审计功能。
 
版本信息
操作系统版本               :CentOS 7.4
MySQL数据库版本       :MySQL 5.7.27 社区版
MariaDB审计插件版本 :1.4.0
 
Note:
1.MariaDB审计插件一直在更新,不同版本的审计插件功能也不同,每个版本的功能见:https://mariadb.com/kb/en/mariadb-audit-plugin-options-and-system-variables/#server_audit_file_rotate_now
2.我们在给MySQL数据库安装审计插件时,需要从MariaDB里面拷贝审计插件。MariaDB版本与审计插件版本关系如下:https://mariadb.com/kb/en/mariadb-audit-plugin-versions/
3.MySQL版本与审计插件版本没有特别的联系,建议下载最新。
 
 
(一)下载安装
直接下载MariaDB的二进制安装包,下载链接如下:
下载完成之后,解压安装包。然后到plugin路径下,该路径是MariaDB存储插件的地方:
mariadb-10.1.23-linux-x86_64/lib/plugin

在该路径下存在 server_audit.so 文件,将其拷贝到MySQL服务器上。

 在MySQL数据库上查看其插件存放路径,如下:
mysql> show variables like 'plugin_dir';
+---------------+------------------------------+
| Variable_name | Value |
| plugin_dir | /usr/local/mysql/lib/plugin/ -------------+------------------------------+

 将MariaDB的审计插件server_audit.so存放到该路径下

[root@pro1 plugin]# ll
...
-rw-r--r--. 1 root root 176810 Jan 7 16:17 server_audit.so
...
 
# 修改插件权限
[root@pro1 plugin]# chown mysql:mysql server_audit.so
[root@pro1 plugin]# chmod 755 server_audit.so
[root@pro1 plugin]# ll
...
-rwxr-xr-x. 1 mysql mysql  server_audit.so
...

 进入数据库安装插件

mysql> INSTALL PLUGIN server_audit SONAME server_audit.so;
Query OK,0 rows affected (0.00 sec)

安装之后,可以看到数据库插件了

mysql> show plugins ;
--------------------------+----------+--------------------+-----------------+---------+
| Name         | Status | Type  | Library         | License --------------------------+----------+--------------------+-----------------+---------+
...
| SERVER_AUDIT | ACTIVE | AUDIT | server_audit.so | GPL --------------------------+----------+--------------------+-----------------+---------+

 

(二)审计配置
审计配置即修改参数信息即可,需要注意的是最好将其放入MySQL的参数文件(my.cnf),如果仅在数据库层面做修改,数据库重启后参数将失效。
mysql%audit% ;
-----------------------------+-----------------------+
| Variable_name                 | Value                 | server_audit_events           |                       | 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_loc_info         | server_audit_logging          | 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              -----------------------------+-----------------------+

这里罗列了重点参数的含义:

 我的最终配置如下:

mysql| CONNECT               100000000             ON                    -----------------------------+-----------------------+

 

(三)审计日志解析
一行代表一条完成的审计日志,日志中的字段用逗号分隔。各种事件将产生不同的审计记录,这些记录的格式个各不相同。根据审计事件,主要分为3类:
(3.1)连接审计
主要审计连接数据库、断开连接、连接失败等操作,其日志格式如下:
[timestamp],[serverhost],[username],[host],[connectionid],0,CONNECT,[database],1)">0
[timestamp],DISCONNECT,FAILED_CONNECT,[retcode]

 (3.2)查询审计

即审计select语句,其日志格式如下:
[timestamp],[queryid],QUERY,[object],[retcode]

 (3.3)表相关审计

如果审计开启TABLE事件,则会审计创建、删除、重命名表等操作,日志格式如下:
[timestamp],CREATE,1)">object],[timestamp],READ,[[database_new].[object_new],DROP,

 

 【完】

相关文章

navicat查看某个表的所有字段的详细信息 navicat设计表只能一...
文章浏览阅读4.3k次。转载请把头部出处链接和尾部二维码一起...
文章浏览阅读488次。恢复步骤概要备份frm、ibd文件如果mysql...
文章浏览阅读225次。当MySQL单表记录数过大时,增删改查性能...
文章浏览阅读1.5k次。Mysql创建、删除用户MySql中添加用户,新...
MySQL是一种开源的关系型数据库管理系统,被广泛应用于各类应...