使用進階稽核與 Amazon Aurora MySQL 資料庫叢集搭配 - Amazon Aurora

使用進階稽核與 Amazon Aurora MySQL 資料庫叢集搭配

您可以使用 Amazon Aurora MySQL 的高效能「進階稽核」功能來稽核資料庫活動。若要這麼做,您需要設定幾個資料庫叢集參數以便收集稽核日誌。進階稽核啟用時,您可將它用來記錄任意組合的支援事件。

您可以檢視或下載稽核日誌,一次檢閱一個資料庫執行個體的稽核資訊。若要執行此操作,您可以使用監控 Amazon Aurora 日誌檔案中說明的程序。

提示

如果 Aurora 資料庫叢集包含多個資料庫執行個體,您可能會發現檢查叢集中所有執行個體的稽核日誌更為方便。若要執行此操作,可以使用 CloudWatch Logs。您可以在叢集層級開啟設定,將 Aurora MySQL 稽核日誌資料發佈至 CloudWatch 中的日誌群組。然後您可以透過 CloudWatch 界面檢視、篩選和搜尋稽核日誌。如需更多詳細資訊,請參閱 將 Amazon Aurora MySQL 日誌發佈至 Amazon CloudWatch Logs

啟用進階稽核

使用本節所述的參數來啟用和設定資料庫叢集的進階稽核。

使用 server_audit_logging 參數來啟用或停用進階日誌。

使用 server_audit_events 參數來指定要記錄的事件。

使用 server_audit_incl_usersserver_audit_excl_users 參數來指定要受到稽核的使用者。預設情況下,所有使用者會受到稽核。如需當一或兩個參數保留空白,或在兩者中指定了相同的使用者名稱時,這些參數如何運作的詳細資訊,請參閱 server_audit_incl_usersserver_audit_excl_users

在資料庫叢集使用的參數群組中設定這些參數,以設定進階稽核。您可以依照修改 Amazon Aurora 中的資料庫參數群組中的參數所示的程序,使用 AWS Management Console修改資料庫叢集參數。您可以使用 modify-db-cluster-parameter-group AWS CLI 命令或 ModifyDBClusterParameterGroup Amazon RDS API 操作,以程式設計方式來修改資料庫叢集參數。

如果參數群組已與您的叢集建立關聯,不需要重新啟動資料庫叢集即可修改這些參數。首次為參數群組與叢集建立關聯時,需要重新啟動叢集。

server_audit_logging

啟用或停用進階稽核。此參數預設為 OFF;設為 ON 即可啟用進階稽核。

日誌中不會顯示任何稽核資料,除非您使用 server_audit_events 參數定義了一或多個要稽核的事件類型。

若要確認已為資料庫執行個體記錄稽核資料,請檢查該執行個體的部分日誌檔案的名稱格式是否為 audit/audit.log.other_identifying_information。若要查看日誌檔案的名稱,請依照檢視並列出資料庫日誌檔案中的程序操作。

server_audit_events

包含要記錄之事件的逗號分隔清單。事件必須以全部大寫指定,且清單元素之間不能有空格,例如:CONNECT,QUERY_DDL。此參數預設為空字串。

您可以記錄下列事件的任意組合:

  • CONNECT – 記錄成功與失敗連線,還有中斷連線。此事件包含使用者資訊。

  • QUERY – 以純文字記錄所有查詢,包括因為語法或許可錯誤而失敗的查詢。

    提示

    開啟此事件類型後,稽核資料中會包括 Aurora 自動執行的持續監控的相關資訊和運作狀態檢查資訊。如果您只對特定類型的操作感興趣,可以使用更具體的事件類型。您也可以使用 CloudWatch 界面,在日誌中搜尋與特定資料庫、資料表或使用者相關的事件。

  • QUERY_DCL – 類似於 QUERY 事件,但只傳回資料控制語言 (DCL) 查詢 (GRANT、REVOKE 等)。

  • QUERY_DDL – 類似於 QUERY 事件,但只傳回資料定義語言 (DDL) 查詢 (CREATE、ALTER 等)。

  • QUERY_DML – 類似於 QUERY 事件,但只傳回資料操作語言 (DML) 查詢 (INSERT、UPDATE 和 SELECT 等)。

  • TABLE – 記錄因為執行查詢而受影響的資料表。

注意

Aurora 中沒有排除稽核日誌中特定查詢的篩選條件。若要排除 SELECT 查詢,您必須排除所有 DML 陳述式。

如果特定使用者在稽核日誌中報告這些內部 SELECT 查詢,則您可以透過設定 server_audit_excl_users 資料庫叢集參數來排除該使用者。不過,如果該使用者也用於其他活動且無法省略,則沒有排除 SELECT 查詢的其他選項。

server_audit_incl_users

包含其活動受到記錄之使用者的使用者名稱之逗號分隔清單。清單元素之間不能有空格,例如:user_3,user_4。此參數預設為空字串。長度上限為 1024 個字元。指定的使用者名稱必須符合 User 資料表的 mysql.user 欄的對應值。如需使用者名稱的詳細資訊,請參閱 MySQL 文件中的帳戶使用者名稱和密碼

如果 server_audit_incl_usersserver_audit_excl_users 都空白 (預設值),則所有使用者都會受到稽核。

如果您將使用者新增至 server_audit_incl_users,並將 server_audit_excl_users 保留空白,則只有那些使用者會受到稽核。

如果您使用者新增至 server_audit_excl_users,並將 server_audit_incl_users 保留空白,則除了 server_audit_excl_users 中列出的使用者以外,其餘所有使用者都會受到稽核。

如果將相同的使用者同時新增至 server_audit_excl_usersserver_audit_incl_users,則這些使用者會受到稽核。當同一個使用者在兩個設定中都有列出時,server_audit_incl_users 的優先順序較高。

連接和中斷連接事件不受此變數所影響;只要指定就一定會加以記錄。即使 server_audit_excl_users 參數中有指定某個使用者,還是會記錄該使用者,因為 server_audit_incl_users 的優先順序較高。

server_audit_excl_users

包含其活動不受記錄之使用者的使用者名稱之逗號分隔清單。清單元素之間不能有空格,例如:rdsadmin,user_1,user_2。此參數預設為空字串。長度上限為 1024 個字元。指定的使用者名稱必須符合 User 資料表的 mysql.user 欄的對應值。如需使用者名稱的詳細資訊,請參閱 MySQL 文件中的帳戶使用者名稱和密碼

如果 server_audit_incl_usersserver_audit_excl_users 都空白 (預設值),則所有使用者都會受到稽核。

如果您將使用者新增至 server_audit_excl_users,並將 server_audit_incl_users 保留空白,則只有 server_audit_excl_users 中列出的使用者不會受到稽核,其他所有使用者都會受到稽核。

如果將相同的使用者同時新增至 server_audit_excl_usersserver_audit_incl_users,則這些使用者會受到稽核。當同一個使用者在兩個設定中都有列出時,server_audit_incl_users 的優先順序較高。

連接和中斷連接事件不受此變數所影響;只要指定就一定會加以記錄。如果 server_audit_incl_users 參數中有指定某個使用者,則也會記錄該使用者,因為此設定的優先順序高於 server_audit_excl_users

檢視稽核日誌

您可以使用主控台來檢視和下載稽核日誌。在 Database (資料庫) 頁面上,選擇資料庫執行個體以顯示其詳細資訊,然後捲動至 Logs (日誌) 區段。進階稽核功能產生的稽核日誌名稱格式為 audit/audit.log.other_identifying_information

若要下載日誌檔案,請在 Logs (日誌) 區段中選取該檔案,然後選擇 Download (下載)

您也可以使用 describe-db-log-files AWS CLI 命令來取得日誌檔案清單。您可以使用 download-db-log-file-portion AWS CLI 命令來下載日誌檔案的內容。如需更多詳細資訊,請參閱 檢視並列出資料庫日誌檔案下載資料庫日誌檔案

稽核日誌詳細資訊

日誌檔案以 UTF-8 格式的逗號分隔變數 (CSV) 檔案表示。查詢也會包在單引號 (') 中。

稽核記錄分別存放在每個 Aurora MySQL 資料庫執行個體的本機儲存區中。每個執行個體一次將寫入分發到四個日誌檔案。日誌檔案大小上限為 100 MB。達到此無法設定的限制時,Aurora 會旋轉檔案並產生一個新檔案。

提示

日誌檔案項目不會循序排列。若要排序項目,請使用時間戳記值。若要查看最新事件,您可能必須檢閱所有日誌檔案。為了更靈活排序和搜尋日誌資料,請開啟設定,將稽核日誌上傳到 CloudWatch,然後使用 CloudWatch 界面檢視這些日誌。

若要查看包含更多欄位類型和以 JSON 格式輸出的稽核資料,您也可以使用資料庫活動串流功能。如需更多詳細資訊,請參閱 使用資料庫活動串流來監控 Amazon Aurora

稽核日誌檔案的每一列依指定順序包含以下逗號分隔的資訊:

欄位 描述

timestamp

所記錄事件的 Unix 時間戳記 (精確度達到微秒)。

serverhost

為其記錄事件之執行個體的名稱。

username

使用者的連線使用者名稱。

host

使用者連線來源的主機。

connectionid

所記錄操作的連線 ID 號碼。

queryid

查詢 ID 號碼,可用來尋找關聯式資料表事件和相關的查詢。若為 TABLE 事件,則會新增多行。

operation

記錄的動作類型。可能值為:CONNECTQUERYREADWRITECREATEALTERRENAMEDROP

database

USE 命令設定的作用中資料庫。

物件

若為 QUERY 事件,此值指出資料庫所執行的查詢。若為 TABLE 事件,則指出資料表名稱。

retcode

所記錄操作的傳回碼。