本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 AWS WAF Web ACL與使用者集區建立關聯
AWS WAF 是 Web 應用程式防火牆。使用 AWS WAF Web 存取控制清單 (Web ACL),您可以保護您的使用者集區免於對託管 UI 和 Amazon Cognito API服務端點提出不必要的請求。Web ACL可讓您精細控制使用者集區回應的所有 HTTPS Web 請求。如需 AWS WAF Web 的詳細資訊ACLs,請參閱 AWS WAF 開發人員指南 中的管理和使用 Web 存取控制清單 (Web ACL)。
當您有與使用者集區ACL相關聯的 AWS WAF Web 時,Amazon Cognito 會將使用者所選取之非機密標頭和請求內容轉送至 AWS WAF。 AWS WAF 會檢查請求的內容、將其與您在 Web 中指定的規則進行比較ACL,並將回應傳回給 Amazon Cognito
AWS WAF Web ACLs和 Amazon Cognito 相關須知
-
遭 封鎖的請求 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 的超大請求。
-
您無法將使用詐騙控制帳戶接管預防 ACL () 的 Web 與 Amazon Cognito 使用者集區建立關聯。 AWS WAF ATP您可以在新增
AWS-AWSManagedRulesATPRuleSet
受管規則群組時實作 ATP功能。在將其與使用者集區建立關聯之前,請確定您的 Web ACL不會使用此受管規則群組。 -
當您的 AWS WAF Web 與使用者集區ACL相關聯,且 Web 中的規則ACL顯示 時CAPTCHA,可能會導致託管 UI TOTP註冊發生無法復原的錯誤。若要建立具有CAPTCHA動作且不會影響託管 UI 的規則TOTP,請參閱 ACL 為託管 UI 設定您的 AWS WAF Web TOTP MFA。
AWS WAF 會檢查對下列端點的請求。
- 託管 UI
-
對 使用者集區端點和託管 UI 參考 中所有端點的請求。
- 公開API操作
-
從您的應用程式向不使用 AWS 憑證進行授權的 Amazon Cognito API提出的請求。這包括 InitiateAuth、 RespondToAuthChallenge和 等API操作GetUser。在 範圍內API的操作 AWS WAF 不需要使用 AWS 憑證進行身分驗證。其未經身分驗證,或使用工作階段字串或存取字符進行授權。如需詳細資訊,請參閱Amazon Cognito 使用者集區已驗證和未驗證API的操作。
您可以使用計數 、允許 、封鎖 或呈現 的ACL規則動作,在 Web 中設定規則CAPTCHA,以回應符合規則的請求。如需詳細資訊,請參閱《AWS WAF 開發人員指南》中的 AWS WAF 規則。依據規則動作,您可自訂 Amazon Cognito 傳回給使用者的回應。
重要
自訂錯誤回應的選項取決於您提出API請求的方式。
-
您可自訂託管 UI 請求的錯誤碼和回應主體。您只能CAPTCHA為使用者在託管 UI 中解決 。
-
對於使用 Amazon Cognito 使用者集區 API提出的請求,您可以自訂接收區塊回應之請求的回應內文。您還可於 400–499 範圍內指定自訂錯誤代碼。
-
AWS Command Line Interface (AWS CLI) 和 AWS SDKs會將
ForbiddenException
錯誤傳回給產生封鎖或CAPTCHA回應的請求。
將 Web ACL與您的使用者集區建立關聯
若要在使用者集ACL區中使用 Web,您的 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 (使用者集區),然後選擇您要編輯的使用者集區。
-
選擇 User pool properties (使用者集區屬性) 標籤。
-
選擇 AWS WAF 旁的 Edit (編輯)。
-
在 下AWS WAF,選取 AWS WAF 搭配使用者集區使用 。
-
選擇您已建立的 AWS WAF WebACL,或選擇在 ACL 中建立 Web AWS WAF,以在 中的新 AWS WAF 工作階段中建立 Web AWS Management Console。
-
選擇 Save changes (儲存變更)。
若要以程式設計方式將 Web ACL與 AWS Command Line Interface 或 中的使用者集區建立關聯SDK,請使用 AssociateWebACL 中的 AWS WAF API。Amazon Cognito 沒有與 Web 建立關聯的個別API操作ACL。
測試和記錄 AWS WAF Web ACLs
當您將規則動作設定為 Web 中的計數時ACL, 會將請求 AWS WAF 新增至符合規則的請求計數。若要ACL使用使用者集區測試 Web,請將規則動作設定為計數,並考慮符合每個規則的請求量。例如,若您要設定為 Block (封鎖) 動作的規則與您確定為正常使用者流量的大量請求相符合,您可能需要重新設定您的規則。如需詳細資訊,請參閱 開發人員指南中的測試和調校您的 AWS WAF 保護。 AWS WAF
您也可以設定 AWS WAF 將請求標頭記錄至 Amazon CloudWatch Logs 日誌群組、Amazon Simple Storage Service (Amazon S3) 儲存貯體或 Amazon Data Firehose。您可以API藉由 x-amzn-cognito-client-id
和 識別您使用使用者集區提出的 Amazon Cognito 請求x-amzn-cognito-operation-name
。託管的 UI 請求僅包括 x-amzn-cognito-client-id
標題。如需詳細資訊,請參閱 AWS WAF 開發人員指南 中的記錄 Web ACL流量。
AWS WAF Web ACLs 不受 Amazon Cognito 進階安全功能 定價
記錄 AWS WAF 請求資料會受到您以日誌為目標之服務的額外計費。如需詳細資訊,請參閱 AWS WAF 開發人員指南 中的記錄 Web ACL流量資訊的定價。