美文网首页
MariaDB开启日志审计功能

MariaDB开启日志审计功能

作者: 冷若秋枫 | 来源:发表于2018-01-05 18:05 被阅读0次

    对于MySQL、Percona、MariaDB三家都有自己的审计插件,但是MySQL的审计插件是只有企业版才有的,同时也有很多第三方的的MySQL的审计插件,而Percona和MariaDB都是GPL的审计插件。MariaDB的审计插件,默认是没有安装的的,安装该插件并开启审计功能后,可以将对数据库的各种操作记录保存下来,以便追踪操作来源及具体操作。

    MariaDB版本:

    Server version: 10.0.19-MariaDB-log Source distribution   (该版本自带了server_audit插件)

    一、MariaDB审计日志写到文件

    1、安装server_audit插件

    查看插件存放的目录,登陆进MariaDB,执行:

    MariaDB [(none)]> show variables like '%plugin%';

    cd /apps/mariadb/lib/plugin/ 目录下,查看有没有一个叫做server_audit.so的文件,如果没有的话,到http://www.skysql.com/downloads/mariadb-audit-plugin-beta去下载放到/apps/mariadb/lib/plugin/目录下即可。

    2、安装插件

    MariaDB [(none)]> INSTALL PLUGIN server_audit SONAME 'server_audit.so';

    或者编辑数据库的配置文件my.cnf,添加如下内容:

    [mysqld]

    plugin-load=server_audit.so

    然后重启mariadb数据库,推荐使用第一种方式,避免重启数据库。

    安装后,可登陆客户端查看audit相关的全局变量:

    MariaDB [(none)]> show global variables like '%audit%';

    3、打开日志的审计功能

    从上图可以看到,现在插件已将安装上了,但是还没有开启,可通过以下命令进行开启:

    MariaDB [(none)]> set global server_audit_logging=1;

    通过命令开启该功能后,一旦数据库服务重启后便会失效,可以通过在配置文件添加避免这个问题:

    [mysqld]

    server_audit_logging=on

    开启后,查看audit插件的运行状态:

    MariaDB [(none)]> show global status like '%audit%';

    各参数含义如下:

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

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

    server_audit_last_error : 错误消息;

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

    可对audit相关的变量通过命令行进行设置,也可以直接在配置文件my.cnf中进行配置,常用变量设置如下:

    set GLOBAL server_audit_file_path='/data/logs/mariadb/server_audit.log'; --日志保存路径

    set GLOBAL server_audit_events='connect,query,table'; --日志记录的操作

    set GLOBAL server_audit_events='query_ddl,query_dml'; --不记录select查询操作,只记录增删改、DDL操作

    set GLOBAL server_audit_incl_users ='test,user,root'; --审计的用户对象,不设置则针对所有用户

    set GLOBAL server_audit_file_rotate_size=1073741824;  --单个日志大小(单位:字节),文件到达该大小后,会自动切换

    set GLOBAL server_audit_file_rotations=9; --日志保存数量

    为了防止server_audit插件被卸载,可以在在配置文件my.cnf中添加如下选项:

    [mysqld]

    server_audit=FORCE_PLUS_PERMANENT

    然后重启数据库后生效。

    4、卸载插件

    在MySQL客户端中执行如下命令:

    MariaDB [(none)]> UNINSTALL PLUGIN server_audit;

    验证卸载是否完成:

    MariaDB [(none)]> show variables like '%audit%';

    Empty set (0.00 sec)

    卸载的步骤:

    1、如果在数据库的配置文件中配置了server_audit相关的选项,需要先在配置文件里把这项配置项注释掉,再重启mariadb。

    2、然后在客户端执行UNINSTALL PLUGIN server_audit;才能卸载掉这个插件。

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

    二、MariaDB审计日志写到syslog

    将MariaDB审计日志写到syslog的方法,与写入到日志文件中的方法基本相同,就是多了一条显式的指定日志的存储方式而已。

    改变审计日志输入类型,即更改参数server_audit_output_type的值,命令如下:

    MariaDB [(none)]> SET GLOBAL server_audit_output_type=SYSLOG;

    需要重启rsyslog服务后生效,命令如下:

    # /etc/init.d/rsyslog restart

    Shutting down system logger:                              [  OK  ]

    Starting system logger:                                    [  OK  ]

    通过MySQL客户端连接到数据库后,执行一些数据库、表的操作,可以在syslog里看到操作的记录:

    # tailf /var/log/messages

    默认的审计日志都是记录在/var/log/message文件里,不方便我们查看,可以修改下系统日志的配置文件:

    # vim /etc/rsyslog.conf

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

    if $programname =='mysql-server_auditing' then /data/logs/mariadb/mariadb_audit_log

    然后在重启rsyslog服务:              

    # /etc/init.d/rsyslog restart

    Shutting down system logger:                              [  OK  ]

    Starting system logger:                                    [  OK  ]

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

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

    通过MySQL客户端连接到数据库后,执行一些数据库、表的操作,可以在指定的日志文件里看到操作的记录:

    # tailf /data/logs/mariadb/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或者自定义的路径。

    相关文章

      网友评论

          本文标题:MariaDB开启日志审计功能

          本文链接:https://www.haomeiwen.com/subject/rdssnxtx.html