MySQL  - 讨论区

标题:如何实现MySQL数据库使用情况的审计

2013年11月28日 星期四 17:58

出于对数据安全的考虑,很多公司要求对MySQL的操作进行审计,这就要求我们对所有MySQL的操作都进行记录,并且相关信息要齐全(账号,时间,语句等)。

要实现这个目的,我尝试了几个方法:

1,打开general_log。

这样虽然可以记录所有的操作日志,但很遗憾,缺少账号等必要信息。

2,打开slow_query_log,并且将long_query_time设置为0。

这样记录的日志信息非常丰富,完全足够审计使用,但非常遗憾的是,long_query_time参数可以在session级别设置,这样当用户将这个参数设置为足够大时,其执行的SQL语句将不会被记录,从而行程一个漏洞。

3,使用专用的audit plugin。

MySQL自5.5版本起,实现了audit api,可以专门用于编写审计插件,Oracle官方就实现了一个叫做audit_log的插件,但这个插件既不免费也不开源,而是作为其企业服务的一部分,只供给付费用户使用,对此我只能表示呵呵。

安全厂商Macfee也有一个MySQL audit插件,但好久没有更新了,而且实现方式很奇特,在此不做讨论。

今天要推荐的是MariaDB出品的 MariaDB Audit Plugin,经过我的测试,安装和使用都非常简单。

这个插件下载 解压后就是一个server_audit.so,将这个文件拷贝到mysql的plugin目录(一般是/usr/lib64/mysql/plugin/),然后登陆MySQL执行:

INSTALL PLUGIN server_audit SONAME 'server_audit';

然后执行:

SET GLOBAL server_audit_logging=on;

打开日志记录。

默认日志文件在MySQL datadir目录下面的server_audit.log文件。

我是在Oracle官方发布的MySQL 5.6版本上进行测试的,一切正常。

日志文件位置和名称以及日志切割等都可以通过参数配置,具体可以参考文档:

https://mariadb.com/kb/en/about-the-mariadb-audit-plugin/

 

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号