前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >给MariaDB开启日志审计功能

给MariaDB开启日志审计功能

作者头像
保持热爱奔赴山海
发布2019-09-18 16:58:22
1.8K0
发布2019-09-18 16:58:22
举报
文章被收录于专栏:饮水机管理员饮水机管理员

如果很多运维或者开发都分配了数据库的操作权限的话,某一天表或者字段丢失了都无法找到谁干的,这个锅只能运维来背了,因此有必要给数据库的操作记录保存下来。

下面来演示下如何操作:

软件版本:

    MariaDB10.0.17    (自带了server_audit插件)

MariaDB审计日志写到文件

安装server_audit插件

登陆进MariaDB,执行:

> show variables like '%plugin%';  查看插件存放的目录
wKiom1dk6YPwqqdyAAAg_sTOgmo192.png
wKiom1dk6YPwqqdyAAAg_sTOgmo192.png

cd /usr/local/mariadb/lib/plugin/  查看有没有一个叫做server_audit.so的文件。

如果没有的话,到http://www.skysql.com/downloads/mariadb-audit-plugin-beta去下载放到/usr/local/mariadb/lib/plugin/目录下即可。

安装插件

> INSTALL PLUGIN server_audit SONAME'server_audit.so';

或者编辑/etc/my.cnf添加

[mysqld]
plugin-load=server_audit=server_audit.so

然后重启mariadb。

查看相关的全局变量

> show variables like '%audit%';
wKioL1dk6aOhXP4JAABTaRqx77Q343.png
wKioL1dk6aOhXP4JAABTaRqx77Q343.png

打开日志的审计功能

> set global server_audit_logging=on;

但是服务重启后会失效,可以通过在配置文件添加避免这个问题:

[mysqld]
server_audit_logging=on

查看audit插件的运行状态:

> show global status like '%audit%';
wKiom1dk6eSSuN6OAAAl-4C8Os0225.png
wKiom1dk6eSSuN6OAAAl-4C8Os0225.png

server_audit_active :ON (表示server_audit插件在运行);

server_audit_current_log : server_audit.log(审计日志路径和日志名);

server_audit_last_error : 错误消息;

server_audit_writes_failed : 因错误没有记录的日志条目数

设置变量

> set GLOBAL server_audit_events='CONNECT,QUERY,TABLE';
> set GLOBAL server_audit_incl_users ='test_user,root';
> set GLOBAL server_audit_excl_users='lirl'; 
> set GLOBALserver_audit_file_rotate_size=200000000;   (单位:字节)
> set GLOBAL server_audit_file_rotations=9;

为了防止server_audit插件被卸载,需要在配置文件中添加:

[mysqld]

server_audit=FORCE_PLUS_PERMANENT

重启MySQL生效。

或者我们直接在/etc/my.cnf的[mysqld]段添加上下面的内容,再重启MariaDB即可,上面的全部乱七八糟的设置就能都生效,省得那么多步骤。

# audit plugin settings
plugin-load = server_audit.so
server_audit = FORCE_PLUS_PERMANENT
server_audit_events = 'CONNECT,QUERY,TABLE'
server_audit_logging = ON
server_audit_incl_users = test1,root
server_audit_file_rotate_size =10G
server_audit_file_path  = /usr/local/mariadb/var/server_audit.log

重启MariaDB后,我们tail -f /usr/local/mariadb/var/server_audit.log监控这个文件。

另开一个xshell终端,登陆mysql即可看到日志在刷新,例如查询修改操作都被记录下来了。

卸载server_audit的方法:

> UNINSTALL PLUGIN server_audit;
> show variables like '%audit%';   验证是否卸载完

卸载的步骤:

1、需要先在配置文件里把server_audit相关的配置项目注释掉,再重启mariadb。

2、再来执行UNINSTALL PLUGIN server_audit;才能卸载掉这个插件。

3、卸载插件完成后,执行show variables like '%audit%';仍然能看到这个插件的可用参数,再次重启mariadb才行。

MariaDB审计日志写到syslog

和写入到日志文件中的配置方法基本相同,就是多了一条显式的指定日志的存储方式而已。简单演示下即可。

操作如下:

> INSTALL PLUGIN server_audit SONAME'server_audit.so';
> SET GLOBALserver_audit_output_type=SYSLOG;
> SET GLOBALserver_audit_events='CONNECT,QUERY,TABLE';
> SET GLOBAL server_audit_logging=on;
> show variables like '%audit%';
wKioL1dk6kHw6P8cAABcp352QAQ173.png
wKioL1dk6kHw6P8cAABcp352QAQ173.png
> show status like '%audit%';
wKioL1dk6kKBaRJaAAAldGJdd_4781.png
wKioL1dk6kKBaRJaAAAldGJdd_4781.png

重启rsyslog服务

# /etc/init.d/rsyslog restart

然后连接到mysql执行些数据库、表的操作,可以tail -f /var/log/message里面看到操作的内容。

wKiom1dk6kLSaVJRAACoskaaKtU794.png
wKiom1dk6kLSaVJRAACoskaaKtU794.png

默认的操纵日志都打在/var/log/message里面,不方便我们查看,可以修改下/etc/rsyslog.conf,

在*.info;mail.none;authpriv.none;cron.none/var/log/messages的下面加一行:

if $programname =='mysql-server_auditing' then /var/log/mariadb_audit_log
# /etc/init.d/rsyslog restart   重启rsyslog服务

这样的话,就能将审计的日志输出到独立的文件/var/log/mariadb_audit_log里面。

(注意:审计日志在/var/log/messages写一遍,在/var/log/mariadb_audit_log再写一遍,不是单单只写到/var/log/mariadb_audit_log里面的)

补充:MariaDB Audit Plugin和init-connect+binlog比较

1)、init-connect+binlog方案要求用户对日志表至少有insert权限,每添加一个新用户都要进行授权,显得比较麻烦;而MariaDB Audit Plugin默认会对所有用户进行行为审计,不需要对新添加的用户进行授权,MariaDB Audit Plugin还可以指定对哪些用户进行行为审计,哪些用户不需要进行行为审计;

2)、init-connect+binlog方案无法对具有super权限的用户进行行为审计,而MariaDB Audit Plugin可以对所有用户进行行为审计,包括具有super权限的用户;

3)、init-connect+binlog方案需要修改配置文件之后重启MySQL生效,而MariaDB Audit Plugin可以在线进行配置,无需重启服务生效;

4)、init-connect+binlog方案审计信息输出到binlog中,MariaDB Audit Plugin可以选择将审计信息输出到syslog或者自定义的路径;

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-06-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MariaDB审计日志写到文件
  • MariaDB审计日志写到syslog
  • 补充:MariaDB Audit Plugin和init-connect+binlog比较
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档