View a markdown version of this page

Ordnen Sie einen zu AWS WAF Web-ACL mit einem Benutzerpool - Amazon Cognito

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Ordnen Sie einen zu AWS WAF Web-ACL mit einem Benutzerpool

AWS WAF ist eine Firewall für Webanwendungen. Mit einer AWS WAF Web-Zugriffskontrollliste (Web ACL) können Sie Ihren Benutzerpool vor unerwünschten Anfragen an Ihre klassische gehostete Benutzeroberfläche, verwaltete Anmeldung und Amazon Cognito API-Serviceendpunkte schützen. Eine Web-ACL ermöglicht eine differenziertere Kontrolle aller HTTPS-Webanforderungen, auf die Ihr Benutzerpool reagiert. Weitere Informationen zu AWS WAF -Web-ACLs finden Sie unter Verwalten und Verwenden von Web-Zugriffskontrolllisten (Web-ACL) im Entwicklerhandbuch zu AWS WAF .

Wenn Sie eine AWS WAF Web-ACL mit einem Benutzerpool verknüpft haben, leitet Amazon Cognito ausgewählte nicht vertrauliche Header und Inhalte von Anfragen Ihrer Benutzer an weiter. AWS WAF AWS WAF untersucht den Inhalt der Anfrage, vergleicht sie mit den Regeln, die Sie in Ihrer Web-ACL angegeben haben, und gibt eine Antwort an Amazon Cognito zurück. Die Anforderungskomponenten, an die Amazon Cognito weiterleitet, AWS WAF hängen von der Art der Anfrage ab. Bei verwalteter Anmeldung und der klassischen gehosteten Benutzeroberfläche leitet Amazon Cognito den Anfragetext nicht weiter. Weitere Informationen finden Sie unter Dinge, über die Sie Bescheid wissen sollten AWS WAF Web-ACLs und Amazon Cognito.

Dinge, über die Sie Bescheid wissen sollten AWS WAF Web-ACLs und Amazon Cognito

  • Sie können Web-ACL-Regeln nicht so konfigurieren, dass sie mit persönlich identifizierbaren Informationen (PII) in Benutzerpoolanfragen übereinstimmen, z. B. Benutzernamen, Passwörter, Telefonnummern oder E-Mail-Adressen. Diese Daten werden nicht verfügbar sein für. AWS WAF Konfigurieren Sie stattdessen Ihre Web-ACL-Regeln so, dass sie mit den Sitzungsdaten in den Headern, Pfaden und Textteilen wie IP-Adressen, Browser-Agenten und angeforderten API-Vorgängen übereinstimmen.

  • Amazon Cognito unterstützt textbasierte Web-ACL-Regeln nur für Anfragen an die Benutzerpools-API. Bei verwalteter Anmeldung und der klassischen gehosteten Benutzeroberfläche leitet Amazon Cognito den Anfragetext nicht weiter und untersucht nur die Header und andere Nicht-Body-Komponenten.

  • Web-ACL-Regeln können Ihre benutzerdefinierte Blockantwort nur zurückgeben, wenn der Browser eine verwaltete Anmeldeseite lädt. Anfragen, die die Seite ohne erneutes Laden sendet, z. B. wenn ein Benutzer das Anmeldeformular absendet, erhalten stattdessen eine standardmäßige 403 Blockantwort.

  • Anfragen, die von blockiert wurden, werden für AWS WAF keinen Anfragetyp auf das Kontingent für die Anforderungsrate angerechnet. Der AWS WAF Handler wird vor den API-level Drosselungsprozeduren aufgerufen.

  • Wenn Sie eine Web-ACL erstellen, dauert es ein wenig, bis die Web-ACL vollständig weitergegeben wurde und für Amazon Cognito verfügbar ist. Die Übertragungszeit kann zwischen einigen Sekunden und mehreren Minuten liegen. AWS WAF gibt a zurück WAFUnavailableEntityException, wenn Sie versuchen, eine Web-ACL zuzuordnen, bevor sie vollständig weitergegeben wurde.

  • Sie können jedem Benutzerpool eine Web-ACL zuordnen.

  • Ihre Anfrage könnte zu einer Nutzlast führen, die die Grenzwerte für das übersteigt, was AWS WAF überprüfen kann. Unter Behandlung übergroßer Anforderungskomponenten im AWS WAF Entwicklerhandbuch erfahren Sie, wie Sie konfigurieren können, wie mit übergroßen Anfragen von Amazon Cognito AWS WAF umgegangen wird.

  • Sie können eine Web-ACL, die AWS WAF Fraud Control Account Takeover Prevention (ATP) verwendet, nicht mit einem Amazon Cognito Cognito-Benutzerpool verknüpfen. Die ATP-Funktion befindet sich in der AWS-AWSManagedRulesATPRuleSet verwalteten Regelgruppe. Bevor Sie eine Web-ACL einem Benutzerpool zuordnen, stellen Sie sicher, dass dieser diese verwaltete Regelgruppe nicht verwendet.

  • Wenn Sie eine AWS WAF Web-ACL mit einem Benutzerpool verknüpft haben und eine Regel in Ihrer Web-ACL ein CAPTCHA enthält, kann dies zu einem nicht behebbaren Fehler bei der TOTP-Registrierung für die verwaltete Anmeldung führen. Informationen zum Erstellen einer Regel mit einer CAPTCHA-Aktion, die sich nicht auf das TOTP für verwaltete Logins auswirkt, finden Sie unter. Konfiguration Ihres AWS WAF Web-ACL für verwaltete Anmeldung TOTP MFA

  • Wenn eine Regel in Ihrer Web-ACL eine benutzerdefinierte Blockantwort zurückgibt, fügt Amazon Cognito dieser Antwort einen Content-Security-Policy Header hinzu. Diese Richtlinie erlaubt nur Skripts, die aus derselben Quelle stammen wie Ihre Benutzerpool-Domain und aus den von Amazon AWS WAF Cognito bereitgestellten CAPTCHA- und Challenge-Skripten stammen. Sie blockiert jedes andere Inline-Skript oder Skript von Drittanbietern, einschließlich eines Skripts, das Ihr benutzerdefinierter Antworttext verwendet, um den Benutzer weiterzuleiten. Weitere Informationen finden Sie unter Content-Security-Policy bei benutzerdefinierten Blockantworten.

  • Wenn eine Regel in Ihrer Web-ACL als Antwort auf eine verwaltete Anmeldung oder eine klassische Hosted UI-Anfrage eine benutzerdefinierte Blockantwort mit einem HTTP-Statuscode von 500 oder höher zurückgibt, gibt Amazon Cognito stattdessen einen 403 (Forbidden) Statuscode zurück. Weitere Informationen finden Sie unter Statuscodes in benutzerdefinierten Blockantworten.

AWS WAF untersucht Anfragen an die folgenden Endpunkte.

Verwaltete Anmeldung und die klassische gehostete Benutzeroberfläche

Anforderungen aller Endpunkte in der Benutzerpool-Endpunkte und Referenz für verwaltete Logins.

Öffentliche API-Operationen

Anfragen von Ihrer App an die Amazon Cognito Cognito-API, die keine AWS Anmeldeinformationen zur Autorisierung verwenden. Dazu gehören API-Operationen wie InitiateAuthRespondToAuthChallenge, und. GetUser Die API-Operationen, die in den Geltungsbereich von fallen, erfordern AWS WAF keine Authentifizierung mit AWS Anmeldeinformationen. Sie sind entweder nicht authentifiziert oder mit einer Sitzungszeichenfolge bzw. einem Zugriffstoken autorisiert. Weitere Informationen finden Sie unter Liste der API-Operationen, gruppiert nach Autorisierungsmodell.

Sie können die Regeln in Ihrer Web-ACL mit den Regelaktionen Count (Zählen), Allow (Zulassen) und Block (Blockieren) konfigurieren oder ein CAPTCHA als Antwort auf eine Anfrage anzeigen, die mit einer Regel übereinstimmt. Weitere Informationen finden Sie unter AWS WAF -Regeln im Entwicklerhandbuch zu AWS WAF . Abhängig von der Regelaktion können Sie die Antwort anpassen, die Amazon Cognito an Ihre Benutzer zurückgibt.

Wichtig

Ihre Optionen zur Anpassung der Fehlerantwort hängen davon ab, wie Sie eine API-Anfrage stellen.

  • Sie können den Fehlercode und den Antworttext verwalteter Anmeldeanfragen anpassen. Amazon Cognito gibt benutzerdefinierte Fehlercodes von 500 und höher als 403 zurück. Weitere Informationen finden Sie unter Statuscodes in benutzerdefinierten Blockantworten. Sie können Ihrem Benutzer nur bei der verwalteten Anmeldung ein CAPTCHA zur Lösung vorlegen.

  • Für Anforderungen, die Sie mit der Benutzerpool-API von Amazon Cognito vornehmen, können Sie den Antworttext einer Anforderung anpassen, die eine Blockieren-Antwort erhält. Sie können auch einen benutzerdefinierten Fehlercode im Bereich 400 bis 499 angeben.

  • Die SDKs AWS Command Line Interface (AWS CLI) und die AWS SDKs geben bei Anfragen, die eine Block - oder CAPTCHA-Antwort erzeugen, einen ForbiddenException Fehler zurück.

Content-Security-Policy bei benutzerdefinierten Blockantworten

Wenn Ihre benutzerdefinierte Blockantwort auf Skripten basiert, kann sich diese Richtlinie auf ihr Verhalten auswirken. Wenn eine Web-ACL-Regel eine benutzerdefinierte Blockantwort auf die verwaltete Anmeldung oder die klassische gehostete Benutzeroberfläche zurückgibt, fügt Amazon Cognito dieser Antwort einen Content-Security-Policy (CSP-) Header hinzu. CSP ist ein Browser-Sicherheitsmechanismus, der einschränkt, welche Skripte und andere Ressourcen eine Seite laden kann. Die Richtlinie schränkt die Antwort wie folgt ein:

  • Die Antwort kann Skripts und andere Ressourcen aus demselben Ursprung wie Ihre Benutzerpool-Domain enthalten.

  • Die Antwort kann die von Amazon AWS WAF Cognito bereitgestellten CAPTCHA- und Challenge-Skripte enthalten. Amazon Cognito listet diese Skripts auf, sodass AWS WAF CAPTCHA- und Challenge-Regelaktionen weiterhin funktionieren.

Jedes andere Inline-Skript und jedes Skript, das auf einer anderen Domain als Ihrer Benutzerpool-Domain gehostet wird, wird nicht ausgeführt. Dazu gehört ein Skript, das ein benutzerdefinierter Antworttext verwendet, um den Benutzer umzuleiten, ein Formular zu senden oder eine Netzwerkanfrage zu senden.

Wenn Ihre benutzerdefinierte Antwort den Benutzer umleiten muss, geben Sie statt einer skriptbasierten Weiterleitung einen HTTP 3xx-Statuscode und einen Location Header zurück. Dieses Muster hängt nicht von der Ausführung des Skripts ab und wird auch nicht vom CSP beeinflusst.

Dieses Verhalten gilt überall AWS-Regionen dort, wo Sie eine Web-ACL einem Benutzerpool zuordnen können.

Statuscodes in benutzerdefinierten Blockantworten

Amazon Cognito gibt keine 5xx Statuscodes von AWS WAF benutzerdefinierten Blockantworten zurück. Wenn eine Web-ACL-Regel eine benutzerdefinierte Blockantwort mit einem Statuscode von 500 oder höher zurückgibt, antwortet Amazon Cognito stattdessen mit einem 403 (Forbidden) Statuscode. Die Antwort enthält weiterhin die Kopfzeilen und den Text Ihrer benutzerdefinierten Antwort. Dieses Verhalten gilt wie folgt:

  • Verwaltete Anmeldeseiten — Wenn der Browser eine verwaltete Anmeldeseite lädt, kehrt Amazon Cognito 403 mit den Kopfzeilen und dem Text Ihrer benutzerdefinierten Antwort zurück. Anfragen, die die Seite ohne erneutes Laden sendet, wie z. B. das Einreichen von Formularen, erhalten die standardmäßige 403 Blockantwort ohne Ihre benutzerdefinierten Header oder Ihren Text.

  • Klassische gehostete UI-Seiten und andere Benutzerpool-Endpunkte — Amazon Cognito kehrt 403 mit den Kopfzeilen und dem Hauptteil Ihrer benutzerdefinierten Antwort für klassisch gehostete UI-Seiten zurück. Der Identitätsanbieter und die Endgeräte der vertrauenden Partei verhalten sich auf die gleiche Weise, unabhängig davon, ob Ihr Benutzerpool die verwaltete Anmeldung oder das klassische Branding für gehostete Benutzeroberflächen verwendet.

  • Benutzerpools-API — Die Benutzerpools-API gibt Ihren benutzerdefinierten Statuscode nur zurück, wenn er im Bereich 400—499 liegt, und kehrt 403 für andere Statuscodes zurück.

Zuordnen einer Web-ACL zu Ihrem Benutzerpool

Um mit einer Web-ACL in Ihrem Benutzerpool arbeiten zu können, muss Ihr AWS Identity and Access Management (IAM-) Principal über die folgenden Amazon Cognito- und AWS WAF Berechtigungen verfügen. Informationen zu AWS WAF Berechtigungen finden Sie unter AWS WAF API-Berechtigungen im AWS WAF Entwicklerhandbuch.

JSON
{ "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/*" ] } ] }

Sie müssen zwar IAM-Berechtigungen gewähren, aber die aufgelisteten Aktionen sind nur für Genehmigungen bestimmt und entsprechen keinem API-Vorgang.

Zur Aktivierung AWS WAF für Ihren Benutzerpool und ordnen Sie eine Web-ACL zu
  1. Melden Sie sich bei der Amazon Cognito-Konsole an.

  2. Wählen Sie im Navigationsbereich erst User Pools (Benutzerpools) aus und anschließend den Benutzerpool, den Sie bearbeiten möchten.

  3. Wählen Sie die AWS WAFRegisterkarte im Bereich Sicherheit.

  4. Wählen Sie Bearbeiten aus.

  5. Wählen Sie AWS WAF Mit Ihrem Benutzerpool verwenden aus.

    Screenshot des AWS WAF Dialogfelds, in dem die Option „ AWS WAF Mit Ihrem Benutzerpool verwenden“ ausgewählt ist.
  6. Wählen Sie eine AWS WAF Web-ACL, die Sie bereits erstellt haben, oder wählen Sie Web-ACL erstellen in, AWS WAF um eine Web-ACL in einer neuen AWS WAF Sitzung in der zu erstellen AWS-Managementkonsole.

  7. Wählen Sie Änderungen speichern aus.

Verwenden Sie ACL aus der API, um Ihrem Benutzerpool im AWS Command Line Interface oder einem SDK programmgesteuert eine AssociateWebWeb-ACL zuzuordnen. AWS WAF Amazon Cognito verfügt nicht über eine separaten API-Operation zum Zuordnen einer Web-ACL.

Testen und Protokollieren AWS WAF Web-ACLs

Wenn Sie eine Regelaktion in Ihrer Web-ACL auf Count setzen, wird die Anfrage zu einer Anzahl von Anfragen AWS WAF hinzugefügt, die der Regel entsprechen. Setzen Sie zum Testen einer Web-ACL mit Ihrem Benutzerpool die Regelaktionen auf Count (Zählen) und berücksichtigen Sie das Volumen der Anforderungen, die mit den einzelnen Regeln übereinstimmen. Wenn beispielsweise eine Regel, die Sie auf die Aktion Block (Blockieren) setzen möchten, mit einer großen Anzahl von Anforderungen übereinstimmt, die Sie als normalen Benutzerverkehr einstufen. müssen Sie Ihre Regel möglicherweise neu konfigurieren. Weitere Informationen finden Sie im AWS WAF Entwicklerhandbuch unter Testen und Optimieren Ihres AWS WAF Schutzes.

Sie können auch so konfigurieren AWS WAF , dass Anforderungsheader in einer Amazon CloudWatch Logs-Protokollgruppe, einem Amazon Simple Storage Service (Amazon S3) -Bucket oder einer Amazon Data Firehose protokolliert werden. Sie können die Amazon-Cognito-Anforderungen, die Sie mit der Benutzerpool-API vornehmen, anhand von x-amzn-cognito-client-id und x-amzn-cognito-operation-name identifizieren. Verwaltete Anmeldeanfragen enthalten nur den x-amzn-cognito-client-id Header. Weitere Informationen finden Sie unter Protokollieren des Web-ACL-Datenverkehrs im Entwicklerhandbuch zu AWS WAF .

AWS WAF Web-ACLs sind in allen Featureplänen für Benutzerpools verfügbar. Die Sicherheitsfunktionen von AWS WAF ergänzen den Bedrohungsschutz von Amazon Cognito. Sie können beide Funktionen in einem Benutzerpool aktivieren. AWS WAF berechnet die Überprüfung von Benutzerpool-Anforderungen separat. Weitere Informationen finden Sie unter AWS WAF  – Preise.

Die Protokollierung von AWS WAF Anforderungsdaten unterliegt einer zusätzlichen Abrechnung durch den Dienst, für den Sie Ihre Protokolle verwenden. Weitere Informationen finden Sie unter Preise für die Protokollierung von Web-ACL-Datenverkehrsinformationen im Entwicklerhandbuch zu AWS WAF .