程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL審計插件安裝使用說明文檔

MySQL審計插件安裝使用說明文檔

編輯:MySQL綜合教程


MySQL審計插件安裝使用說明文檔   目的 為了便於開發人員和DBA安裝和使用MySQL審計插件,並對審計的使用和審計粒度有更全面的理解。本文對審計插件的設計思想、審計粒度、審計配置說明、安裝使用、其他內容進行詳細的描述。一方面便於後續的維護和開發,另一方面對於使用提供便利的查詢。 設計思想  www.2cto.com            MySQL的審計接口為開發審計插件提供了有利的條件,基於MySQL審計接口,參考General log設計思想,將審計插件的審計類型定義了:FILE和TABLE兩種類型,用於將審計的內容分別寫入日志文件或數據庫表。此外,對審計的粒度進行劃分,不僅根據操作命令的類型進行劃分,並對Query命令類型進行進一步的細化分,將DDL、DML、DCL三種類型不同SQL語句類型進行劃分;對特定的用戶進行審計,僅對指定的用戶審計,結合審計的粒度實現對用戶行為的審計;對特定的對象(數據庫、數據表)進行審計,目前僅給出配置,源碼中暫時沒有實現。          此外,審計的粒度采用按位標示,並通過按位覆蓋可以進行自定義的審計粒度。 審計粒度          審計插件將審計的粒度細化到具體的SQL語句,主要包括:create、drop、alter、ddl(包括create、drop、alter)、insert、delete、update、modify(包括insert、delete、update、replace)、select、dml(包括insert、delete、update、select)、grant、revoke、dcl(包括grant、revoke)、set、cmd(包括ddl、dml、dcl、set)、connect、quit、connection(包括connect、quit)、server(包括修改server相關的命令操作,如init db、sleep等操作)、full(包括以上所有操作)、all(包括所有操作,包括預留的所有的審計粒度的擴展)、none(不進行審計),這些粒度在配置文件中的以audit_為前綴,值為1/0(或on/off)。為了更精確的控制某些命令,提供audit_ops參數,該參數的值是整數,通過整數的二進制位來控制具體的審計粒度。          具體的審計粒度對應整數的二進制位如下所示: 粒度 位值 AUDIT_ALL (~AUDIT_NONE) AUDIT_NONE (ulonglong)0 AUDIT_CREATE (ulonglong)1 AUDIT_ALTER (AUDIT_CREATE << 1) AUDIT_DROP (AUDIT_CREATE << 2) AUDIT_DDL (AUDIT_CREATE | AUDIT_ALTER | AUDIT_DROP) AUDIT_INSERT  www.2cto.com   (AUDIT_CREATE << 3) AUDIT_UPDATE (AUDIT_CREATE << 4) AUDIT_REPLACE (AUDIT_CREATE << 5) AUDIT_DELETE (AUDIT_CREATE << 6) AUDIT_MODIFY (AUDIT_INSERT | AUDIT_UPDATE | AUDIT_DELETE | AUDIT_REPLACE) AUDIT_SELECT (AUDIT_CREATE << 7) AUDIT_DML (AUDIT_MODIFY | AUDIT_SELECT) AUDIT_GRANT (AUDIT_CREATE << 8) AUDIT_REVOKE (AUDIT_CREATE << 9) AUDIT_DCL (AUDIT_GRANT | AUDIT_REVOKE) AUDIT_SET (AUDIT_CREATE << 10) AUDIT_CMD (AUDIT_DDL | AUDIT_DML | AUDIT_DCL | AUDIT_SET) AUDIT_CONNECT (AUDIT_CREATE << 11) AUDIT_QUIT (AUDIT_CREATE << 12) AUDIT_CHANGE_USER (AUDIT_CREATE << 13) AUDIT_CONNECTION (AUDIT_CONNECT | AUDIT_QUIT | AUDIT_CHANGE_USER) AUDIT_FULL (AUDIT_CMD | AUDIT_CONNECTION) AUDIT_SLEEP (AUDIT_CREATE << 16) AUDIT_INIT_DB (AUDIT_CREATE << 17) AUDIT_FIELD_LIST (AUDIT_CREATE << 18) AUDIT_REFRESH (AUDIT_CREATE << 19) AUDIT_SHUTDOWN (AUDIT_CREATE << 20) AUDIT_STATISTICS (AUDIT_CREATE << 21) AUDIT_PROCESSLIST (AUDIT_CREATE << 22) AUDIT_KILL (AUDIT_CREATE << 23) AUDIT_DEBUG (AUDIT_CREATE << 24) AUDIT_PING (AUDIT_CREATE << 25) AUDIT_TIME (AUDIT_CREATE << 26) AUDIT_DELAY_INSERT (AUDIT_CREATE << 27) AUDIT_BINLOG_DUMP (AUDIT_CREATE << 28) AUDIT_TABLE_DUMP (AUDIT_CREATE << 29) AUDIT_CONNECT_OUT (AUDIT_CREATE << 30) AUDIT_REGISTER_SLAVE (AUDIT_CREATE << 31) AUDIT_PREPARE (AUDIT_CREATE << 32) AUDIT_EXECUTE (AUDIT_CREATE << 33) AUDIT_LONG_DATA (AUDIT_CREATE << 34) AUDIT_CLOSE_STMT (AUDIT_CREATE << 35)  www.2cto.com   AUDIT_RESET_STMT (AUDIT_CREATE << 36) AUDIT_SET_OPTION (AUDIT_CREATE << 37) AUDIT_FETCH (AUDIT_CREATE << 38) AUDIT_DAEMON (AUDIT_CREATE << 39) AUDIT_ERROR (AUDIT_CREATE << 40) AUDIT_SERVER (~AUDIT_FULL)   以上定義中,預留了很多位,用於粒度的深化。audit_ops的指定有一定的風險,需要進行計算,不建議直接控制。 審計配置說明          為了審計插件的獨立性,對審計進行單獨配置文件的控制,從而不影響數據庫server的配置。此外,審計的配置與審計粒度、審計用戶、審計文件地址、審計文件名、審計文件大小、審計類型有關。 審計用戶格式為“,”分割的用戶名列表;審計文件地址在linux下必須為mysql用戶名和用戶組,且mysql至少有W訪問權限,如果指定審計文件大小,則需要有X權限; 審計文件名默認為mysql-audit,並且根據是否設置審計文件大小來創建文件。如果設置審計文件的大小,那麼審計文件以日期為文件夾,以文件編號為後綴,且文件達到指定文件大小後,重新創建文件且文件編號遞增。如:2012-6-20/mysql-audit.000000,如果未設置文件大小,則文件名以當前日期為後綴,如:mysql-audit. 2012-6-20; 審計文件大小格式為整數,或者整數加上單位,單位包括K、M、G。為了便於查看,不建議將該值設置的過大;  www.2cto.com   審計類型包括FILE、TABLE兩種。目前僅FILE有效。          此外,配置文件支持動態修改並生效的功能。審計配置文件修改後,將會重新加載配置選項。但鑒於性能問題,不建議頻繁對配置文件進行修改。 安裝使用 1 源碼安裝          針對不同的MySQL源碼和不同操作系統,建議使用源碼進行編譯安裝。該插件基於Linux 64位操作系統、MySQL 5.5.15/5.5.20源碼進行編譯和測試通過,並提供二進制動態庫供二進制安裝,具體二進制安裝見下一節內容。 1.1 源碼獲取          1)審計插件源碼 審計插件源碼可以通過github獲取最新版本。 github地址為:https://github.com/HengWang/mysql-audit。   github clone https://github.com/HengWang/mysql-audit 2)MySQL源碼 MySQL源碼可以從官網下載,本文推薦使用Percona Server 5.5版本。推薦理由是Percona Server針對MySQL源碼基礎之上,進行了改進,尤其是性能方面和參數選項方面。 1.2 拷貝插件源碼          1)解壓數據庫源碼 tar -xzf Percona-Server-<VERSION>.tar.gz 2)拷貝插件到源碼 cp -rf mysql-audit/ Percona-Server-<VERSION>/plugin/ 將插件源碼拷貝到mysql數據庫源碼的plugin文件夾下。 1.3、編譯數據庫源碼 根據編譯參數,對數據庫源碼進行編譯,並安裝。    www.2cto.com   cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql make make install          安裝完成後,在MYSQL_HOME(安裝路徑,文中設置為/usr/local/mysql)的lib/plugin/下面,會有audit.so和audit.cnf文件。 1.4 設置審計參數          根據審計需求,修改審計配置文件audit.cnf,對審計的選項參數、審計粒度進行設置。配置文件中對各個審計參數的功能進行了描述,可根據具體的需求設置。 1.5 創建審計路徑          根據配置文件中設置的audit_dir的路徑,創建審計文件夾。審計文件夾必須是mysql可操作的文件夾,如果指定了審計文件大小,指定的審計文件夾對mysql必須有xw權限。 1.6 創建審計數據表          啟動MySQL數據庫,使用mysql客戶端登陸數據庫,執行sql腳本audit.sql,創建mysql.audit表,用於存儲審計內容。 1.7 安裝審計插件          啟動MySQL數據庫,使用mysql客戶端登陸數據庫後,執行安裝插件命令。如下所示: install plugin audit soname ‘audit.so’;          安裝完成後,會在指定審計文件夾下,生成<FILENAME>.<DATE>文件或<DATE>/<FILENAME>.000000。如果文件不存在,表示安裝失敗。   2 二進制安裝          二進制動態庫目前僅提供基於Linux 64位操作系統、MySQL 5.5.15/5.5.20源碼進行編譯的審計插件動態庫。  www.2cto.com            在mysql-audit/script文件夾下,有對應的二進制庫;mysql-audit/etc文件夾下,有配置文件。配置文件audit.cnf拷貝到MYSQL_HOME/lib/plugin/下,二進制庫拷貝到MySQL Server的plugin_dir指定的地址。          接下來的操作與源碼安裝一致,從步驟1.4開始進行下面操作即可。 3 自動化安裝部署          自動化安裝部署,主要針對二進制文件的安裝,通過執行腳本即可實現整個安裝部署過程。因此,使用自動化腳本的前提是提供的二進制文件符合應用需求。具體如下:          執行腳本的前提是已經獲取mysql-audit。在此情況下,執行自動化腳本,可以安裝部署成功。 具體腳本操作,可以通過執行:audit_build.sh -h 查看輸入參數。舉例如下:    ./audit_build.sh --mysqldir=/usr/local/mysql --auditdir=/home/mysql/audit --user=root --password=”” --host=localhost --port=3306 --socket=/tmp/mysql.sock --version=5.5.20 --type=release 4 插件卸載          為了保證數據庫的性能,可以卸載審計插件。使用mysql登陸數據庫服務器,執行以下命令: uninstall plugin audit; 文件輸出格式          文件格式分為兩種,分別為連接審計和操作審計。 1、連接審計  www.2cto.com   連接相關的審計日志信息的格式如下所示。 具體的: [2012-06-20 15:40:39]:審計的時間。 [CONNECT]:為連接的類型; status:為連接成功(0)或者失敗(錯誤號)的狀態; user:為連接的用戶名; external-user:為外部連接的用戶,在使用中間件或者代理服務的時候有效; proxy-user:為代理服務的用戶名; host:表示連接的主機名; ip:連接的ip地址; database:表示連接的數據庫名。   [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]:審計的時間。 [CREATE]為操作的類型; error_code:為操作的錯誤碼,操作成功為0; thread_id:執行操作的線程id; user:執行操作的用戶名; command:操作命令的類型,是數據庫內部的定義,數據相關操作一般為Query; query:操作的查詢語句。  www.2cto.com   charset:操作的字符集類型; time:執行操作的時間點,該值為從1970年以來的長整數。 rows:執行操作影響數據的行數。   [2012-06-20 15:40:39] [CREATE] error_code: # ; thread_id: # ; user: XXX ; command: XXX ; query: XXX ; charset: XXX ; time: ### ; rows: # 數據表定義 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',   `query` varchar(255) NOT NULL DEFAULT 'NULL',   `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 ;    www.2cto.com   常見錯誤 1、無法識別的audit.so。 解決:查看plugin_dir路徑,在該路徑下查看audit.so是否存在。 2、沒有審計內容。 解決:首先確認指定的審計文件夾的權限是否符合,審計文件夾必須是mysql用戶可以操作的目錄,如果指定了審計文件大小,指定的審計文件夾必須有xw權限。 進一步工作 1、添加審計數據對象(數據庫、數據表)功能。 2、完善查看審計參數狀態,show status like ‘audit%’中動態顯示當前參數狀態。     作者 king_wangheng

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved