MySQL 使用開源審計(jì)插件示例詳解
前言
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. 總結(jié)
以上就是審計(jì)日志的配置和使用說明,值得注意的是,開通審計(jì)會(huì)增加數(shù)據(jù)庫性能開銷,需要關(guān)注磁盤空間使用情況。
到此這篇關(guān)于MySQL 使用開源審計(jì)插件的文章就介紹到這了,更多相關(guān)MySQL審計(jì)插件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mysql數(shù)據(jù)庫中把varchar類型轉(zhuǎn)化為int類型的方法
這篇文章主要介紹了Mysql數(shù)據(jù)庫中把varchar類型轉(zhuǎn)化為int類型的方法的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07一文了解MySQL Optimizer Trace的神奇功能
這篇文章主要為大家介紹了一文了解MySQL Optimizer Trace的神奇功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06MySQL表的內(nèi)外連接和視圖使用實(shí)戰(zhàn)練習(xí)
這篇文章主要給大家介紹了關(guān)于MySQL表的內(nèi)外連接和視圖使用的相關(guān)資料,MySQL的內(nèi)外連接查詢是用于將兩個(gè)或多個(gè)表中的數(shù)據(jù)進(jìn)行關(guān)聯(lián)查詢的一種方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01