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
備份伺服器IP
Audit 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
MySQL Audit 機制應用技術

MySQL Audit 機制應用技術