MySQL 审计插件 -MariaDB Audit Plugin
GreatSQL 社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。
GreatSQL 是 MySQL 的国产分支版本,使用上与 MySQL 一致。
作者:S
文章来源:GreatSQL 社区原创
小编提醒:拿 MariaDB 的 so 去 MySQL 里 install,这种方式很容易导致 audit plugin 工作异常,不推荐这么做。强烈建议使用 GreatSQL,自带 audit plugin。
前言
数据库审计功能主要将用户对数据库的各类操作行为记录审计日志,以便日后进行跟踪、查询、分析,以实现对用户操作的监控和审计。审计是一项非常重要的工作,也是企业数据安全体系的重要组成部分,等保测评中也要求有审计日志。对于 DBA 而言,数据库审计也极其重要,特别是发生人为事故后,审计日志便于进行责任追溯,问题查找。
当前 MySQL 社区版本并没有提供相关的插件使用,虽然 MySQL 提供有 binlog 及 general log ,这二者虽然具备部分审计功能,但一般不当做审计日志来看待。
常见的审计插件有 MariaDB Audit Plugin、Percona Audit Log Plugin、McAfee MySQL Audit Plugin 三种,MariaDB 自带的审计插件比较适合用于 MySQL 社区版,下面我们来学习下如何使用审计插件来实现审计功能。
首先我们需要安装一个 MySQL,该步骤就先跳过一下。
MariaDB Auditing Plugin 的安装
MariaDB 审计插件的名称是 server_audit.so(Windows 系统下是 server_audit.dll ),要注意的是,审计插件一直在更新,不同版本的审计插件功能也不同,推荐使用 >= 1.4.4 版本的插件。
由于 MariaDB Auditing Plugin 集成在 MariaDB 里面,没有单独提供,所以我们需要先下载一个 MariaDB。
下面我们以 CentOS 系统 MySQL 5.7 版本为例来安装下审计插件:
MariaDB 下载地址:https://mariadb.com/kb/en/postdownload/mariadb-server-5-5-64/
进入 plugin 子目录,查看下是否要另外安装依赖
查看 MySQL plugin 的存放地址
将 mariadb 的审计插件 server_audit.so 文件复制到该路径下,并更改插件属主及权限
在线安装插件
查看 audit 相关参数
参数说明
server_audit_events:指定记录事件的类型,可以用逗号分隔的多个值(connect,query,table),默认为空代表审计所有事件
server_audit_excl_users:用户白名单,该列表中的用户行为将不记录
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:启动或关闭审计,默认 OFF,启动 ON
server_audit_mode:标识版本,用于开发测试
server_audit_output_type:指定日志输出类型,可为 SYSLOG 或 FILE
server_audit_query_log_limit: 记录中查询字符串的长度限制。默认为 1024
server_audit_syslog_facility:默认为 LOG_USER,指定 facility
server_audit_syslog_ident:设置 ident,作为每个 syslog 记录的一部分
server_audit_syslog_info:指定的 info 字符串将添加到 syslog 记录
server_audit_syslog_priority:定义记录日志优先级
启用审计功能
[mysqld]下添加以下配置,使得配置永久生效:
功能测试
从另外一台远程连接到数据库上,执行一些操作
查看相应日志升级对应的操作记录
至此,我们完成审计插件的初步使用,从审计日志内容中我们可以看出,记录的格式还是很清晰详细的,每列内容都是需要的,根据日志很容易查到对应的操作。不过审计插件也是有优缺点的,优劣势整理如下:
server_audit 审计插件优势:
丰富的审计内容:包括用户连接,关闭,DML 操作,存储过程,触发器,事件等。
灵活的审计策略:可以自定义审计事件,例如过滤掉 select 查询,或者排除审计某个用户等。
灵活方便:免费使用且安装方便,可以在线开启和停用审计功能。
server_audit 审计插件劣势:
开启审计会增加数据库的性能开销,并占用磁盘空间。
日志格式不够丰富,不能自定义输出格式。
Enjoy GreatSQL :)
关于 GreatSQL
GreatSQL 是由万里数据库维护的 MySQL 分支,专注于提升 MGR 可靠性及性能,支持 InnoDB 并行查询特性,是适用于金融级应用的 MySQL 分支版本。
相关链接: GreatSQL社区 Gitee GitHub Bilibili
GreatSQL 社区:
社区博客有奖征稿详情:https://greatsql.cn/thread-100-1-1.html
技术交流群:
微信:扫码添加
GreatSQL社区助手
微信好友,发送验证信息加群
。
版权声明: 本文为 InfoQ 作者【GreatSQL】的原创文章。
原文链接:【http://xie.infoq.cn/article/cab90dcd6642961036dbac4b0】。未经作者许可,禁止转载。
评论