Download - MySQL Audit 機制應用技術
MySQL Audit 機制應用技術
2/21
大綱Audit Log 安裝與設定Audit Log 機制Audit Log DB 與備份環境建置Audit log 入庫程式操作說明應用與效益附件
3/21
Audit Log Plugin 安裝與設定安裝指令 方法一
• mysql>INSTALL PLUGIN audit_log SONAME 'audit_log.so';
方法二 : my.cnf• [mysqld] plugin-load=audit_log.so• 需重啟 MySQL設定 Audit format 與 rotate sizes
在 my.cnf• [mysqld]
audit_log_format = NEW audit_log_rotate_on_size = 102400
• 需重啟 MySQL
4/21
Audit Log Plugin 安裝與設定確認 Audit log 參數設定
參數設定請參考附件-參數說明
5/21
Audit Log rotate當 audit log size 超過設定的audit_log_rotate_on_size (100 KB) ,將 rotate產生 xml 檔
6/21
Audit Log 機制Audit log files (XML)
DB name :audit_information Audit row
data files
1. Audit log rotate
2. Parsing and converting
3. Importing data to DB
MySQL DB Server
4. Move audit log files to archive
Backup Server
7/21
Audit Log DB 環境建置建立 audit_information db ,提供儲存 audit log內容 執行 audit_info.sql
儲存 rotate的 xml檔內容
紀錄已處理的 xml檔
8/21
Audit Log DB 環境建置檢查 OS 是否有安裝 perl-XML-Simple 套件
9/21
Audit Log 備份環境建置DB 伺服器與遠端備份伺服器建立 ssh 認證,讓備份端信任來自 Online 端的連線及資料傳送 DB 伺服器 (10.144.150.159) 備份伺服器 (10.144.150.158)
將 pub key傳送到備份伺服器,建立通道
DB伺服器端建立 ssh key
10/21
Audit Log 入庫程式名稱 audit_log_parsing.pl程式參數設定
DB name主機 IP連接埠DB連線帳號DB連線密碼
MySQL 安裝路徑MySQL Data Dir備份伺服器 IPAudit Log備份路徑
執行程式當下所在路徑欄位資料間的分隔符號欄位資料的前後字元
11/21
Audit Log 入庫步驟 1 :將 data dir 的 audit log xml 檔轉換為row data
insert%|%201%|%%|%%|%127.0.0.1%|%%|%Query%|%%|%%|%%|%%|%1656_2015-08-10T07:46:05%|%%|%^INSERT INTO audit_information.AUDIT_PARSED (COMMAND_CLASS, CONNECTIONID, DB_NAME, HOST_NAME, IP_ADDRESS, MYSQL_VERSION, COMMAND_NAME, OS_LOGIN, OS_VERSION, PRIV_USER, PROXY_USER, RECORD_ID, SERVER_ID, SQL_TEXT, STARTUP_OPTIONS, COMMAND_STATUS, STATUS_CODE, DATE_TIMESTAMP, USER_NAME, LOG_VERSION) values ('show_databases', '65', '', '', '127.0.0.1', '', 'Query', '', '', '', '', '429_2015-08-06T08:01:46', '', 'show databases', '', '0', '0', '2015-08-10T03:51:04 UTC', 'mysqldba[mysqldba] @ [127.0.0.1]', '')^%|%%|%0%|%0%|%2015-08-10T07:46:05 UTC%|%mysqldba[mysqldba] @ [127.0.0.1]%|%
Row data 格式
12/21
Audit Log 入庫步驟 2 :將產出的 row data 匯入 DB audit_information Audit log 內容匯入表格 audit_parsed 紀錄匯入成功的 audit log xml 於表格 audit_history
13/21
Audit Log 入庫步驟 3 : Audit log 備份管理 將 Audit log (*.xml) 與 raw data(*.txt) 搬移至備份伺服器上。
14/21
Audit Log 入庫步驟 4 :執行紀錄與障礙查找
15/21
應用與效益查核特定帳號是否執行過 insert 之 SQL 語句
16/21
應用與效益定期 rotate audit log ,並搬移至備份伺服器上,避免檔案過大影響資料庫效能。資料庫異動的軌跡全紀錄在資料表中,便於以關鍵字進行過濾查詢。由於資料表採用 ARCHIVE storage engine ,可防止 DBA 竄改稽核紀錄內容。
17/21
附件
18/21
參數說明audit_log_buffer_size Default 值 : 1048576 bytes 單位 : bytes
audit_log_file 檔名 : audit.log 可自訂檔案路徑
audit_log_flush 值 =1 時 , the audit log plugin closes and reopens its
log file to flush it. If audit_log_rotate_on_size is greater than 0, setting
audit_log_flush has no effect.
19/21
參數說明audit_log_policy ALL: Log all events NONE:Log nothing LOGINS:Log only login events QUERIES:Log only query events
audit_log_strategy ASYNCHRONOUS:Log asynchronously, wait for space in
output buffer PERFORMANCE:Log asynchronously, drop request if
insufficient space in output buffer SEMISYNCHRONOUS:Log synchronously, permit
caching by operating system 建議值 =ASYNCHRONOUS
20/21
參數說明audit_log_rotate_on_size 預設值為 0 ,不 rotate 可設定 rotate 值,單位 Byte ,但要 4096 倍數
audit_log_format 預設為 OLD 若要調整為 NEW ,需更改 my.cnf 的參數
audit_log_format=NEW ,再重啟 MySQL
報告完畢 敬請指正