Amazon Cognito 登入 AWS CloudTrail - Amazon Cognito

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

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 主控台中的最新事件。 使用 所收集的資訊 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 會使用 值 來遮蓋 CloudTrail 事件中的一些私有欄位HIDDEN_FOR_SECURITY_REASONS。如需 Amazon Cognito 未填入事件的欄位範例,請參閱 Amazon Cognito 事件範例。Amazon Cognito 只會隱藏某些常包含使用者資訊的欄位,例如密碼和權杖。Amazon Cognito 不會對您填入API請求中非私有欄位的個人身分資訊執行任何自動偵測或遮罩。

使用者集區事件

Amazon Cognito 支援將使用者集區動作頁面上列出的所有動作記錄為 CloudTrail 日誌檔案中的事件。Amazon Cognito 會將使用者集區事件記錄為 CloudTrail 作為管理事件。

Amazon Cognito 使用者集區 CloudTrail 項目中的 eventType 欄位會告訴您應用程式是否向 Amazon Cognito 使用者集API區或為 OpenID Connect、2.0 SAML 或託管 UI 提供資源的端點提出請求。API 請求具有 eventTypeAwsApiCall,端點請求具有 eventTypeAwsServiceEvent

Amazon Cognito 會將下列託管 UI 請求記錄到託管 UI,作為 中的事件 CloudTrail。

中的託管 UI 操作 CloudTrail
作業 描述
Login_GET, CognitoAuthentication 使用者檢視或提交憑證至您的 登入端點
OAuth2_Authorize_GET, Beta_Authorize_GET 使用者檢視您的 授權端點
OAuth2Response_GET, OAuth2Response_POST 使用者向您的 /oauth2/idpresponse 端點提交 IdP 權杖。
SAML2Response_POST, Beta_SAML2Response_POST 使用者將 IdP SAML宣告提交至您的/saml2/idpresponse端點。
Login_OIDC_SAML_POST 使用者在您的 登入端點 輸入使用者名稱以及相匹配的 IdP 識別碼
Token_POST, Beta_Token_POST 使用者向您的 權杖端點 提交授權碼。
Signup_GET, Signup_POST 使用者向您的 /signup 端點提交註冊資訊。
Confirm_GET, Confirm_POST 使用者在託管 UI 中提交確認碼。
ResendCode_POST 使用者在託管 UI 中提交重新發送確認碼的請求。
ForgotPassword_GET, ForgotPassword_POST 使用者向您的 /forgotPassword 端點提交重設密碼的請求。
ConfirmForgotPassword_GET, ConfirmForgotPassword_POST 使用者向確認其 ForgotPassword 請求的您的 /confirmForgotPassword 端點提交代碼。
ResetPassword_GET, ResetPassword_POST 使用者在託管的 UI 中提交新密碼。
Mfa_GET, Mfa_POST 使用者在託管 UI 中提交多重要素驗證 (MFA) 程式碼。
MfaOption_GET, MfaOption_POST 使用者在託管 UI MFA中選擇其偏好的 方法。
MfaRegister_GET, MfaRegister_POST 註冊 時,使用者會在託管 UI 中提交多重要素驗證 (MFA) 程式碼MFA。
Logout 使用者登出您的 /logout 端點。
SAML2Logout_POST 使用者登出您的 /saml2/logout 端點。
Error_GET 使用者在託管的 UI 中檢視錯誤頁面。
UserInfo_GET, UserInfo_POST 使用者或 IdP 與您的 userInfo 端點 交換資訊。
Confirm_With_Link_GET 使用者根據 Amazon Cognito 在電子郵件中傳送的連結提交確認。
Event_Feedback_GET 使用者向 Amazon Cognito 提交有關進階安全性功能事件的反饋。
注意

Amazon Cognito 會記錄使用者特定請求,UserSub但不記錄於 CloudTrail 日誌UserName中。您可以UserSub呼叫 ListUsers API,並使用子的篩選條件來尋找指定 的使用者。

身分集區事件

資料事件

Amazon Cognito 會將下列 Amazon Cognito Identity 事件記錄 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 logs 管理事件API操作。

如需 Amazon Cognito 記錄到 的 Amazon Cognito 身分集區API操作清單 CloudTrail,請參閱 Amazon Cognito 身分集區API參考

Amazon Cognito Sync

Amazon Cognito 會將所有 Amazon Cognito Sync API操作記錄為管理事件。如需 Amazon Cognito 記錄到 的 Amazon Cognito Sync API操作清單 CloudTrail,請參閱 Amazon Cognito Sync API參考

使用 Amazon Logs Insights 分析 Amazon Cognito CloudTrail 事件 CloudWatch

您可以使用 Amazon Logs Insights 搜尋和分析 Amazon Cognito CloudTrail 事件。 CloudWatch 當您設定追蹤以將事件傳送至 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

尋找名為 的前 25 個 IP ForgotPassword 地址API。

filter eventSource = "cognito-idp.amazonaws.com" and eventName = 'ForgotPassword' | stats count(*) as count by sourceIPAddress | sort count desc | limit 25