威脅防護 - Amazon Cognito

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

威脅防護

威脅防護是監控使用者操作是否有帳戶接管跡象,並自動回應安全受影響使用者帳戶的 功能集合術語。當使用者使用標準和自訂身分驗證流程登入時,您可以將威脅防護設定套用至使用者。

威脅防護會產生日誌,詳細說明使用者的登入、登出和其他活動。您可以將這些日誌匯出至第三方系統。如需詳細資訊,請參閱檢視和匯出使用者事件歷史記錄

威脅防護強制執行概念

威脅防護會以僅限稽核模式開始,使用者集區會監控使用者活動、指派風險層級,並產生日誌。最佳實務是,在啟用全功能模式 之前,請先以僅限稽核模式執行兩週或更久。全功能模式包括一組自動回應,以偵測有風險的活動和遭入侵的密碼。使用僅限稽核模式,您可以監控 Amazon Cognito 正在執行的威脅評估。您也可以提供意見回饋,以訓練誤報和誤報的功能。

您可以在使用者集區層級設定威脅防護強制執行,以涵蓋使用者集區中的所有應用程式用戶端,以及個別應用程式用戶端的層級。應用程式用戶端威脅防護組態會覆寫使用者集區組態。若要設定應用程式用戶端的威脅防護,請從 Amazon Cognito 主控台中使用者集區的應用程式整合索引標籤導覽至應用程式用戶端設定。您可以在此使用用戶端層級設定,並設定應用程式用戶端專屬的強制執行。

此外,您可以針對標準和自訂身分驗證類型分別設定威脅防護。

標準身分驗證和自訂身分驗證的威脅防護

您可以設定威脅防護的方式取決於您在使用者集區和應用程式用戶端中進行的身分驗證類型。下列每種類型的身分驗證都可以有自己的強制執行模式和自動回應。

標準身分驗證

標準身分驗證是使用者登入、登出和密碼管理,以及託管 UI 中的使用者名稱-密碼流程。Amazon Cognito 威脅防護會在操作使用託管 UI 登入時,監控操作是否有風險指標,或使用下列APIAuthFlow參數:

InitiateAuth

USER_PASSWORD_AUTHUSER_SRP_AUTH。 遭入侵的憑證功能無法存取USER_SRP_AUTH登入中的密碼,而且不會使用此流程監控或處理事件。

AdminInitiateAuth

ADMIN_USER_PASSWORD_AUTHUSER_SRP_AUTH。 遭入侵的憑證功能無法存取USER_SRP_AUTH登入中的密碼,而且不會使用此流程監控或處理事件。

您可以將標準身分驗證的強制執行模式設定為僅限稽核完整函數 。若要停用標準身分驗證的威脅監控,請停用進階安全功能。

自訂身分驗證

自訂身分驗證是使用自訂挑戰 Lambda 觸發程序 的使用者登入。您無法在託管 UI 中進行自訂身分驗證。Amazon Cognito 威脅防護會在操作時,使用 CUSTOM_AUTHInitiateAuth和 API AuthFlow 參數登入時,監控操作是否有風險指標AdminInitiateAuth

您可以將自訂身分驗證的強制執行模式設定為僅限稽核、完整函數 無強制執行 無強制執行選項會停用自訂身分驗證的威脅監控,而不會影響其他進階安全功能。

威脅防護先決條件

開始之前,您必須準備好以下事項:

  • 搭配應用程式用戶端的使用者集區。如需詳細資訊,請參閱使用者集區入門

  • 在 Amazon Cognito 主控台中將多重要素驗證 (MFA) 設定為選用,以使用風險型自我調整驗證功能。如需詳細資訊,請參閱MFA 新增至使用者集區

  • 如果您使用的是電子郵件通知,請前往 Amazon SES主控台來設定和驗證要搭配電子郵件通知使用的電子郵件地址或網域。如需 Amazon 的詳細資訊SES,請參閱在 Amazon 中驗證身分SES

設定進階安全功能和威脅防護

請依照下列指示設定 Amazon Cognito 進階安全功能。

注意

若要在 Amazon Cognito 使用者集區主控台中為應用程式用戶端設定不同的威脅防護組態,請從應用程式整合索引標籤中選取應用程式用戶端,然後選擇使用用戶端層級設定

AWS Management Console
設定使用者集區的進階安全性
  1. 前往 Amazon Cognito 主控台。如果出現提示,請輸入您的 AWS 憑證。

  2. 選擇 User Pools (使用者集區)。

  3. 從清單中選擇現有的使用者集區,或建立使用者集區

  4. 選擇進階安全索引標籤,然後選擇啟用

  5. 選擇您要設定的威脅防護方法:標準和自訂身分驗證 。您可以為自訂和標準身分驗證設定不同的強制執行模式,但它們會在完整函數模式中共用自動回應的組態。

  6. 選擇 Edit (編輯)。

  7. 選擇強制執行模式 。若要立即開始回應偵測到的風險,請選取完整函數,並針對遭入侵的憑證和自我調整驗證設定自動回應。若要在使用者層級日誌和 中收集資訊 CloudWatch,請選取僅限稽核

    進階安全性定價適用於 Audit only (僅稽核) 和 Full function (完整功能) 模式。如需詳細資訊,請參閱 Amazon Cognito 定價

    建議您在啟用動作之前,將進階安全功能維持在稽核模式兩週。在此期間,Amazon Cognito 可以了解應用程式使用者的使用模式,並提供事件意見回饋來調整回應。

  8. 如果您已選取 Audit only (僅稽核),則請選擇 Save changes (儲存變更)。如果您已選取 Full function (完整功能):

    1. 選取您是否要採取 Custom (自訂) 動作或使用 Cognito defaults (Cognito 預設值) 回應疑似 Compromised credentials (憑證洩漏)。Cognito defaults (Cognito 預設值) 是:

      1. Sign-in (登入)、Sign-up (註冊) 和 Password change (密碼變更) 偵測憑證洩漏。

      2. 使用動作 Block sign-in (封鎖登入) 回應憑證洩漏。

    2. 如果您已為 Compromised credentials (憑證洩漏) 選取 Custom (自訂) 動作,請選擇 Amazon Cognito 會用於 Event detection (事件偵測) 的使用者集區動作,以及您希望 Amazon Cognito 採取的 Compromised credentials responses (憑證洩漏回應)。對於疑似洩漏憑證,您可以 Block sign-in (封鎖登入) 或 Allow sign-in (允許登入)。

    3. Adaptive authentication (適應性身分驗證) 下方選擇如何回應惡意登入嘗試。選取您是否要採取 Custom (自訂) 動作或使用 Cognito defaults (Cognito 預設值) 回應疑似惡意活動。當您選取 Cognito defaults (Cognito 預設值) 時,Amazon Cognito 會封鎖所有風險等級的登入,且不會通知使用者。

    4. 如果您已選取適用於 Adaptive authentication (適應性身分驗證) 的 Custom (自訂) 動作,則請選擇 Amazon Cognito 將根據嚴重性層級回應已偵測到之風險採取的 Automatic risk response (自動風險回應) 動作。針對風險層級指派回應時,您無法將較低限制的回應指派給較高層級的風險。您可以將下列回應指派給風險層級:

      1. Allow sign-in (允許登入) – 不採取任何預防措施。

      2. 選用 MFA - 如果使用者已MFA設定 ,Amazon Cognito 一律會要求使用者在登入時提供額外SMS或以時間為基礎的一次性密碼 (TOTP) 因素。如果使用者尚未MFA設定,則可以繼續正常登入。

      3. 需要 MFA - 如果使用者已MFA設定,Amazon Cognito 一律會要求使用者在登入時提供額外 SMS 或 TOTP 因素。如果使用者尚未MFA設定 ,Amazon Cognito 會提示他們設定 MFA。在您自動MFA要求使用者之前,請在應用程式中設定機制以擷取 SMS 的電話號碼MFA,或註冊 TOTP 的身分驗證器應用程式MFA。

      4. 封鎖登入 – 阻止使用者登入。

      5. 通知使用者 – 傳送電子郵件訊息給使用者,其中包含 Amazon Cognito 已偵測到之風險以及您採取之回應的資訊。您可以為傳送的訊息自訂電子郵件訊息範本。

  9. 如果您已在上一步中選擇 Notify user (通知使用者),則可以自訂電子郵件傳遞設定和電子郵件訊息範本,以進行適應性身分驗證。

    1. 電子郵件組態 下,選擇您要與適應性身分驗證搭配使用SES的區域 FROM 、電子郵件地址FROM寄件者名稱 REPLY-TO 電子郵件地址。如需將使用者集區電子郵件訊息與 Amazon Simple Email Service 整合的相關詳細資訊,請參閱 Amazon Cognito 使用者集區的電子郵件設定

      使用者事件歷史記錄
    2. 展開電子郵件範本,使用電子郵件訊息的HTML純文字版本自訂自我調整驗證通知。若要進一步了解電子郵件訊息範本,請參閱 訊息範本

  10. 展開 IP 地址例外狀況,以建立永遠允許永遠封鎖清單,IPv4或永遠允許或封鎖IPv6的地址範圍,無論進階安全風險評估為何。以CIDR符號 (例如 192.168.100.0/24) 指定 IP 地址範圍。

  11. 選擇 Save changes (儲存變更)。

API (user pool)

若要設定使用者集區的進階安全組態,請傳送包含 UserPoolId 參數的SetRiskConfigurationAPI請求,但不要傳送 ClientId 參數。以下是使用者集區的範例請求內文。此風險組態會根據風險的嚴重性採取遞增的一系列動作,並通知所有風險層級的使用者。它會將遭入侵的憑證區塊套用至註冊操作。

若要強制執行此組態,您必須在單獨的 CreateUserPoolUpdateUserPoolAPI請求ENFORCEDAdvancedSecurityMode將 設定為 。如需{username}此範例中預留位置範本的詳細資訊,請參閱 設定驗證和邀請訊息

{ "AccountTakeoverRiskConfiguration": { "Actions": { "HighAction": { "EventAction": "MFA_REQUIRED", "Notify": true }, "LowAction": { "EventAction": "NO_ACTION", "Notify": true }, "MediumAction": { "EventAction": "MFA_IF_CONFIGURED", "Notify": true } }, "NotifyConfiguration": { "BlockEmail": { "Subject": "You have been blocked for suspicious activity", "TextBody": "We blocked {username} at {login-time} from {ip-address}." }, "From": "admin@example.com", "MfaEmail": { "Subject": "Suspicious activity detected, MFA required", "TextBody": "Unexpected sign-in from {username} on device {device-name}. You must use MFA." }, "NoActionEmail": { "Subject": "Suspicious activity detected, secure your user account", "TextBody": "We noticed suspicious sign-in activity by {username} from {city}, {country} at {login-time}. If this was not you, reset your password." }, "ReplyTo": "admin@example.com", "SourceArn": "arn:aws:ses:us-west-2:123456789012:identity/admin@example.com" } }, "CompromisedCredentialsRiskConfiguration": { "Actions": { "EventAction": "BLOCK" }, "EventFilter": [ "SIGN_UP" ] }, "RiskExceptionConfiguration": { "BlockedIPRangeList": [ "192.0.2.0/24","198.51.100.0/24" ], "SkippedIPRangeList": [ "203.0.113.0/24" ] }, "UserPoolId": "us-west-2_EXAMPLE" }
API (app client)

若要設定應用程式用戶端的進階安全組態,請傳送包含 UserPoolId 參數和 ClientId 參數的SetRiskConfigurationAPI請求。以下是應用程式用戶端的請求內文範例。此風險組態比使用者集區組態更嚴重,會封鎖高風險項目。它也會將遭入侵的憑證區塊套用至註冊、登入和密碼重設操作。

若要強制執行此組態,您必須在單獨的 CreateUserPoolUpdateUserPoolAPI請求ENFORCEDAdvancedSecurityMode將 設定為 。如需{username}此範例中預留位置範本的詳細資訊,請參閱 設定驗證和邀請訊息

{ "AccountTakeoverRiskConfiguration": { "Actions": { "HighAction": { "EventAction": "BLOCK", "Notify": true }, "LowAction": { "EventAction": "NO_ACTION", "Notify": true }, "MediumAction": { "EventAction": "MFA_REQUIRED", "Notify": true } }, "NotifyConfiguration": { "BlockEmail": { "Subject": "You have been blocked for suspicious activity", "TextBody": "We blocked {username} at {login-time} from {ip-address}." }, "From": "admin@example.com", "MfaEmail": { "Subject": "Suspicious activity detected, MFA required", "TextBody": "Unexpected sign-in from {username} on device {device-name}. You must use MFA." }, "NoActionEmail": { "Subject": "Suspicious activity detected, secure your user account", "TextBody": "We noticed suspicious sign-in activity by {username} from {city}, {country} at {login-time}. If this was not you, reset your password." }, "ReplyTo": "admin@example.com", "SourceArn": "arn:aws:ses:us-west-2:123456789012:identity/admin@example.com" } }, "ClientId": "1example23456789", "CompromisedCredentialsRiskConfiguration": { "Actions": { "EventAction": "BLOCK" }, "EventFilter": [ "SIGN_UP", "SIGN_IN", "PASSWORD_CHANGE" ] }, "RiskExceptionConfiguration": { "BlockedIPRangeList": [ "192.0.2.1/32","192.0.2.2/32" ], "SkippedIPRangeList": [ "192.0.2.3/32","192.0.2.4/32" ] }, "UserPoolId": "us-west-2_EXAMPLE" }