Mysql8社區版日誌審計插件

Mysql8社區版日誌審計插件

        過去從Mysql官方自帶general.log日誌的相比其他插件性能是最差的,我們考慮參考行業中較好的插件是MariaDB Audit Plugin, 可惜並不兼容mysql 5.7與mysql 8.0以上版本。

亞馬遜RDS for MySQL的開發團隊已經folk了MariaDB審計日誌插件,並確保與MySQL 8 API兼容,以便在其RDS for MySQL數據庫系列上使用。最近,他們已經在GitHub上公開了這個項目的代碼庫。該插件的源代碼在Github上公開發布,作爲對MySQL和MariaDB用戶社區的一項服務。AWS不爲該插件提供任何保證或支持。目標受衆是具有C++技能的軟件開發人員,他們能夠獨立編譯和使用該插件。這個插件不是官方的,與MySQL沒有關係。

Blog_MySQL-Security

        國外一個同仁已基於AWS源碼編譯二進制版本 ,分爲Mysql 8.0與5.7分支。

Mysql 8.0插件運行機制

來自Mysql 8.0官方

image


配置


1.爲了能夠使用審計插件,你需要在MySQL數據庫服務器的plugin_dir中粘貼server_audit.so文件。

mysql> select @@plugin_dir;
+————————–-----------------+
| @@plugin_dir             |
+————————–-----------------+
| /usr/lib64/mysql/plugin/ |
+————————–-----------------+

1 row in set (0.00 sec)

2.將server_audit.so粘貼在那裏:

mysql>! ls -lh /usr/lib64/mysql/plugin/ total 8.5M -rw-r–r–. 1 root root 597K Jul 26 18:47 server_audit.so
...

啓用插件

mysql>set global server_audit_logging = ON;
Query OK, 0 rows affected (0.00 sec)

啓用查詢事件

mysql> set global server_audit_events = ‘QUERY’;
Query OK, 0 rows affected (0.00 sec)

審計日誌文件

mysql> ! ls -lh /var/lib/mysql
total 188M
-rw-r-----. 1 mysql mysql 1.7K Jul 26 18:50  server_audit.log

Server_audit.log

日誌文件表示爲 UTF-8 格式的逗號分隔變量 (CSV) 文件。日誌文件條目不按先後順序排列。要對條目進行排序,請使用時間戳值。要查看最新事件,您可能需要查看所有日誌文件。

mysql> ! cat /var/lib/mysql/server_audit.log
20220726 18:48:35,localhost.localdomain,root,localhost,10,3,QUERY,,’set global server_audit_logging = ON’,0,,
20220726 18:48:56,localhost.localdomain,root,localhost,10,4,QUERY,,’set global server_audit_events = ’QUERY”,0,,
20220726 18:49:02,localhost.localdomain,root,localhost,10,5,QUERY,,’create database test’,0,,
20220726 18:49:04,localhost.localdomain,root,localhost,10,6,QUERY,,’SELECT DATABASE()’,0,,
20220726 18:49:04,localhost.localdomain,root,localhost,10,8,QUERY,,’show databases’,0,,
20220726 18:49:04,localhost.localdomain,root,localhost,10,9,QUERY,,’show tables’,0,,
20220726 18:49:32,localhost.localdomain,root,localhost,10,10,QUERY,,’create table example_table (id int unsigned primary key auto_increment)’,0,,
20220726 18:49:43,localhost.localdomain,root,localhost,10,11,QUERY,,’insert into example_table(null)’,1064,,
20220726 18:49:48,localhost.localdomain,root,localhost,10,12,QUERY,,’insert into sidnei values (null)’,0,,
20220726 18:49:57,localhost.localdomain,root,localhost,10,18,QUERY,,’select * from example_table’,0,,

日誌格式說明:

image

要獲得關於插件配置的更多細節,請閱讀AWS RDS插件文檔


容器版Mysql

將提前準備的server_audit.so 文件放到 服務器目錄
並且將此文件放到容器內部
docker cp ./server_audit.so mysql:/tmp/


安裝
MariaDB Audit Plugin 插件
進入mysql容器
docker exec -it mysql /bin/bash
mysql -u root -p
密碼


查看插件安裝目錄
show variables like '%plugin%';
Plugin_dir 就是插件的目錄 一般爲/usr/lib/mysql/plugin
將剛纔tmp目錄下的so文件放到對應插件目錄

mv /tmp/server_audit.so /usr/lib/mysql/plugin/


執行安裝命令
install plugin server_audit SONAME 'server_audit.so'


查看插件配置信息
show variables like '%audit%'

默認審計日誌是關閉狀態


開啓日誌記錄
set global server_audit_logging=on
可以配置日誌目錄


默認是
data目錄的server_audit.log文件
set global server_audit_file_path=’/var/log/mysql/server_audit.log’


設置日誌文件大小和個數
set global server_audit_file_rotate_size = 100000000


示例

tapd_61890021_1686729612_748

sysbench性能測試

cpu型號 : Intel(R) Core(TM) i5-8300H CPU @ 2.30GHz
cpu數量 :2核 (4個)
內存 :free -h 4g
硬盤:機械硬盤
MySQL版本 mysql> mysql version; 8.0.27


未啓用插件

SQL statistics:
     queries performed:
         read:                            459116
         write:                           131176
         other:                           65588
         total:                           655880
    transactions:                        32794  (98.26 per sec.)
     queries:                             655880 (1965.26 per sec.)
     ignored errors:                      0      (0.00 per sec.)
     reconnects:                          0      (0.00 per sec.)

General statistics:
     total time:                          333.7351s
     total number of events:              32794

Latency (ms):
          min:                                   28.21
          avg:                                 1998.06
          max:                                77351.35
          95th percentile:                     6960.17
          sum:                             65524533.03

Threads fairness:
     events (avg/stddev):           163.9700/14.71
     execution time (avg/stddev):   327.6227/11.91


開啓插件

SQL statistics:
     queries performed:
         read:                            238182
         write:                           68052
         other:                           34026
         total:                           340260
    transactions:                        17013  (53.20 per sec.)
     queries:                             340260 (1064.04 per sec.)
     ignored errors:                      0      (0.00 per sec.)
     reconnects:                          0      (0.00 per sec.)

General statistics:
     total time:                          319.7790s
     total number of events:              17013

Latency (ms):
          min:                                   40.41
          avg:                                 3755.89
          max:                               103907.93
          95th percentile:                    10917.50
          sum:                             63898979.23

Threads fairness:
     events (avg/stddev):           85.0650/9.14
     execution time (avg/stddev):   319.4949/0.02


結論


      使用審計插件必然有MySQL SERVER性能損失,這是一個安全與性能的權衡點。 如果你使用的是MySQL 8社區版,並且需要啓用審計日誌,來自AWS開發團隊的插件可以是一個不錯的選擇。然而,你應該記住,這個插件沒有AWS的支持--他們在README.md中說的很清楚。在數據庫服務器不是那麼關鍵的情況下,它可能是有用的。如果一個非常重要的數據庫服務器在生產中發生了一些錯誤,修復錯誤可能需要時間。如果你需要使用這個功能,我建議遷移到MariaDB服務器,因爲你可以在MariaDB社區的支持下使用一個非常成熟的插件。還有一些插件參考

其他參考


今天先到這兒,希望對雲原生,技術領導力, 企業管理,系統架構設計與評估,團隊管理, 項目管理, 產品管管,團隊建設 有參考作用 , 您可能感興趣的文章:
領導人怎樣帶領好團隊
構建創業公司突擊小團隊
國際化環境下系統架構演化
微服務架構設計
視頻直播平臺的系統架構演化
微服務與Docker介紹
Docker與CI持續集成/CD
互聯網電商購物車架構演變案例
互聯網業務場景下消息隊列架構
互聯網高效研發團隊管理演進之一
消息系統架構設計演進
互聯網電商搜索架構演化之一
企業信息化與軟件工程的迷思
企業項目化管理介紹
軟件項目成功之要素
人際溝通風格介紹一
精益IT組織與分享式領導
學習型組織與企業
企業創新文化與等級觀念
組織目標與個人目標
初創公司人才招聘與管理
人才公司環境與企業文化
企業文化、團隊文化與知識共享
高效能的團隊建設
項目管理溝通計劃
構建高效的研發與自動化運維
某大型電商雲平臺實踐
互聯網數據庫架構設計思路
IT基礎架構規劃方案一(網絡系統規劃)
餐飲行業解決方案之客戶分析流程
餐飲行業解決方案之採購戰略制定與實施流程
餐飲行業解決方案之業務設計流程
供應鏈需求調研CheckList
企業應用之性能實時度量系統演變

如有想了解更多軟件設計與架構, 系統IT,企業信息化, 團隊管理 資訊,請關注我的微信訂閱號:

MegadotnetMicroMsg_thumb1_thumb1_thu[2]

作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。 該文章也同時發佈在我的獨立博客中-Petter Liu Blog。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章