使用MariaDB来审计数据库并跟踪查询!

我以前并没有太在意,但是MariaDB默认实现了审计功能。例如,如果由于操作者的错误导致数据消失。更严重的情况下,比如发生了“信息泄露”,我们想要追踪“什么时候?”,“谁?”,“做了什么?”时,应该如何处理?
据说数据信息泄露几乎都是内部造成的…这让人感到不安对吧?
因此,需要的就是“审计”,记录对表的访问记录和SQL语句的执行历史等审计日志变得重要。

在今以及以前的时代,数据库的安全性经常被轻视。
嗯,实施也很困难呢。虽然以前如此,但MariaDB 10中已经默认安装了模块。因为已经安装了,所以我在下面写下了备忘录,意味着要尝试使用它。

如果您正在使用MariaDB,并且很容易進行設定,那麼請試試看吧!

安装审计插件。

MySQL> INSTALL PLUGIN server_audit SONAME 'server_audit';
Query OK, 0 rows affected (0.18 sec)

确认插件目录

MariaDB [(none)]> SHOW VARIABLES LIKE 'plugin_dir';
+---------------+--------------------------+
| Variable_name | Value                    |
+---------------+--------------------------+
| plugin_dir    | /usr/lib64/mysql/plugin/ |
+---------------+--------------------------+
1 row in set (0.05 sec)

确认审计日志的设置值

MariaDB [(none)]> 
show global variables like '%audit%' ;                                                                               
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| server_audit_events           | CONNECT,QUERY         |
| server_audit_excl_users       |                       |
| server_audit_file_path        | server_audit.log      |
| server_audit_file_rotate_now  | OFF                   |
| server_audit_file_rotate_size | 1000000               |
| server_audit_file_rotations   | 9                     |
| server_audit_incl_users       |                       |
| server_audit_logging          | OFF                   |
| server_audit_mode             | 0                     |
| server_audit_output_type      | file                  |
| server_audit_syslog_facility  | LOG_USER              |
| server_audit_syslog_ident     | mysql-server_auditing |
| server_audit_syslog_info      |                       |
| server_audit_syslog_priority  | LOG_INFO              |
+-------------------------------+-----------------------+
14 rows in set (0.00 sec)

审计日志的开始

MariaDB [(none)]> 
SET GLOBAL server_audit_logging=1;
FLUSH LOGS ;

确认日志文件是否已被写入。

    デフォルトのログのフォーマットは以下の通りです
[timestamp],[serverhost],[username],[host],[connectionid],
[queryid],[operation],[database],[object],[retcode]
    詳細な情報がほしい場合は、以下のパラメータを追加すると良いでしょう
MariaDB [(none)]> 
SET GLOBAL server_audit_output_type=syslog ;
[timestamp][syslog_host][syslog_ident]:[syslog_info][serverhost],[username],[host],
[connectionid],[queryid],[operation],[database],[object],[retcode]
    デフォルトログイメージはこんなかんじになります
[root@dblibm01new mysql]# cat /var/lib/mysql/server_audit.log                                                                          
20141203 20:38:28,server01.local,sysadm,localhost,14,8,QUERY,,'SET GLOBAL server_audit_logging=1',0
20141203 20:39:45,server01.local,sysadm,localhost,14,0,DISCONNECT,,,0
20141203 20:39:49,server01.local,develop,192.168.33.215,15,0,FAILED_CONNECT,,,1045
20141203 20:39:49,server01.local,develop,192.168.33.215,15,0,DISCONNECT,,,0
20141203 20:39:49,server01.local,develop,192.168.33.215,16,0,FAILED_CONNECT,,,1045
20141203 20:39:49,server01.local,develop,192.168.33.215,16,0,DISCONNECT,,,0

如果想要对审计日志进行轮转的话,

如果想要将轮转数量设置为7、轮转大小设置为1G,可以使用以下配置。

MariaDB [(none)]>
SET GLOBAL server_audit_file_rotations=7;
SET GLOBAL server_audit_file_rotate_size=1000000;
SET GLOBAL server_audit_file_rotate_now=ON ;

在MySQL重新启动时,为了确保审核功能能够启动,建议在server.cnf中添加以下内容。

    /etc/my.cnf.d/server.cnf
[mysqld]
# Audit Plugin
server_audit_logging=1                                                                                                                         
server_audit_events=connect,query
・
・
・

我之前以很快的速度做了上述的解释!

广告
将在 10 秒后关闭
bannerAds