MySQL審計外掛-MariaDB Audit Plugin
* GreatSQL社區原創內容未經授權不得隨意使用,轉載請聯系小編並注明來源。
前言
MariaDB Auditing Plugin的安裝
檢視audit相關引數
啟用審計功能
功能測試
前言
資料庫審計功能主要將使用者對資料庫的各類操作行為記錄審計日誌,以便日後進行跟蹤、查詢、分析,以實現對使用者操作的監控和審計。審計是一項非常重要的工作,也是企業資料安全體系的重要組成部分,等保測評中也要求有審計日誌。對於 DBA 而言,資料庫審計也極其重要,特別是發生人為事故後,審計日誌便於進行責任追溯,問題查詢。
當前 MySQL 社群版本並沒有提供相關的外掛使用,雖然 MySQL 提供有 binlog 及 general log ,這二者雖然具備部分審計功能,但一般不當做審計日誌來看待。
常見的審計外掛有 MariaDB Audit Plugin、Percona Audit Log Plugin、McAfee MySQL Audit Plugin 三種,MariaDB 自帶的審計外掛比較適合用於 MySQL 社群版,下面我們來學習下如何使用審計外掛來實現審計功能。
首先我們需要安裝一個MySQL,該步驟就先跳過一下。
MariaDB Auditing Plugin的安裝
MariaDB 審計外掛的名稱是 server_audit.so(Windows系統下是 server_audit.dll ),要注意的是,審計外掛一直在更新,不同版本的審計外掛功能也不同,推薦使用 >= 1.4.4 版本的外掛。
由於 MariaDB Auditing Plugin 整合在MariaDB裡面,沒有單獨提供,所以我們需要先下載一個MariaDB。
下面我們以 CentOS 系統 MySQL 5.7 版本為例來安裝下審計外掛:
MariaDB下載地址:
進入plugin子目錄,檢視下是否要另外安裝依賴
#tar xvpf tar xvpf mariadb-5.5.64-linux-systemd-x86_64.tar.gz
#cd mariadb-10.2.44-linux-systemd-x86_64/lib/plugin
#ldd server_audit.so
ldd: warning: you do not have execution permission for `./server_audit.so'
linux-vdso.so.1 => (0x00007ffdc613d000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f2b1c722000)
libc.so.6 => /lib64/libc.so.6 (0x00007f2b1c354000)
/lib64/ld-linux-x86-64.so.2 (0x00007f2b1cb4f000)
檢視MySQL plugin的存放地址
mysql> show global variables like 'plugin_dir';
+---------------+--------------------------------+
| Variable_name | Value |
+---------------+--------------------------------+
| plugin_dir | /usr/local/mysql57/lib/plugin/ |
+---------------+--------------------------------+
1 row in set (0.00 sec)
將mariadb 的審計外掛 server_audit.so檔案複製到該路徑下,並更改外掛屬主及許可權
#cp server_audit.so /usr/local/mysql57/lib/plugin/
#chmod +x /usr/local/mysql57/lib/plugin/server_audit.so
#chown mysql.mysql /usr/local/mysql57/lib/plugin/server_audit.so
線上安裝外掛
mysql> INSTALL PLUGIN server_audit SONAME 'server_audit.so';
Query OK, 0 rows affected (0.08 sec)
mysql> show plugins;
+----------------------------+--------+--------------------+-----------------+---------+
| Name | Status | Type | Library | License |
+----------------------------+--------+--------------------+-----------------+---------+
...
| SERVER_AUDIT | ACTIVE | AUDIT | server_audit.so | GPL |
+----------------------------+--------+--------------------+-----------------+---------+
檢視audit相關引數
mysql> show variables like '%server_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 |
+-------------------------------+-----------------------+
16 rows in set (0.00 sec)
引數說明
server_audit_events:指定記錄事件的型別,可以用逗號分隔的多個值(connect,query,table),預設為空代表審計所有事件 server_audit_excl_users:使用者白名單,該列表中的使用者行為將不記錄 server_audit_file_path:儲存日誌的檔案,預設在資料目錄的 server_audit.log 檔案中 server_audit_file_rotate_now:強制日誌檔案輪轉 server_audit_file_rotate_size:限制日誌檔案的大小 server_audit_file_rotations:指定日誌檔案的數量,如果為0日誌將從不輪轉 server_audit_incl_users:指定哪些使用者的活動將記錄,connect將不受此變數影響,該變數比 server_audit_excl_users 優先順序高 server_audit_loc_info: 內部引數,用不到 server_audit_logging:啟動或關閉審計,預設OFF,啟動 ON server_audit_mode:標識版本,用於開發測試 server_audit_output_type:指定日誌輸出型別,可為SYSLOG或FILE server_audit_query_log_limit: 記錄中查詢字串的長度限制。預設為1024 server_audit_syslog_facility:預設為LOG_USER,指定facility server_audit_syslog_ident:設定ident,作為每個syslog記錄的一部分 server_audit_syslog_info:指定的info字串將新增到syslog記錄 server_audit_syslog_priority:定義記錄日誌優先順序
啟用審計功能
set global server_audit_logging=on;
set global server_audit_events='connect,query,table,query_ddl,query_dcl,query_dml_no_select';
set global server_audit_file_path='/var/log/server_audit.log';
set global server_audit_file_rotate_size=104857600;
[mysqld]下新增以下配置,使得配置永久生效:
server_audit_logging=on
server_audit_events=connect,query,table,query_ddl,query_dcl,query_dml_no_select
server_audit_file_path=/var/log/server_audit.log
server_audit_file_rotate_size=104857600
功能測試
從另外一臺遠端連線到資料庫上,執行一些操作
[root@mgr2 ~]# mysql -uauth -p123456 -h192.168.***.*** -P***
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.26-log Source distribution
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql> create database test;
Query OK, 1 row affected (0.03 sec)
mysql> use test;
Database changed
mysql> create table t1(id int);
Query OK, 0 rows affected (0.09 sec)
mysql> insert into t1 values (1);
Query OK, 1 row affected (0.02 sec)
mysql> delete from t1 where id=1;
Query OK, 1 row affected (0.03 sec)
mysql> exit
Bye
[root@mgr2 ~]# mysql -uauth -p12345 -h192.168.***.*** -P***
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'auth'@'192.168.***.*** (using password: YES)
檢視相應日誌升級對應的操作記錄
20220723 21:28:34,mgr3,auth,192.168.*.*,3,0,CONNECT,,,0
20220723 21:28:34,mgr3,auth,192.168.*.*,3,9,QUERY,,'select @@version_comment limit 1',0
20220723 21:28:47,mgr3,auth,192.168.*.*,3,10,QUERY,,'show databases',0
20220723 21:28:57,mgr3,auth,192.168.*.*,3,11,QUERY,,'create database test',0
20220723 21:28:59,mgr3,auth,192.168.*.*,3,12,QUERY,,'SELECT DATABASE()',0
20220723 21:28:59,mgr3,auth,192.168.*.*,3,14,QUERY,test,'show databases',0
20220723 21:28:59,mgr3,auth,192.168.*.*,3,15,QUERY,test,'show tables',0
20220723 21:29:09,mgr3,auth,192.168.*.*,3,16,QUERY,test,'create table t1(id int)',0
20220723 21:29:17,mgr3,auth,192.168.*.*,3,17,QUERY,test,'insert into t1 values (1)',0
20220723 21:29:24,mgr3,auth,192.168.*.*,3,18,QUERY,test,'delete from t1 where id=1',0
20220723 21:29:48,mgr3,auth,192.168.*.*,3,0,DISCONNECT,test,,0
20220723 21:29:59,mgr3,auth,192.168.*.*,4,0,FAILED_CONNECT,,,1045
至此,我們完成審計外掛的初步使用,從審計日誌內容中我們可以看出,記錄的格式還是很清晰詳細的,每列內容都是需要的,根據日誌很容易查到對應的操作。不過審計外掛也是有優缺點的,優劣勢整理如下:
server_audit 審計外掛優勢:
豐富的審計內容:包括使用者連線,關閉,DML操作,儲存過程,觸發器,事件等。 靈活的審計策略:可以自定義審計事件,例如過濾掉select查詢,或者排除審計某個使用者等。 靈活方便:免費使用且安裝方便,可以線上開啟和停用審計功能。
server_audit 審計外掛劣勢:
開啟審計會增加資料庫的效能開銷,並佔用磁碟空間。 日誌格式不夠豐富,不能自定義輸出格式。
小編提醒:拿MariaDB的so去MySQL裡install,這種方式很容易導致 audit plugin工作異常,不推薦這麼做。強烈建議使用GreatSQL,自帶 audit plugin。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024420/viewspace-2936418/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL審計auditMySql
- MySQL審計外掛介紹MySql
- AUDIT審計(2)
- MySQL 5.7.24安裝MySQL審計外掛小記MySql
- mysql 5.7新增server_audit 安全審計功能MySqlServer
- SQL Server 審計(Audit)SQLServer
- ORACLE AUDIT審計(1)Oracle
- fluentd 推送 mariadb audit log
- 【AUDIT]Oracle審計配置及常用sqlOracleSQL
- FGA審計及audit_trail引數AI
- Grafana外掛Plugin中文漢化GrafanaPlugin
- 自定義Gradle-Plugin 外掛GradlePlugin
- Oracle Audit 審計功能的認識與使用Oracle
- webpack(9)plugin外掛功能的使用WebPlugin
- 基於等保3.0的MySQL資料庫審計日誌外掛實踐MySql資料庫
- Flutter Plugin外掛開發填坑指南FlutterPlugin
- 深入解析webpack 外掛html-webpack-pluginWebHTMLPlugin
- Flutter外掛(Plugin)開發 - Android視角FlutterPluginAndroid
- [外掛推薦] 使用 PHPStorm 中的 Laravel Plugin 外掛提升開發效率PHPORMLaravelPlugin
- 淺析html webpack plugin外掛的使用教程HTMLWebPlugin
- mini-css-extract-plugin外掛快速入門CSSPlugin
- MySQL外掛呼叫MySql
- Oracle 標準審計,設定AUDIT_SYSLOG _LEVEL引數Oracle
- mariadb審計日誌通過 logstash匯入 hiveHive
- vim外掛管理器,我選vim-pluginPlugin
- Qt自定義外掛plugin的開發和呼叫QTPlugin
- oc-plugin-music 音樂聚合搜尋外掛Plugin
- Maven 教程(21)— maven-compiler-plugin 外掛詳解MavenCompilePlugin
- 預渲染外掛prerender-spa-plugin使用總結Plugin
- maven-compiler-plugin外掛引數配置詳解MavenCompilePlugin
- Learning MySQL and MariaDBMySql
- Vite外掛開發紀實:vite-plugin-monitor(上)VitePlugin
- Vite外掛開發紀實:vite-plugin-monitor(下)VitePlugin
- [Vue CLI 3] 外掛解析之 @vue/cli-plugin-bVuePlugin
- vue預渲染之prerender-spa-plugin外掛應用VuePlugin
- RPC的基礎:調研EOS外掛http_pluginRPCHTTPPlugin
- prerender-spa-plugin 預渲染外掛的使用說明Plugin
- webpack筆記——在html-webpack-plugin外掛中提供給其它外掛是使用的hooksWeb筆記HTMLPluginHook