審計概念
審計:記錄用戶的操作,方便以后查證,但生產(chǎn)環(huán)境
數(shù)據(jù)庫本身不建議
開啟,會影響性能,可以使用第三方
實現(xiàn)審計。
一、MYSQL8開源審計mysql-audit
mysql5.7企業(yè)版
自帶審計功能,需要付費
。社區(qū)版
可以使用McAfee
提供的開源軟件mysql Audit Pluging
項目地址:https://github.com/trellix-enterprise/mysql-audit
mysql-audit安裝配置
0、下載解壓插件
# 下載插件壓縮包
wget -c https://github.com/trellix-enterprise/mysql-audit/releases/download/v1.1.13/audit-plugin-mysql-8.0-1.1.13-1008-linux-x86_64.zip
# 解壓
unzip audit-plugin-mysql-8.0-1.1.13-1008-linux-x86_64.zip
# 進(jìn)入lib目錄
cd audit-plugin-mysql-8.0-1.1.13-1008/lib
# 賦予可執(zhí)行權(quán)限
chmod +x libaudit_plugin.so
# 修改屬主和屬組為msyql:mysql
chown mysql:mysql libaudit_plugin.so
1、查看mysql的插件位置
-- 查看插件的位置
SHOW global variables LIKE '%plugin_dir%';
2、上傳庫文件到插件目錄
# 復(fù)制到插件目錄
cp audit-plugin-mysql-8.0-1.1.13-1008/lib/libaudit_plugin.so /usr/lib64/mysql/plugin/
3. 修改my.cnf
# 停止mysqld服務(wù)
systemctl stop mysqld
修改my.cnf
配置文件
[mysqld]
# 加載名為 libaudit_plugin.so 的AUDIT審計插件
plugin-load=AUDIT=libaudit_plugin.so
# 啟用審計日志以JSON格式記錄
audit_json_file=on
# 指定事件審計文件路徑
audit_json_log_file=/var/log/mysql-audit.json
# 指定審計事件類型
## 如果不指定audit_record_cmds,所有DDL,DML全記錄
audit_record_cmds='insert,delete,update,create,drop,alter,grant,truncate'
啟動mysqld服務(wù)
-- 啟動mysqld服務(wù)
systemctl start mysqld
4、安裝插件
-- root登錄mysql
mysql -uroot
-- 安裝audit插件
install plugin audit soname 'libaudit_plugin.so';
-- 查看audit插件版本
SHOW global status LIKE 'audit_version';
5、查看mysql-audit日志
json查看工具:https://blog.csdn.net/omaidb/article/details/125581170
# 查安裝json查看工具jq
dnf install jq -y
# 查看最后100條日志
tail -100 /var/log/mysql-audit.json
# 用jq查看json格式日志
tail -100 /var/log/mysql-audit.json |jq
安裝插件報錯
安裝libaudit_plugin.so
插件報錯。
解決辦法:
計算mysqld
的偏移量
,重新指定mysqld
偏移量。
1、計算偏移量
# 安裝gdb包
dnf install -y gdb
# 找到offset-extract.sh腳本
# 使用offset-extract.sh腳本計算偏移量
offset-extract.sh /usr/sbin/mysqld
2、將偏移量添加到my.cnf中
[mysqld]
audit_offsets=計算出的偏移量
3、添加偏移量依然報錯
二、MYSQL自帶的init-connect+binlog實現(xiàn)mysql審計
1、創(chuàng)建一份存放連接信息的表
-- 創(chuàng)建一份存放連接信息的表
CREATE database auditdb DEFAULT CHARSET utf8mb4;
-- 進(jìn)入auditdb庫
use auditdb;
-- 創(chuàng)建auditdb.accesslog(訪問日志)表
CREATE TABLE auditdb.accesslog(
ID INT PRIMARY KEY auto_increment,
ConnectionID INT,
ConnUserName VARCHAR(30),
PrivMatchName VARCHAR(30),
LoginTime timestamp
);
2、配置權(quán)限
-- 配置權(quán)限
-- 向mysql.db表中插入一條記錄,授權(quán)所有用戶在任意主機上訪問auditdb數(shù)據(jù)庫,并具有select和insert的操作權(quán)限。
-- host、db、user、select_priv和insert_priv是該表中的字段名;
-- %代表通配符,表示任何IP地址都可以使用此記錄匹配;
-- 'auditdb'表示要授權(quán)的數(shù)據(jù)庫名稱,這里為auditdb;
-- ''表示要授權(quán)的用戶名稱,這里為空字符串,表示所有用戶都能匹配上此記錄;
-- YY表示該用戶對auditdb數(shù)據(jù)庫有select和insert操作的權(quán)限。
INSERT into mysql.db(host, db, user, select_priv, insert_priv)
values('%', 'auditdb', '', 'Y', 'Y');
-- 提交事務(wù)
cmomit;
-- 應(yīng)用權(quán)限配置
FLUSH PRIVILEGES;
3、配置init-connect
# 此項配置可以用于記錄所有數(shù)據(jù)庫連接的基本信息,以方便審計和監(jiān)控。
# init-connect:在每個新客戶端連接成功后,將執(zhí)行SQL語句
# 往名為"auditdb.accesslog"的表中插入一條記錄,該記錄包含連接ID(ConnectionID)、連接用戶名(ConnUserName)、權(quán)限匹配名(PrivMatchName)和登錄時間(LoginTime)等信息。
## connection_id()函數(shù)用于獲取當(dāng)前連接的ID,
## user()函數(shù)用于獲取當(dāng)前連接的用戶名,
## current_use()函數(shù)用于獲取當(dāng)前連接所使用的權(quán)限匹配名
## now()函數(shù)則用于獲取當(dāng)前的系統(tǒng)時間。
init-connect='INSERT into auditdb.accesslog(ConnectionID,ConnUserName,PrivMatchName,LoginTime) values(connection_id(),user(),current_use(),now());'
# 指定binlog的存儲路徑和文件名前綴
## binlog記錄所有對數(shù)據(jù)庫的修改操作,包括插入、更新和刪除
log_bin=/var/lib/mysql/binlog
# 指定binlog索引文件的存儲路徑和文件名
log_bin_index=/var/lib/mysql/binlog.index
重啟mysqld服務(wù)
# 重啟msyql服務(wù)
systemctl restart mysqld
4、記錄和跟蹤測試
如果是root
登錄,不會記錄
信息。
# 使用 mysqlbinlog 工具讀取名為 binlog.000001 的二進(jìn)制日志文件
## --start-datetime 和 --stop-datetime 參數(shù)分別指定了要搜索的時間范圍,即從 2018 年 4 月 12 日 16:53:00 開始,到 2018 年 4 月 12 日 16:55:00 結(jié)束
## -i 參數(shù)表示忽略大小寫
## grep -B 20 顯示匹配的前20行
mysqlbinlog --start-datetime='2018-04-12 16:53:00' --stop-datetime='2018-04-12 16:55:00' binlog.000001 |grep -i '關(guān)鍵字' -B 20
文章來源:http://www.zghlxwxcb.cn/news/detail-492981.html
-- 查看訪問日志表
slect * from auditdb.accesslog;
文章來源地址http://www.zghlxwxcb.cn/news/detail-492981.html
到了這里,關(guān)于MYSQL8安全之審計管理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!