建立 AWS WAF Web ACL 與使用者集區的關聯 - Amazon Cognito

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

建立 AWS WAF Web ACL 與使用者集區的關聯

AWS WAF 是一個 Web 應用程序防火牆。使用 AWS WAF Web 存取控制清單 (Web ACL),您可以保護使用者集區不受對託管 UI 和 Amazon Cognito API 服務端點發出不必要的請求。Web ACL 可讓您對使用者集區回應的所有 HTTPS Web 要求進行精細控制。如需有關 AWS WAF Web ACL 的詳細資訊,請參閱AWS WAF 開發人員指南中的管理和使用 Web 存取控制清單 (Web ACL)

當您的 AWS WAF Web ACL 與使用者集區相關聯時,Amazon Cognito 會將選取的非機密標頭和請求內容從您的使用者轉寄到。 AWS WAF AWS WAF 檢查請求的內容,將其與您在 Web ACL 中指定的規則進行比較,然後將回應傳回給 Amazon Cognito。

關於 AWS WAF 網絡 ACL 和 Amazon Cognito 的知識

  • 被封鎖的要求 AWS WAF 不會計入任何要求類型的要求率配額中。會在 API 層級節流 AWS WAF 處理常式之前呼叫處理常式。

  • 當您建立 Web ACL 時,在 Web ACL 完全傳播並可供 Amazon Cognito 使用之前會經歷一小段時間。傳輸時間可以是幾秒鐘到分鐘數。 AWS WAF WAFUnavailableEntityException當您嘗試在 Web ACL 完全傳播之前建立關聯時,會傳回 a。

  • 您可建立 Web ACL 與使用者集區的關聯。

  • 您的請求可能會導致負載大於 AWS WAF 可以檢查的限制。請參閱AWS WAF 開發人員指南中的超大請求元件處理,了解如何設定如何 AWS WAF 處理 Amazon Cognito 的過大請求。

  • 您無法將使用 AWS WAF 詐騙控制帳戶接管預防 (ATP) 的網路 ACL 與 Amazon Cognito 使用者集區建立關聯。您可於新增 AWS-AWSManagedRulesATPRuleSet 受管規則群組時實作 ATP 功能。將其與使用者集區關聯之前,請確定您的 Web ACL 並未使用此受管規則群組。

  • 當您擁有與使用者集區相關聯的 AWS WAF Web ACL,且 Web ACL 中的規則顯示驗證碼時,這可能會導致託管 UI TOTP 註冊中無法復原的錯誤。若要建立具有 CAPTCHA 動作且不會影響託管 UI TOTP 的規則,請參閱 為託管的使用者介面 TOTP MFA 設定您的 AWS WAF 網頁 ACL

AWS WAF 檢查對下列端點的要求。

託管 UI

使用者集區聯合端點和託管 UI 參考 中所有端點的請求。

公有 API 操作

從您的應用程式向不使用 AWS 登入資料進行授權的 Amazon Cognito API 的請求。這包括 API 操作 InitiateAuth,例如 RespondToAuthChallenge,和GetUser。範圍內的 API 操作 AWS WAF 不需要使用憑據進行身份驗 AWS 證。其未經身分驗證,或使用工作階段字串或存取字符進行授權。如需詳細資訊,請參閱 Amazon Cognito 使用者集區經身分驗證和未進行身分驗證的 API 操作

您可使用 Count (計數)、Allow (允許)、Block (封鎖) 或顯示 CAPTCHA (驗證碼) 以回應與規則相符之請求的規則作業,來設定 Web ACL 中的規則。如需詳細資訊,請參閱《AWS WAF 開發人員指南》中的 AWS WAF 規則。依據規則動作,您可自訂 Amazon Cognito 傳回給使用者的回應。

重要

自訂錯誤回應的選項取決於您提出 API 請求的方式。

  • 您可自訂託管 UI 請求的錯誤碼和回應主體。您僅可於託管 UI 中為您的使用者提供驗證碼以解決問題。

  • 對於您使用 Amazon Cognito 使用者集區 API 提出的請求,您可自訂接收 封鎖 回應請求的回應主體。您還可於 400–499 範圍內指定自訂錯誤代碼。

  • AWS Command Line Interface (AWS CLI) 和 AWS SDK 會針對產生封鎖驗證碼回應的要求傳回ForbiddenException錯誤。

將 Web ACL 與您的使用者集區建立關聯

若要在使用者集區中使用 Web ACL,您的 AWS Identity and Access Management (IAM) 主體必須具有下列 Amazon Cognito 許可。如需有關 AWS WAF 權限的詳細資訊,請參閱AWS WAF 開發人員指南中的 AWS WAF API 權限

  • cognito-idp:AssociateWebACL

  • cognito-idp:DisassociateWebACL

  • cognito-idp:GetWebACLForResource

  • cognito-idp:ListResourcesForWebACL

雖然您必須授與 IAM 許可,但列出的操作僅限許可,並且不對應於 API 操作

AWS WAF 為您的使用者集區啟用並關聯 Web ACL 的步驟

  1. 登入 Amazon Cognito 主控台

  2. 在導覽窗格中,選擇 User Pools (使用者集區),然後選擇您要編輯的使用者集區。

  3. 選擇 User pool properties (使用者集區屬性) 標籤。

  4. 選擇 AWS WAF 旁的 Edit (編輯)。

  5. 在下 AWS WAF,選取 AWS WAF 與您的使用者集區搭配使用。

    選取「搭配使用者集區使 AWS WAF 用」的 AWS WAF 對話方塊螢幕擷取畫面。
  6. 選擇您已經建立的 AWS WAF Web ACL,或選擇在中建立 Web ACL,在中 AWS WAF的新 AWS WAF 工作階段中建立一個 ACL AWS Management Console。

  7. 選擇儲存變更

若要以程式設計方式將 Web ACL 與 AWS Command Line Interface 或 SDK 中的使用者集區建立關聯,請使用 AWS WAF API 中的 AssociateWebACL。Amazon Cognito 沒有關聯 Web ACL 的單獨 API 操作。

測試和記錄 AWS WAF 網頁 ACL

當您在 Web ACL 中將規則動作設定為「計數」時,會將要求 AWS WAF 新增至符合規則的要求計數。如要使用您的使用者集區測試 Web ACL,請將規則動作設定為 Count (計數),並考慮與每個規則相符的請求量。例如,若您要設定為 Block (封鎖) 動作的規則與您確定為正常使用者流量的大量請求相符合,您可能需要重新設定您的規則。如需詳細資訊,請參閱 AWS WAF 開發人員指南的測試和調整您的 AWS WAF 保護

您也可以設定 AWS WAF 將請求標頭記錄到 Amazon CloudWatch 日誌日誌群組、亞馬遜簡單儲存服務 (Amazon S3) 儲存貯體或 Amazon 資料 Firehose。您可透過 x-amzn-cognito-client-idx-amzn-cognito-operation-name 識別您使用使用者集區 API 提出的 Amazon Cognito 請求。託管的 UI 請求僅包括 x-amzn-cognito-client-id 標題。如需詳細資訊,請參閱《AWS WAF 開發人員指南》中的記錄 Web ACL 流量

AWS WAF 網路 ACL 不受 Amazon Cognito 進階安全功能的定價約束。 AWS WAF 補充 Amazon Cognito 進階安全功能的安全功能的安全功能。您可以在使用者集區中啟用這兩個功能。 AWS WAF 單獨用於檢查用戶池請求的帳單。如需詳細資訊,請參閱 AWS WAF 定價

記錄 AWS WAF 要求資料需由您指定記錄的服務收取額外費用。如需詳細資訊,請參閱《AWS WAF 開發人員指南》中的記錄 Web ACL 流量資訊的定價