本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon Cognito 登入 AWS CloudTrail
Amazon Cognito 已與 整合 AWS CloudTrail,此服務提供 Amazon Cognito AWS 中使用者、角色或服務所採取動作的記錄。CloudTrail 將 Amazon Cognito 的 API 呼叫子集擷取為事件,包括來自 Amazon Cognito 主控台的呼叫,以及來自對 Amazon Cognito API 操作發出的程式碼呼叫。如果您建立追蹤,就可以選擇將 CloudTrail 事件傳遞至 Amazon S3 儲存貯體,包括 Amazon Cognito 的事件。即使您未設定追蹤,依然可以透過 CloudTrail 主控台中的 Event history (事件歷史記錄) 檢視最新事件。您可以利用 CloudTrail 所收集的資訊來判斷向 Amazon Cognito 發出的請求,以及發出請求的 IP 地址、人員、時間和其他詳細資訊。
若要進一步了解 CloudTrail,包括如何設定及啟用,請參閱《AWS CloudTrail 使用者指南》。
您也可以針對特定 CloudTrail 事件建立 Amazon CloudWatch 警示。例如,您可以設定 CloudWatch 在身分集區組態變更時觸發警示。如需詳細資訊,請參閱建立 CloudTrail 事件的 CloudWatch 警示:範例。
主題
Amazon Cognito 傳送到 CloudTrail 的資訊
當您建立 時,CloudTrail 會開啟 AWS 帳戶。當 Amazon Cognito 中發生支援的事件活動時,該活動會記錄於 CloudTrail 事件,以及事件歷史記錄中的其他服務 AWS 事件。您可以在 AWS 帳戶中檢視、搜尋和下載最近的事件。如需詳細資訊,請參閱使用 CloudTrail 事件歷史記錄檢視事件。
若要持續記錄您 AWS 帳戶中的事件,包括 Amazon Cognito 的事件,請建立追蹤。CloudTrail 追蹤將日誌檔案傳遞至 Amazon S3 儲存貯體。根據預設,當您在主控台建立線索時,線索會套用到所有 區域。追蹤會記錄 AWS 分割區中所有 區域的事件,並將日誌檔案交付至您指定的 Amazon S3 儲存貯體。此外,您可以設定其他 AWS 服務,以進一步分析 CloudTrail 日誌中收集的事件資料並對其採取行動。如需詳細資訊,請參閱:
每一筆事件或日誌專案都會包含產生請求者的資訊。身分資訊可協助您判斷下列事項:
-
該請求是否使用根或 IAM 使用者憑證提出。
-
提出該請求時,是否使用了特定角色或聯合身分使用者的暫時安全憑證。
-
請求是否由其他 AWS 服務提出。
如需詳細資訊,請參閱 CloudTrail userIdentity 元素。
中的機密資料 AWS CloudTrail
由於使用者集區和身分集區會處理使用者資料,因此 Amazon Cognito 會使用值 HIDDEN_FOR_SECURITY_REASONS
隱藏 CloudTrail 事件中的某些私有欄位。如需 Amazon Cognito 未填入事件的欄位範例,請參閱 Amazon Cognito 事件範例。Amazon Cognito 只會隱藏某些常包含使用者資訊的欄位,例如密碼和權杖。Amazon Cognito 不會對您填入 API 請求中非私有欄位的個人識別資訊執行任何自動偵測或遮蔽。
使用者集區事件
Amazon Cognito 支援將 User Pool Actions (使用者集區動作) 頁面上列出的所有動作記錄為 CloudTrail 日誌檔案中的事件。Amazon Cognito 會將使用者集區事件記錄到 CloudTrail 做為管理事件。
Amazon Cognito 使用者集區 CloudTrail 項目中的 eventType
欄位會告訴您應用程式是否向 Amazon Cognito 使用者集區 API 或為 OpenID Connect、SAML 2.0 或受管登入頁面提供資源的端點提出請求。API 請求具有 AwsApiCall
eventType
,端點請求具有 AwsServiceEvent
eventType
。
Amazon Cognito 會將下列請求記錄到您的受管登入服務,做為 CloudTrail 中的事件。
注意
Amazon Cognito 會在 CloudTrail 日誌中,記錄特定使用者請求的 UserSub
而不是 UserName
。您可以呼叫 ListUsers
API並使用子使用者篩選條件,找到特定 UserSub
的使用者。
身分集區事件
資料事件
Amazon Cognito 會將下列 Amazon Cognito 身分事件記錄至 CloudTrail 作為資料事件。資料事件是 CloudTrail 預設不會記錄的大容量資料平面 API 操作。資料事件需支付額外的費用。
若要為這些 API 操作產生 CloudTrail 日誌,您必須在您的線索中啟動資料事件,並為 Cognito 身分集區選擇事件選取器。如需詳細資訊,請參閱《AWS CloudTrail 使用者指南》中的記錄資料事件。
您也可以使用下列 CLI 命令,將身分集區事件選取器新增至線索。
aws cloudtrail put-event-selectors --trail-name
<trail name>
--advanced-event-selectors \ "{\ \"Name\": \"Cognito Selector\",\ \"FieldSelectors\": [\ {\ \"Field\": \"eventCategory\",\ \"Equals\": [\ \"Data\"\ ]\ },\ {\ \"Field\": \"resources.type\",\ \"Equals\": [\ \"AWS::Cognito::IdentityPool\"\ ]\ }\ ]\ }"
管理事件
Amazon Cognito 會將剩餘的 Amazon Cognito 身分池 API 操作記錄為管理事件。根據預設,CloudTrail 會記錄管理事件 API 操作。
如需 Amazon Cognito 記錄到 CloudTrail 的 Amazon Cognito 身分池 API 操作清單,請參閱 Amazon Cognito 身分池 API 參考。
Amazon Cognito Sync
Amazon Cognito 將所有 Amazon Cognito Sync API 操作記錄為管理事件。如需 Amazon Cognito 記錄到 CloudTrail 的 Amazon Cognito Sync API 操作清單,請參閱 Amazon Cognito Sync API 參考。
使用 Amazon CloudWatch Logs Insights 分析 Amazon Cognito CloudTrail 事件
您可以使用 Amazon CloudWatch Logs Insights 搜尋和分析您的 Amazon Cognito CloudTrail 事件。當您將追蹤設定為將事件傳送到 CloudWatch Logs 時,CloudTrail 只會傳送符合您追蹤設定的事件。
若要查詢或研究您的 Amazon Cognito CloudTrail 事件,請在 CloudTrail 主控台中,確定您在追蹤設定中選取管理事件選項,以便您可以監控在 AWS 資源上執行的管理操作。想找出您帳戶中的錯誤、異常活動或異常使用者行為時,您可以選擇性選取追蹤設定中的 Insights 事件 選項。
Amazon Cognito 查詢範例
您可以在 Amazon CloudWatch 主控台中使用下列查詢。
一般查詢
尋找最近新增的 25 個日誌事件。
fields @timestamp, @message | sort @timestamp desc | limit 25 | filter eventSource = "cognito-idp.amazonaws.com"
取得最近新增的 25 個日誌事件 (包含例外狀況) 清單。
fields @timestamp, @message | sort @timestamp desc | limit 25 | filter eventSource = "cognito-idp.amazonaws.com" and @message like /Exception/
例外狀況和錯誤查詢
使用錯誤碼 NotAuthorizedException
及 Amazon Cognito 使用者集區 sub
,尋找最近新增的 25 個日誌事件。
fields @timestamp, additionalEventData.sub as user | sort @timestamp desc | limit 25 | filter eventSource = "cognito-idp.amazonaws.com" and errorCode= "NotAuthorizedException"
使用 sourceIPAddress
和相應 eventName
,尋找記錄數量。
filter eventSource = "cognito-idp.amazonaws.com" | stats count(*) by sourceIPAddress, eventName
尋找觸發 NotAuthorizedException
錯誤的前 25 個 IP 地址。
filter eventSource = "cognito-idp.amazonaws.com" and errorCode= "NotAuthorizedException" | stats count(*) as count by sourceIPAddress, eventName | sort count desc | limit 25
尋找呼叫 ForgotPassword
API 的前 25 個 IP 地址。
filter eventSource = "cognito-idp.amazonaws.com" and eventName = 'ForgotPassword' | stats count(*) as count by sourceIPAddress | sort count desc | limit 25