Mysql8社區版日誌審計插件

来源:https://www.cnblogs.com/wintersun/archive/2023/06/18/17489838.html
-Advertisement-
Play Games

Mysql8社區版日誌審計插件 過去從Mysql官方自帶general.log日誌的相比其他插件性能是最差的,我們考慮參考行業中較好的插件是MariaDB Audit Plugin, 可惜並不相容mysql 5.7與mysql 8.0以上版本。亞馬遜RDS for MySQL的開發團隊已經folk了 ...


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。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • (續前文) ## 9、Service實現類代碼示例 ​ ​ 以用戶管理模塊為例,展示Service實現類代碼。用戶管理的Service實現類為UserManServiceImpl。​UserManServiceImpl除了沒有deleteItems方法外,具備CRUD的其它常規方法。實際上​User ...
  • 本文主要介紹在之家廣告業務系統中運用任務編排治理工具的場景及其可以解決的問題,講解任務編排框架的核心要點,以及向大家演示一個任務編排框架的基本結構,讓大家對任務編排工具增強業務開發效率,提高研發質量有更深刻的理解。 ...
  • # Go 語言之 zap 日誌庫簡單使用 ## 預設的 Go log log:https://pkg.go.dev/log ```go package main import ( "log" "os" ) func init() { log.SetPrefix("LOG: ") // 設置首碼 f, ...
  • ## 前言 使用 ABP vNext(下文簡稱 ABP)時,通常都是從 cli 開始新建模板,從一個空項目開始。對已經存續的項目來說,現有的數據,特別是用戶等核心數據需要進行遷移。 老的項目,隨著規模越來越大,每次修改都需要更改非常多地方,最重要的是,共用資料庫使得維護起來需要小心翼翼。為了後續維護 ...
  • 經過前幾篇文章的講解,初步瞭解ASP.NET Core MVC項目創建,啟動運行,以及命名約定,創建控制器,視圖,模型,接收參數,傳遞數據ViewData,ViewBag,路由,頁面佈局,wwwroot和客戶端庫,Razor語法,EnityFrameworkCore與資料庫,HttpContext,... ...
  • # 個人博客文章歸檔實現📑 # 前言 隨著博客的文章越來越多,那麼歸檔就顯得尤為重要,然後最近也是沒什麼課,加緊更新一下博客,之前也是更新了評論、留言板。 然後博客是使用的前後的不分離的項目,數據返回一般都是用的.NET的強類型數據返回,也會用到分佈視圖。 重點是一段sql查詢困惱我許久,在後端接 ...
  • 大家好,我是 god23bin。歡迎來到《一分鐘學一個 Linux 命令》系列,每天只需一分鐘,記住一個 Linux 命令不成問題。今天要說的是 ps 命令。 ...
  • MySQL作為一個流行的開源關係型資料庫管理系統,它可以運行在多種平臺上,支持多種存儲引擎,提供了靈活的數據操作和管理功能。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...