MariaDB開啟日志審計(jì)功能

對于MySQL、Percona、MariaDB三家都有自己的審計(jì)插件,但是MySQL的審計(jì)插件是只有企業(yè)版才有的,同時(shí)也有很多第三方的的MySQL的審計(jì)插件,而Percona和MariaDB都是GPL的審計(jì)插件。MariaDB的審計(jì)插件,默認(rèn)是沒有安裝的的,安裝該插件并開啟審計(jì)功能后,可以將對數(shù)據(jù)庫的各種操作記錄保存下來,以便追蹤操作來源及具體操作。

MariaDB版本:

Server version: 10.0.19-MariaDB-log Source distribution? ?(該版本自帶了server_audit插件)

一、MariaDB審計(jì)日志寫到文件

1、安裝server_audit插件

查看插件存放的目錄,登陸進(jìn)MariaDB,執(zhí)行:

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

cd /apps/mariadb/lib/plugin/ 目錄下,查看有沒有一個(gè)叫做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';

或者編輯數(shù)據(jù)庫的配置文件my.cnf,添加如下內(nèi)容:

[mysqld]

plugin-load=server_audit.so

然后重啟mariadb數(shù)據(jù)庫,推薦使用第一種方式,避免重啟數(shù)據(jù)庫。

安裝后,可登陸客戶端查看audit相關(guān)的全局變量:

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

3、打開日志的審計(jì)功能

從上圖可以看到,現(xiàn)在插件已將安裝上了,但是還沒有開啟,可通過以下命令進(jìn)行開啟:

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

通過命令開啟該功能后,一旦數(shù)據(jù)庫服務(wù)重啟后便會(huì)失效,可以通過在配置文件添加避免這個(gè)問題:

[mysqld]

server_audit_logging=on

開啟后,查看audit插件的運(yùn)行狀態(tài):

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

各參數(shù)含義如下:

server_audit_active :ON (表示server_audit插件在運(yùn)行);

server_audit_current_log : server_audit.log(審計(jì)日志路徑和日志名);

server_audit_last_error : 錯(cuò)誤消息;

server_audit_writes_failed : 因錯(cuò)誤沒有記錄的日志條目數(shù);

可對audit相關(guān)的變量通過命令行進(jìn)行設(shè)置,也可以直接在配置文件my.cnf中進(jìn)行配置,常用變量設(shè)置如下:

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'; --審計(jì)的用戶對象,不設(shè)置則針對所有用戶

set GLOBAL server_audit_file_rotate_size=1073741824;? --單個(gè)日志大小(單位:字節(jié)),文件到達(dá)該大小后,會(huì)自動(dòng)切換

set GLOBAL server_audit_file_rotations=9; --日志保存數(shù)量

為了防止server_audit插件被卸載,可以在在配置文件my.cnf中添加如下選項(xiàng):

[mysqld]

server_audit=FORCE_PLUS_PERMANENT

然后重啟數(shù)據(jù)庫后生效。

4、卸載插件

在MySQL客戶端中執(zhí)行如下命令:

MariaDB [(none)]> UNINSTALL PLUGIN server_audit;

驗(yàn)證卸載是否完成:

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

Empty set (0.00 sec)

卸載的步驟:

1、如果在數(shù)據(jù)庫的配置文件中配置了server_audit相關(guān)的選項(xiàng),需要先在配置文件里把這項(xiàng)配置項(xiàng)注釋掉,再重啟mariadb。

2、然后在客戶端執(zhí)行UNINSTALL PLUGIN server_audit;才能卸載掉這個(gè)插件。

3、卸載插件完成后,執(zhí)行show variables like '%audit%';仍然能看到這個(gè)插件的可用參數(shù),再次重啟mariadb才行。

二、MariaDB審計(jì)日志寫到syslog

將MariaDB審計(jì)日志寫到syslog的方法,與寫入到日志文件中的方法基本相同,就是多了一條顯式的指定日志的存儲(chǔ)方式而已。

改變審計(jì)日志輸入類型,即更改參數(shù)server_audit_output_type的值,命令如下:

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

需要重啟rsyslog服務(wù)后生效,命令如下:

# /etc/init.d/rsyslog restart

Shutting down system logger:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]

Starting system logger:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]

通過MySQL客戶端連接到數(shù)據(jù)庫后,執(zhí)行一些數(shù)據(jù)庫、表的操作,可以在syslog里看到操作的記錄:

# tailf /var/log/messages

默認(rèn)的審計(jì)日志都是記錄在/var/log/message文件里,不方便我們查看,可以修改下系統(tǒng)日志的配置文件:

# 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服務(wù):? ? ? ? ? ? ??

# /etc/init.d/rsyslog restart

Shutting down system logger:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]

Starting system logger:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [? OK? ]

這樣的話,就能將審計(jì)的日志輸出到獨(dú)立的文件/data/logs/mariadb/mariadb_audit_log里面。

(注意:審計(jì)日志在/var/log/messages寫一遍,在/data/logs/mariadb/mariadb_audit_log再寫一遍,不是單單只寫到/var/log/mariadb_audit_log里面的)

通過MySQL客戶端連接到數(shù)據(jù)庫后,執(zhí)行一些數(shù)據(jù)庫、表的操作,可以在指定的日志文件里看到操作的記錄:

# tailf /data/logs/mariadb/mariadb_audit_log

補(bǔ)充:MariaDB Audit Plugin和init-connect+binlog比較

(1)、init-connect+binlog方案要求用戶對日志表至少有insert權(quán)限,每添加一個(gè)新用戶都要進(jìn)行授權(quán),顯得比較麻煩;而MariaDB Audit Plugin默認(rèn)會(huì)對所有用戶進(jìn)行行為審計(jì),不需要對新添加的用戶進(jìn)行授權(quán),MariaDB Audit Plugin還可以指定對哪些用戶進(jìn)行行為審計(jì),哪些用戶不需要進(jìn)行行為審計(jì);

(2)、init-connect+binlog方案無法對具有super權(quán)限的用戶進(jìn)行行為審計(jì),而MariaDB Audit Plugin可以對所有用戶進(jìn)行行為審計(jì),包括具有super權(quán)限的用戶;

(3)、init-connect+binlog方案需要修改配置文件之后重啟MySQL生效,而MariaDB Audit Plugin可以在線進(jìn)行配置,無需重啟服務(wù)生效;

(4)、init-connect+binlog方案審計(jì)信息輸出到binlog中,MariaDB Audit Plugin可以選擇將審計(jì)信息輸出到syslog或者自定義的路徑。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,654評論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,281評論 6 342
  • mysql主從復(fù)制 主從復(fù)制慨述 構(gòu)建大型,高性能應(yīng)用程序的基礎(chǔ)主服務(wù)器復(fù)制負(fù)責(zé)更新,且將更新寫入二進(jìn)制日志文件,...
    肖金光xjg閱讀 1,115評論 0 1
  • 一、源題QUESTION 36Your database is open and the LISTENER lis...
    貓貓_tomluo閱讀 1,476評論 0 2
  • 一、源題QUESTION 1The instance abnormally terminates because ...
    貓貓_tomluo閱讀 1,754評論 0 2

友情鏈接更多精彩內(nèi)容