MySQL審計插件安裝使用說明文檔--升級版
目的
基於之前設計開發的mysql審計插件,以及《MySQL審計插件安裝使用說明文檔》http://www.BkJia.com/database/201207/143906.html 的內容介紹,對完善後的mysql審計插件進行補充和說明。主要對新增內容進行詳細說明,進一步完善審計插件的功能。
www.2cto.com
新增內容
針對之前版本中存在的不足,功能不夠完善的問題,對MySQL審計插件進行進一步的開發和完善。新增內容主要有:
1、增加審計數據庫、數據表功能。
之前版本中沒有實現該功能,在當前版本中,將審計選項中audit_dbs、audit_tables的處理實現。可以審計某些數據庫,或者某些數據表,有利於針對不同應用系統的特殊應用。從而配合審計粒度,對審計內容進行進一步的細化和定制。
2、增加忽略審計的用戶、數據庫、數據表功能。
鑒於審計應用的特殊性,添加忽略的審計用戶、數據庫、數據表功能。可以實現忽略某個或某些用戶的操作記錄;忽略某個或某些數據庫的操作記錄;忽略某個表的操作記錄。這樣可以使得當審計的內容較多,而審計中需要剔除某些不必要的審計內容的情況下,這些參數可以有效簡化審計的選項配置。
增加的配置文件的選項:
www.2cto.com
選項
功能
ignore_users
忽略的用戶
ignore_dbs
忽略的數據庫
ignore_tables
忽略的數據表
www.2cto.com
選項的設置格式在配置文件中給出了具體的說明,類似audit_users、audit_dbs、audit_tables選項。
在添加忽略的審計用戶、數據庫、數據表與審計對象發生沖突時,將按照忽略優先的原則進行。例如:audit_dbs = important、audit_tables = test.test、ignore_dbs = test,ignore_tables = important.test,那麼審計的內容會首先忽略important.test表的所有操作,而審計test.test數據表的所有操作,然後忽略test數據庫的所有操作,審計important數據看的操作。
3、增加審計操作的數據庫信息。
由於操作的sql語句中幾乎不會直接寫操作的數據庫,而僅靠sql語句不能有效的辨識操作的數據庫。在存在不同數據庫中有相同數據表的情況下,數據庫審計不能有效的跟蹤審計內容。增加數據庫信息,可以有效的提高sql審核的內容。
文件輸出格式
www.2cto.com
文件格式分為兩種,分別為連接審計和操作審計。
1、連接審計
連接相關的審計日志信息的格式如下所示。
具體的:
[2012-06-20 15:40:39]:審計的時間。
[CONNECT]:為連接的類型;
status:為連接成功(0)或者失敗(錯誤號)的狀態;
user:為連接的用戶名;
external-user:為外部連接的用戶,在使用中間件或者代理服務的時候有效;
proxy-user:為代理服務的用戶名;
host:表示連接的主機名;
ip:連接的ip地址;
database:表示連接的數據庫名。
www.2cto.com
[2012-06-20 15:40:39] [CONNECT] status: # ; thread_id: # ; user: XXX ; external-user: XXX ; proxy-user: XXX ; host: XXX ; ip: ###.###.###.### ; database: XXX
2、操作審計
操作相關的審計日志信息的格式如下所示。操作相關的命令包括CREATE、DROP、ALTER、INSERT、UPDATE、DELETE、GRANT、REVOKE等對數據或數據庫有影響的操作。以下以CREATE為例,進行詳細說明。
具體的:
[2012-06-20 15:40:39]:審計的時間。
www.2cto.com
[CREATE]為操作的類型;
error_code:為操作的錯誤碼,操作成功為0;
thread_id:執行操作的線程id;
user:執行操作的用戶名;
command:操作命令的類型,是數據庫內部的定義,數據相關操作一般為Query;
databases:SQL語句涉及到的所有數據庫。
query:操作的SQL語句。
charset:操作的字符集類型;
time:執行操作的時間點,該值為從1970年以來的長整數。
rows:執行操作影響數據的行數。
[2012-06-20 15:40:39] [CREATE] error_code:X # thread_id:X # user:X # command:X #databases:X # query:X # charset:X # time:X # rows:X
www.2cto.com
數據表定義
CREATE TABLE mysql.audit (
`audit_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`command` varchar(20) NOT NULL DEFAULT 'NULL',
`status` int(11) NOT NULL DEFAULT '0',
`thread_id` bigint(32) unsigned NOT NULL DEFAULT '0',
`user` varchar(20) NOT NULL DEFAULT 'NULL',
`external_user` varchar(20) NOT NULL DEFAULT 'NULL',
`proxy_user` varchar(20) NOT NULL DEFAULT 'NULL',
`host` varchar(20) NOT NULL DEFAULT 'NULL',
`ip` varchar(20) NOT NULL DEFAULT 'NULL',
`databases` varchar(255) NOT NULL DEFAULT 'NULL',
`query` varchar(255) NOT NULL DEFAULT 'NULL',
www.2cto.com
`charset` varchar(20) NOT NULL DEFAULT 'NULL',
`event_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`rows` bigint(32) NOT NULL DEFAULT '0'
) ENGINE=CSV DEFAULT CHARSET=utf8 ;
進一步工作
1、完善查看審計參數狀態,show status like ‘audit%’中動態顯示當前參數狀態。
作者 king_wangheng