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的二进制安装包,下载链接如下:  
https://downloads.mariadb.com/MariaDB/mariadb-10.1.23/bintar-linux-x86_64/mariadb-10.1.23-linux-x86_64.tar.gz   下载完成之后,解压安装包。然后到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 176810 Jan 7 16:17 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> show variables like '%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          | OFF                   || 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> show variables like '%audit%';+-------------------------------+-----------------------+| Variable_name                 | Value                 |+-------------------------------+-----------------------+| server_audit_events           | CONNECT               || server_audit_excl_users       |                       || server_audit_file_path        | server_audit.log      || server_audit_file_rotate_now  | OFF                   || server_audit_file_rotate_size | 100000000             || server_audit_file_rotations   | 9                     || 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              |+-------------------------------+-----------------------+

 

 

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

[timestamp],[serverhost],[username],[host],[connectionid],0,CONNECT,[database],,0[timestamp],[serverhost],[username],[host],[connectionid],0,DISCONNECT,,,0[timestamp],[serverhost],[username],[host],[connectionid],0,FAILED_CONNECT,,,[retcode]

 

 (3.2)查询审计

即审计select语句,其日志格式如下:    

[timestamp],[serverhost],[username],[host],[connectionid],[queryid],QUERY,[database],[object], [retcode]

 

 (3.3)表相关审计

如果审计开启TABLE事件,则会审计创建、删除、重命名表等操作,日志格式如下:    

[timestamp],[serverhost],[username],[host],[connectionid],[queryid],CREATE,[database],[object],
[timestamp],[serverhost],[username],[host],[connectionid],[queryid],READ,[database],[object],
[timestamp],[serverhost],[username],[host],[connectionid],[queryid],WRITE,[database],[object],
[timestamp],[serverhost],[username],[host],[connectionid],[queryid],ALTER,[database],[object],
[timestamp],[serverhost],[username],[host],[connectionid],[queryid],RENAME,[database], [object_old]|[database_new].[object_new],
[timestamp],[serverhost],[username],[host],[connectionid],[queryid],DROP,[database],[object],

 

 

 【完】

给TA买糖
共{{data.count}}人
人已赞赏
经验教程

你知道 react-color 的实现原理吗

2021-1-10 20:12:47

经验教程

Java并发编程实战(4)- 死锁

2021-1-10 20:12:49

⚠️
免责声明:根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。 本站为个人博客非盈利性站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途,网站会员捐赠是您喜欢本站而产生的赞助支持行为,仅为维持服务器的开支与维护,全凭自愿无任何强求。本站部份代码及教程来源于互联网,仅供网友学习交流,若您喜欢本文可附上原文链接随意转载。
无意侵害您的权益,请发送邮件至 momeis6@qq.com 或点击右侧 私信:momeis 反馈,我们将尽快处理。
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索