mysql audit 機制應用技術

21
MySQL Audit 機機機機機機

Upload: jamie-lee

Post on 17-Feb-2017

31 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: MySQL Audit 機制應用技術

MySQL Audit 機制應用技術

Page 2: MySQL Audit 機制應用技術

2/21

大綱Audit Log 安裝與設定Audit Log 機制Audit Log DB 與備份環境建置Audit log 入庫程式操作說明應用與效益附件

Page 3: MySQL Audit 機制應用技術

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

Page 4: MySQL Audit 機制應用技術

4/21

Audit Log Plugin 安裝與設定確認 Audit log 參數設定

參數設定請參考附件-參數說明

Page 5: MySQL Audit 機制應用技術

5/21

Audit Log rotate當 audit log size 超過設定的audit_log_rotate_on_size (100 KB) ,將 rotate產生 xml 檔

Page 6: MySQL Audit 機制應用技術

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

Page 7: MySQL Audit 機制應用技術

7/21

Audit Log DB 環境建置建立 audit_information db ,提供儲存 audit log內容 執行 audit_info.sql

儲存 rotate的 xml檔內容

紀錄已處理的 xml檔

Page 8: MySQL Audit 機制應用技術

8/21

Audit Log DB 環境建置檢查 OS 是否有安裝 perl-XML-Simple 套件

Page 9: MySQL Audit 機制應用技術

9/21

Audit Log 備份環境建置DB 伺服器與遠端備份伺服器建立 ssh 認證,讓備份端信任來自 Online 端的連線及資料傳送 DB 伺服器 (10.144.150.159) 備份伺服器 (10.144.150.158)

將 pub key傳送到備份伺服器,建立通道

DB伺服器端建立 ssh key

Page 10: MySQL Audit 機制應用技術

10/21

Audit Log 入庫程式名稱 audit_log_parsing.pl程式參數設定

DB name主機 IP連接埠DB連線帳號DB連線密碼

MySQL 安裝路徑MySQL Data Dir備份伺服器 IPAudit Log備份路徑

執行程式當下所在路徑欄位資料間的分隔符號欄位資料的前後字元

Page 11: MySQL Audit 機制應用技術

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 格式

Page 12: MySQL Audit 機制應用技術

12/21

Audit Log 入庫步驟 2 :將產出的 row data 匯入 DB audit_information Audit log 內容匯入表格 audit_parsed 紀錄匯入成功的 audit log xml 於表格 audit_history

Page 13: MySQL Audit 機制應用技術

13/21

Audit Log 入庫步驟 3 : Audit log 備份管理 將 Audit log (*.xml) 與 raw data(*.txt) 搬移至備份伺服器上。

Page 14: MySQL Audit 機制應用技術

14/21

Audit Log 入庫步驟 4 :執行紀錄與障礙查找

Page 15: MySQL Audit 機制應用技術

15/21

應用與效益查核特定帳號是否執行過 insert 之 SQL 語句

Page 16: MySQL Audit 機制應用技術

16/21

應用與效益定期 rotate audit log ,並搬移至備份伺服器上,避免檔案過大影響資料庫效能。資料庫異動的軌跡全紀錄在資料表中,便於以關鍵字進行過濾查詢。由於資料表採用 ARCHIVE storage engine ,可防止 DBA 竄改稽核紀錄內容。

Page 17: MySQL Audit 機制應用技術

17/21

附件

Page 18: MySQL Audit 機制應用技術

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.

Page 19: MySQL Audit 機制應用技術

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

Page 20: MySQL Audit 機制應用技術

20/21

參數說明audit_log_rotate_on_size 預設值為 0 ,不 rotate 可設定 rotate 值,單位 Byte ,但要 4096 倍數

audit_log_format 預設為 OLD 若要調整為 NEW ,需更改 my.cnf 的參數

audit_log_format=NEW ,再重啟 MySQL

Page 21: MySQL Audit 機制應用技術

報告完畢 敬請指正