本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 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 Web ACLs 和 Amazon Cognito 的須知事項
-
您無法設定 Web ACL 規則以符合使用者集區請求中的個人身分識別資訊 (PII),例如使用者名稱、密碼、電話號碼或電子郵件地址。此資料將無法供 使用 AWS WAF。反之,請將 Web ACL 規則設定為符合標頭、路徑和內文中的工作階段資料,例如 IP 地址、瀏覽器代理程式和請求的 API 操作。
-
Web ACL 中的規則條件必須符合使用者對受管登入的第一個請求。他們的第一個請求通常是 授權端點。授權端點一律會重新導向請求;請勿在 Web ACL 規則中設定符合的 URL 路徑。
-
封鎖的請求 AWS WAF 不會計入任何請求類型的請求率配額。在 API 層級調節 AWS WAF 處理常式之前呼叫處理常式。
-
當您建立 Web ACL 時,在 Web ACL 完全傳播並可供 Amazon Cognito 使用之前會經歷一小段時間。傳播時間可以是幾秒鐘到幾分鐘。當您嘗試在 Web ACL 完全傳播之前建立關聯
WAFUnavailableEntityException
時, AWS WAF 會傳回 。 -
您可以將一個 Web ACL 與每個使用者集區建立關聯。
-
您的請求可能會導致負載大於 AWS WAF 可以檢查的限制。請參閱《 AWS WAF 開發人員指南》中的過大請求元件處理,了解如何設定 如何處理來自 Amazon Cognito AWS WAF 的過大請求。
-
您無法將使用 AWS WAF Fraud Control 帳戶接管預防 (ATP) 的 Web ACL 與 Amazon Cognito 使用者集區建立關聯。您可於新增
AWS-AWSManagedRulesATPRuleSet
受管規則群組時實作 ATP 功能。將其與使用者集區關聯之前,請確定您的 Web ACL 並未使用此受管規則群組。 -
當您的 AWS WAF Web ACL 與使用者集區相關聯,且 Web ACL 中的規則顯示 CAPTCHA 時,這可能會導致受管登入 TOTP 註冊發生無法復原的錯誤。若要建立具有 CAPTCHA 動作且不會影響受管登入 TOTP 的規則,請參閱 設定您的 AWS WAF Web ACL 以進行受管登入 TOTP MFA。
AWS WAF 會檢查對下列端點的請求。
- 受管登入和傳統託管 UI
-
對 使用者集區端點和受管登入參考 中所有端點的請求。
- 公有 API 操作
-
從您的應用程式請求不使用 AWS 登入資料進行授權的 Amazon Cognito API。此包括如 InitiateAuth、RespondToAuthChallenge 和 GetUser 的 API 作業。在 範圍內的 API 操作 AWS WAF 不需要使用 AWS 登入資料進行身分驗證。其未經身分驗證,或使用工作階段字串或存取字符進行授權。如需詳細資訊,請參閱依授權模型分組的 API 操作清單。
您可使用 Count (計數)、Allow (允許)、Block (封鎖) 或顯示 CAPTCHA (驗證碼) 以回應與規則相符之請求的規則作業,來設定 Web ACL 中的規則。如需詳細資訊,請參閱《AWS WAF 開發人員指南》中的 AWS WAF 規則。依據規則動作,您可自訂 Amazon Cognito 傳回給使用者的回應。
重要
自訂錯誤回應的選項取決於您提出 API 請求的方式。
-
您可以自訂受管登入請求的錯誤碼和回應內文。您只能為使用者提供 CAPTCHA,以便在受管登入中解決此問題。
-
對於您使用 Amazon Cognito 使用者集區 API 提出的請求,您可自訂接收 封鎖 回應請求的回應主體。您還可於 400–499 範圍內指定自訂錯誤代碼。
-
AWS Command Line Interface (AWS CLI) 和 AWS SDKs會傳回
ForbiddenException
錯誤給產生區塊或 CAPTCHA 回應的請求。
將 Web ACL 與您的使用者集區建立關聯
若要在使用者集區中使用 Web ACL,您的 AWS Identity and Access Management (IAM) 主體必須具有下列 Amazon Cognito 和 AWS WAF 許可。如需 AWS WAF 許可的相關資訊,請參閱《 AWS WAF 開發人員指南》中的 AWS WAF API 許可。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowWebACLUserPool", "Effect": "Allow", "Action": [ "cognito-idp:ListResourcesForWebACL", "cognito-idp:GetWebACLForResource", "cognito-idp:AssociateWebACL" ], "Resource": [ "arn:aws:cognito-idp:*:
123456789012
:userpool/*" ] }, { "Sid": "AllowWebACLUserPoolWAFv2", "Effect": "Allow", "Action": [ "wafv2:ListResourcesForWebACL", "wafv2:AssociateWebACL", "wafv2:DisassociateWebACL", "wafv2:GetWebACLForResource" ], "Resource": "arn:aws:wafv2:*:123456789012
:*/webacl/*/*" }, { "Sid": "DisassociateWebACL1", "Effect": "Allow", "Action": "wafv2:DisassociateWebACL", "Resource": "*" }, { "Sid": "DisassociateWebACL2", "Effect": "Allow", "Action": [ "cognito-idp:DisassociateWebACL" ], "Resource": [ "arn:aws:cognito-idp:*:123456789012
:userpool/*" ] } ] }
雖然您必須授予 IAM 許可,但列出的動作僅限許可,不會對應至任何 API 操作。
AWS WAF 為您的使用者集區啟用 並關聯 Web ACL
-
在導覽窗格中,選擇 User Pools (使用者集區),然後選擇您要編輯的使用者集區。
-
選擇安全區段中的AWS WAF索引標籤。
-
選擇編輯。
-
選取 AWS WAF 搭配您的使用者集區使用。
-
選擇您已建立的 AWS WAF Web ACL,或選擇在 中建立 Web ACL AWS WAF,以在 的新 AWS WAF 工作階段中建立一個 AWS Management Console。
-
選擇儲存變更。
若要以程式設計方式將 Web ACL 與 AWS Command Line Interface 或 SDK 中的使用者集區建立關聯,請從 AWS WAF API 使用 AssociateWebACL。Amazon Cognito 沒有關聯 Web ACL 的單獨 API 操作。
測試和記錄 AWS WAF Web ACLs
當您將規則動作設定為 Web ACL 中的計數時, 會將請求 AWS WAF 新增至符合規則的請求計數。如要使用您的使用者集區測試 Web ACL,請將規則動作設定為 Count (計數),並考慮與每個規則相符的請求量。例如,若您要設定為 Block (封鎖) 動作的規則與您確定為正常使用者流量的大量請求相符合,您可能需要重新設定您的規則。如需詳細資訊,請參閱《 開發人員指南》中的測試和調校您的 AWS WAF 保護。 AWS WAF
您也可以設定 AWS WAF 將請求標頭記錄到 Amazon CloudWatch Logs 日誌群組、Amazon Simple Storage Service (Amazon S3) 儲存貯體或 Amazon Data Firehose。您可透過 x-amzn-cognito-client-id
和 x-amzn-cognito-operation-name
識別您使用使用者集區 API 提出的 Amazon Cognito 請求。受管登入請求僅包含 x-amzn-cognito-client-id
標頭。如需詳細資訊,請參閱《AWS WAF 開發人員指南》中的記錄 Web ACL 流量。
AWS WAF Web ACLs可在所有使用者集區功能計劃中使用。的安全功能可 AWS WAF 補充 Amazon Cognito 威脅防護。您可於使用者集區中啟動這兩項功能。 AWS WAF 會單獨用於檢查使用者集區請求的帳單。如需詳細資訊,請參閱AWS WAF 定價
記錄 AWS WAF 請求資料需由您以日誌為目標的服務額外計費。如需詳細資訊,請參閱《AWS WAF 開發人員指南》中的記錄 Web ACL 流量資訊的定價。