Mysql日志审计工具

参考网址:http://www.omgdba.com/mysql-audit-plugin-now-available-in-percona-server-5-5-and-5-6.html

个人感觉审计没啥用处,偶然间看到这个功能总结了解下。



####percona的审计插件的动态链接库下载地址:二进制安装目录下有库文件(audit_log.so) 自己找一下。下方提到的其它动态链接库获取方式一样,直接下载数据库安装包查找即可。

https://www.percona.com/downloads/Percona-Server-5.6/LATEST/binary/   ##二进制包下载 。

https://www.percona.com/downloads/Percona-Server-5.6/LATEST/source/  ##源码包下载。可能需要编译后获取到动态链接库。


二进制包下载解释:

  • ssl100 - for all Debian/Ubuntu versions except Debian Squeeze (libssl.so.1.0.0 =>/usr/lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f2e389a5000));
  • ssl098 - only for Debian Squeeze (libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8(0x00007f9b30db6000));
  • ssl101 - for CentOS 6 and CentOS 7 (libssl.so.10 => /usr/lib64/libssl.so.10(0x00007facbe8c4000));
  • ssl098e - to be used only for CentOS 5 (libssl.so.6 => /lib64/libssl.so.6(0x00002aed5b64d000)).

温馨提示:percona的这个动态链接库,可以直接复制到MySQL社区版中。不幸的是社区版的版本只支持(5.5.37和5.6.17版本)。可以换用percona分之版本的数据库、或者用下方的其他审核工具。



原文地址:http://www.mysqlperformanceblog.com/2014/05/07/mysql-audit-plugin-now-available-in-percona-server-5-5-and-5-6/

昨天(2014-05-06)发布的两个新版本 Percona Server 5.5.37-35.0 和 Percona Server 5.6.17-65.0-56都包含了MySQL Audit Plugin(MySQL审计插件)的开源版本。以上产品发布之前,该插件只可用于MySQL企业版中。

注1:要说明一点,该实现是MySQL企业版审计日志插件的替代产品。Percona以GPL授权方式重新实现了审计插件,这在Oracle是闭源的。

注2:提一下:另外两个产品McAfee MySQL Audit Plugin 和 MariaDB Audit Plugin for MySQL也实现了开源审计插件。但是他们都用各自的不同于Oracle实现的审计日志方式。Percona的实现是第一个MySQL Enterprise Audit Plugin的替代插件。

在许多应用中,记录所有的MySQL使用记录是非常重要的。比如:

  • 必须的:操作敏感数据的应用(信用卡,医疗记录,等等);遵从某些安全标准(如:HIPAA)
  • 非常有用的:多用户应用或MySQL做服务;MySQL管理员可从安全性和可用性来审计MySQL使用。
  • 非常有用的:研究和排错;拥有一个完整的查询日志是很有用的,它对MySQL排错和即时优化有很大帮助。

起初,最简单的选择是启用通用日志(enable general log)(其他选择包括使用二进制日志记录除select以外的查询,或者在MySQL连接器或应用中启用追踪)。然而,通用日志记录所有的查询会极大地降低MySQL应用的性能:Aleksandr Kuzminsky在2009年发布了一个测试基准向我们展示通用日志和慢查询日志的总开销(the overhead of MySQL general and slow log)。MySQL审计插件的主要好处在于可以异步记录所有查询(可在配置中更改)。无决定在Percona Server中使用新的审计插件并在应用中对比测试使用新插件和使用通用日志对性能的影响。

如何使用MySQL审计插件

首先,我们要启用MySQL审计插件,详见https://dev.mysql.com/doc/refman/5.5/en/audit-log-plugin-installation.html

现在我们可以查看所有MySQL审计插件的选项:

有很多参数,具体可参见https://dev.mysql.com/doc/refman/5.5/en/audit-log-plugin-options-variables.html 对MySQL性能最重要的参数是:

  • audit_log_buffer_size:缓存查询的缓冲区(用于异步操作)。
  • audit_log_strategy:审计日志策略,详见下表:
含义
ASYNCHRONOUS 异步日志,等待输出缓冲区空间
PERFORMANCE 异步日志,如果在输出缓冲区空间不足则降低请求
SEMISYBCHRONOUS 同步日志,使用操作系统缓存
SYNCHRONOUS 同步日志,每个请求过后都会调用sync()方法

在我看来,最有用的选项是ASYNCHRONOUS,在输出缓冲区不够大的情况下给我们提供性能和不丢失事务之间的平衡。

  • audit_log_policy:我们可以记录所有查询或者只记录登陆日志(在我们只审计MySQL连接时非常有用)。

在MySQL社区版(MySQL Community server)中使用开源审计插件

你也可以在MySQL社区版中使用Percona开源版审计插件(5.5.37和5.6.17版本)。仅需要下载Percona Server的Linux tarball并将audit_log.so拷贝到你的MySQL插件目录中。

查找插件:

拷贝文件:

安装插件:

使用MySQL审计插件

插件启用后,它会使用XML格式将日志录入audit.log文件中,例如:

……

重要提示:

  • 所有的查询都会记录到这里,”GRANT“操作中的密码也会使用明文记录(如上所见)。保护该文件所在的盘就显得尤为重要。

注:明文密码问题只适用于MySQL 5.5版本。在MySQL 5.6中,语句中的密码在写入通用日志的时候都会被服务器重写,不会直接保存原始密码。

在MySQL 5.6中我们可以看到:

  • 日志文件会变得非常大:

搜索审计日志记录

MySQL 提供工具mysqlauditgrep进行搜索/查询日志文件。不幸的是,我不能让它在Percona Server生成的日志中正常工作(尝试的版本是1.3 和1.4)。根据这条Bug,它不能转换”新”的审计格式。在我看来,使用默认格式mysqlauditgrep会返回转换错误,而设置“audit_log_format=NEW”不会返回结果。mysqlauditgrep是一个强大的很好用的工具,但是现在我们的搜索被限定在传统Linux Grep(不是一个简单的XML文档)或者定制的转换/搜索XML。

审计日志插件和通用日志的性能开销

最后,我想测量审计日志插件和通用日志的开销。我用sysbench做一个 OLTP测试基准通过4中方式来测试性能开销:

  1. 审计插件关闭(测量基线)
  2. 审计日志打开记录所有查询
  3. 审计日志打开只记录登陆日志
  4. 通用日志打开,审计日志关闭

以下是测试结果:

测试方式 性能开销
Plugin + audit_log_policy = ALL ~15%
Plugin + audit_log_policy = LOGINS ~0% sysbench只连接一次,所哟可能比这个要高事实上。
General_log ~62%

在这里我们可以看到,审计日志需要占用性能开销,然而,记录所有查询时这样的开销远比开启通用日志要小很多。这些都是快速的基准测试结果。如果需要更精确的测量,当然你可以做一个更好的测试。

令人心动的特性

审计插件可以只记录一些指定的行为。比如,只记录指定用户或只记录对指定表的访问日志,等等。可以给出更多的控制和消耗更少的开销(=更好的性能)。

总结

MySQL 审计插件是一个很好的特性,它是对MySQL性能和安全审计的非常有用的工具。它的性能开销可能影响到一些高负载系统,但是,这样做应该是合理的并且它比使用通用日志记录所有查询要好得多。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值