前言
MySQL 只有企業(yè)版有審計(jì)插件,開源社區(qū)版沒有審計(jì)插件。企業(yè)要通過等保需要開通審計(jì)功能,這里記錄使用 MariaDB 開源審計(jì)插件,讓 MySQL 社區(qū)版擁有審計(jì)功能。
1. 審計(jì)插件下載
審計(jì)插件是包含在 MariaDB 中的,所以需要先下載 MariaDB 然后將 server_audit.so
審計(jì)插件 copy 出來。
MariaDB 的 10.1 版本對(duì)應(yīng)與 Oracle 的 MySQL 5.7 版本,這里是 MariaDB 官方下載地址 可以從鏈接里下載 MariaDB。
tar -zxvf mariadb-10.1.48-linux-systemd-x86_64.tar.gz
進(jìn)入 /lib/plugin/
目錄可以找到 server_audit.so
審計(jì)插件:
ll ./mariadb-10.1.48-linux-systemd-x86_64/lib/plugin/server_audit.so
-rw-r--r-- 1 esadmin mysql 245036 Oct 30 2020 ./mariadb-10.1.48-linux-systemd-x86_64/lib/plugin/server_audit.so
接下來,需要將插件 copy 到 MySQL 插件目錄里面,可以執(zhí)行下方 SQL 查詢 MySQL base 目錄:
select @@basedir;
+-------------------+
| @@basedir |
+-------------------+
| /usr/local/mysql/ |
+-------------------+
MySQL 插件目錄在 basedir/lib/plugin/
下面,將插件 copy 到此目錄:
cp /pg_data/mariadb-10.1.48-linux-systemd-x86_64/lib/plugin/server_audit.so /usr/local/mysql/lib/plugin/
修改文件屬組,然后連接 MySQL 安裝插件:
install plugin server_audit SONAME 'server_audit.so';
通過下方命令確認(rèn)插件是否啟動(dòng)成功 Status = ACTIVE:
show plugins;
......
+----------------------------+----------+--------------------+-----------------+---------+
| Name | Status | Type | Library | License |
+----------------------------+----------+--------------------+-----------------+---------+
| SERVER_AUDIT | ACTIVE | AUDIT | server_audit.so | GPL |
+----------------------------+----------+--------------------+-----------------+---------+
2. 審計(jì)插件參數(shù)
通過下方參數(shù)可以查看審計(jì)插件涉及到的參數(shù):
root@mysql 14:33: [(none)]>show variables like '%audit%';
+-------------------------------+-----------------------+
| Variable_name | Value |
+-------------------------------+-----------------------+
| server_audit_events | |
| 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_loc_info | |
| server_audit_logging | OFF |
| server_audit_mode | 1 |
| server_audit_output_type | file |
| server_audit_query_log_limit | 1024 |
| server_audit_syslog_facility | LOG_USER |
| server_audit_syslog_ident | mysql-server_auditing |
| server_audit_syslog_info | |
| server_audit_syslog_priority | LOG_INFO |
+-------------------------------+-----------------------+
2.1 server_audit_events
該參數(shù)設(shè)置需要保存哪些類型的 SQL 語句,可以保存的類型有:
CONNECT, QUERY, TABLE, QUERY_DDL, QUERY_DML, QUERY_DCL, QUERY_DML_NO_SELECT
如果沒有設(shè)置該參數(shù),將記錄所有類型的 SQL 語句。
2.2 server_audit_excl_users
用戶列表,設(shè)置后表示該列表的用戶行為將不會(huì)被記錄,相當(dāng)于一個(gè)黑名單。
2.3 server_audit_output_type
指定日志輸出類型,可為 SYSLOG 或 FILE,默認(rèn)和推薦使用的模式都是 FILE 模式。
2.4 server_audit_file_path
當(dāng) server_audit_output_type=file 時(shí),通過該參數(shù)可以設(shè)置日志存放目錄,默認(rèn)為 server_audit.log
表示在數(shù)據(jù)目錄。
2.5 server_audit_file_rotate_now
強(qiáng)制日志文件輪轉(zhuǎn)。
2.6 server_audit_file_rotate_size
限制日志文件的大小,默認(rèn)為 1000000
2.7 server_audit_file_rotations
日志輪轉(zhuǎn)的次數(shù),默認(rèn)為 0 表示不輪轉(zhuǎn)。
2.8 server_audit_incl_users
用戶列表,設(shè)置后表示哪些用戶的操作需要被記錄,優(yōu)先級(jí)高于 server_audit_excl_users 參數(shù)列表。
2.9 server_audit_loc_info
記錄內(nèi)部信息,用戶可忽略。
2.10 server_audit_logging
默認(rèn)為 OFF,設(shè)置為 ON 表示打開審計(jì)日志記錄。
2.11 server_audit_mode
內(nèi)核人員開發(fā)調(diào)試使用的參數(shù),用戶可忽略。
2.12 server_audit_query_log_limit
限制審計(jì)日志記錄中字符串長度,默認(rèn)為 1024。
2.13 server_audit_syslog_facility
SYSLOG-mode 變量,設(shè)置一些 “facility”。
2.14 server_audit_syslog_ident
設(shè)置 ident 作為審計(jì)日志的一部分。
2.15 server_audit_syslog_info
將指定字符串添加到審計(jì)日志中。
2.16 server_audit_syslog_priority
SYSLOG-mode 變量,為 syslog 定義日志記錄的優(yōu)先級(jí)。
3. 審計(jì)插件使用
開啟審計(jì)日志,每個(gè)日志大小為 5G 可以有 10 文件進(jìn)行輪換。
server_audit_logging = ON
server_audit_file_path = /pg_data/mysql_audit_log
server_audit_file_rotate_size = 5G
server_audit_file_rotations = 10
server_audit_file_rotate_now = ON
server_audit_file_path 參數(shù)的目錄需要提前創(chuàng)建好,并配置 mysql 屬組,然后重啟 MySQL 服務(wù)。
審計(jì)日志的記錄格式是:
[timestamp],[serverhost],[username],[host],[connectionid],[queryid],[operation],[database],[object],[retcode]
20230830 15:55:51,db4,root,localhost,2,0,CONNECT,,,0
20230830 15:55:51,db4,root,localhost,2,1,QUERY,,'select @@version_comment limit 1',0
20230830 15:55:51,db4,root,localhost,2,2,QUERY,,'select USER()',0
20230830 15:55:56,db4,root,localhost,2,3,QUERY,,'show databases',0
20230830 15:56:16,db4,root,localhost,2,4,QUERY,,'SELECT DATABASE()',0
20230830 15:56:16,db4,root,localhost,2,6,QUERY,op_service_db,'show databases',0
20230830 15:56:16,db4,root,localhost,2,7,QUERY,op_service_db,'show tables',0
20230830 15:56:19,db4,root,localhost,2,19,QUERY,op_service_db,'show tables',0
20230830 15:59:25,db4,root,localhost,2,20,QUERY,op_service_db,'set global server_audit_syslog_ident = \'test01\'',0
4. 卸載審計(jì)插件
執(zhí)行下方 SQL 卸載插件即可:
UNINSTALL PLUGIN 'server_audit';
5. 等保經(jīng)驗(yàn)分享
安裝該插件后,等保工程師提了一些建議,比如審計(jì)日志按天歸檔,存儲(chǔ)到 OSS (對(duì)象存儲(chǔ)) 中,還有就是 error log 也要按天歸檔存儲(chǔ)。
審計(jì)日志歸檔思路:通過 server_audit_file_path 參數(shù)可以切換路徑,切換一個(gè)新路徑,然后將老的日志壓縮上傳到 OSS。
錯(cuò)誤日志歸檔思路:直接拷貝一份到對(duì)象存儲(chǔ)中,然后清空日志文件即可。文章來源:http://www.zghlxwxcb.cn/news/detail-684463.html
5. 總結(jié)
以上就是審計(jì)日志的配置和使用說明,值得注意的是,開通審計(jì)會(huì)增加數(shù)據(jù)庫性能開銷,需要關(guān)注磁盤空間使用情況。文章來源地址http://www.zghlxwxcb.cn/news/detail-684463.html
到了這里,關(guān)于MySQL 使用開源審計(jì)插件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!