

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用進階稽核與 Amazon Aurora MySQL 資料庫叢集搭配
<a name="AuroraMySQL.Auditing"></a><a name="auditing"></a><a name="advanced_auditing"></a>

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

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

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

## 啟用進階稽核
<a name="AuroraMySQL.Auditing.Enable"></a>

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

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

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

使用 `server_audit_incl_users` 和 `server_audit_excl_users` 參數來指定要受到稽核的使用者。預設情況下，所有使用者會受到稽核。如需當一或兩個參數保留空白，或在兩者中指定了相同的使用者名稱時，這些參數如何運作的詳細資訊，請參閱 [server\$1audit\$1incl\$1users](#AuroraMySQL.Auditing.Enable.server_audit_incl_users)和 [server\$1audit\$1excl\$1users](#AuroraMySQL.Auditing.Enable.server_audit_excl_users)。

在資料庫叢集使用的參數群組中設定這些參數，以設定進階稽核。您可以依照[修改 Amazon Aurora 中的資料庫參數群組中的參數](USER_WorkingWithParamGroups.Modifying.md)所示的程序，使用 AWS 管理主控台修改資料庫叢集參數。您可以使用 [modify-db-cluster-parameter-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster-parameter-group.html) AWS CLI 命令或 [ModifyDBClusterParameterGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBClusterParameterGroup.html) Amazon RDS API 操作，以程式設計方式來修改資料庫叢集參數。

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

**Topics**
+ [server\$1audit\$1logging](#AuroraMySQL.Auditing.Enable.server_audit_logging)
+ [server\$1audit\$1events](#AuroraMySQL.Auditing.Enable.server_audit_events)
+ [server\$1audit\$1incl\$1users](#AuroraMySQL.Auditing.Enable.server_audit_incl_users)
+ [server\$1audit\$1excl\$1users](#AuroraMySQL.Auditing.Enable.server_audit_excl_users)

### server\$1audit\$1logging
<a name="AuroraMySQL.Auditing.Enable.server_audit_logging"></a>

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

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

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

### server\$1audit\$1events
<a name="AuroraMySQL.Auditing.Enable.server_audit_events"></a>

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

您可以記錄下列事件的任意組合：
+ CONNECT – 記錄成功與失敗連線，還有中斷連線。此事件包含使用者資訊。
+ QUERY – 以純文字記錄所有查詢，包括因為語法或許可錯誤而失敗的查詢。
**提示**  
 開啟此事件類型後，稽核資料中會包括 Aurora 自動執行的持續監控的相關資訊和運作狀態檢查資訊。如果您只對特定類型的操作感興趣，可以使用更具體的事件類型。您也可以使用 CloudWatch 界面，在日誌中搜尋與特定資料庫、資料表或使用者相關的事件。
+ QUERY\$1DCL – 類似於 QUERY 事件，但只傳回資料控制語言 (DCL) 查詢 (GRANT、REVOKE 等)。
+ QUERY\$1DDL – 類似於 QUERY 事件，但只傳回資料定義語言 (DDL) 查詢 (CREATE、ALTER 等)。
+ QUERY\$1DML – 類似於 QUERY 事件，但只傳回資料操作語言 (DML) 查詢 (INSERT、UPDATE 和 SELECT 等)。
+ TABLE – 記錄因為執行查詢而受影響的資料表。

**注意**  
Aurora 中沒有排除稽核日誌中特定查詢的篩選條件。若要排除 `SELECT` 查詢，您必須排除所有 DML 陳述式。  
如果特定使用者在稽核日誌中報告這些內部 `SELECT` 查詢，則您可以透過設定 [server\$1audit\$1excl\$1users](#AuroraMySQL.Auditing.Enable.server_audit_excl_users) 資料庫叢集參數來排除該使用者。不過，如果該使用者也用於其他活動且無法省略，則沒有排除 `SELECT` 查詢的其他選項。

### server\$1audit\$1incl\$1users
<a name="AuroraMySQL.Auditing.Enable.server_audit_incl_users"></a>

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

 如果 `server_audit_incl_users` 和 `server_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_users` 和 `server_audit_incl_users`，則這些使用者會受到稽核。當同一個使用者在兩個設定中都有列出時，`server_audit_incl_users` 的優先順序較高。

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

### server\$1audit\$1excl\$1users
<a name="AuroraMySQL.Auditing.Enable.server_audit_excl_users"></a>

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

 如果 `server_audit_incl_users` 和 `server_audit_excl_users` 都空白 (預設值)，則所有使用者都會受到稽核。

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

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

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

## 檢視稽核日誌
<a name="AuroraMySQL.Auditing.View"></a>

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

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

您也可以使用 [describe-db-log-files](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-log-files.html) AWS CLI 命令來取得日誌檔案清單。您可以使用 [download-db-log-file-portion](https://docs.aws.amazon.com/cli/latest/reference/rds/download-db-log-file-portion.html) AWS CLI 命令來下載日誌檔案的內容。如需更多詳細資訊，請參閱 [檢視並列出資料庫日誌檔案](USER_LogAccess.Procedural.Viewing.md) 及 [下載資料庫日誌檔案](USER_LogAccess.Procedural.Downloading.md)。

## 稽核日誌詳細資訊
<a name="AuroraMySQL.Auditing.Logs"></a>

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

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

**提示**  
日誌檔案項目不會循序排列。若要排序項目，請使用時間戳記值。若要查看最新事件，您可能必須檢閱所有日誌檔案。為了更靈活排序和搜尋日誌資料，請開啟設定，將稽核日誌上傳到 CloudWatch，然後使用 CloudWatch 界面檢視這些日誌。  
 若要查看包含更多欄位類型和以 JSON 格式輸出的稽核資料，您也可以使用資料庫活動串流功能。如需更多詳細資訊，請參閱 [使用資料庫活動串流來監控 Amazon Aurora](DBActivityStreams.md)。

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


| 欄位 | 描述 | 
| --- | --- | 
|  timestamp  |  所記錄事件的 Unix 時間戳記 (精確度達到微秒)。  | 
|  serverhost  |  為其記錄事件之執行個體的名稱。  | 
|  username  |  使用者的連線使用者名稱。  | 
|  host  |  使用者連線來源的主機。  | 
|  connectionid  |  所記錄操作的連線 ID 號碼。  | 
|  queryid  |  查詢 ID 號碼，可用來尋找關聯式資料表事件和相關的查詢。若為 `TABLE` 事件，則會新增多行。  | 
|  operation  |  記錄的動作類型。可能值為：`CONNECT`、`QUERY`、`READ`、`WRITE`、`CREATE`、`ALTER`、`RENAME` 及 `DROP`。  | 
|  database  |  由 `USE` 命令設定的作用中資料庫。  | 
|  物件  |  若為 `QUERY` 事件，此值指出資料庫所執行的查詢。若為 `TABLE` 事件，則指出資料表名稱。  | 
|  retcode  |  所記錄操作的傳回碼。  | 