So schützen Sie Ihre REST-APIs in API Gateway mithilfe von AWS WAF - Amazon API Gateway

So schützen Sie Ihre REST-APIs in API Gateway mithilfe von AWS WAF

AWS WAF ist eine webbasierte Firewall, die Webanwendungen und APIs vor Angriffen schützt. Sie ermöglicht es ihnen, eine Gruppe von Regeln (eine sogenannte Web-Zugriffskontrollliste oder Web-ACL) zum Zulassen, Blockieren oder Zählen von Webanforderungen basierend auf von Ihnen definierten anpassbaren Web-Sicherheitsregeln und Bedingungen zu konfigurieren. Weitere Informationen finden Sie unter Die Funktionsweise von AWS WAF.

Sie können AWS WAF verwenden, um Ihre API-Gateway-REST-API vor gängigen Web-Exploits wie SQL-Injection- und Cross-Site-Scripting (XSS)-Angriffen zu schützen. Diese können sich auf die Verfügbarkeit und Leistung der API auswirken, die Sicherheit gefährden oder übermäßige Ressourcen verbrauchen. Sie können beispielsweise Regeln zum Zulassen oder Blockieren von Anforderungen von angegebenen IP-Adressbereichen, Anforderungen von CIDR-Blocks, Anforderungen aus einem bestimmten Land oder einer bestimmten Region, Anforderungen mit bösartigem SQL-Code oder Anforderungen mit bösartigem Skript erstellen.

Sie können auch Regeln erstellen, die mit einer bestimmten Zeichenfolge oder einem regulären Ausdrucksmuster in HTTP-Headern, einer Methode, einer Abfragezeichenfolge, einer URI und dem Anforderungstext (nur für die ersten 8 KB) übereinstimmen. Außerdem können Sie Regeln zum Blockieren von Angriffen von bestimmten Benutzeragenten, bösartigen Bots und Content Scrapers erstellen. Beispielsweise können Sie mit durchsatzbasierten Regeln die Anzahl der zulässigen Webanforderungen angeben, die von jeder Client-IP in einem sich anschließenden, fortlaufend aktualisierten 5-Minuten-Zeitraum zugelassen werden.

Wichtig

AWS WAF ist die erste Verteidigungslinie gegen Web-Exploits. Wenn AWS WAF für eine API aktiviert ist, werden AWS WAF-Regeln vor anderen Zugriffskontrollfunktionen wie Ressourcenrichtlinien, IAM-Richtlinien, Lambda-Genehmigern und Amazon-Cognito-Genehmigern ausgewertet. Wenn z. B. AWS WAF den Zugriff von einem CIDR-Block verhindert, den eine Ressourcenrichtlinie gewährt, hat AWS WAF Vorrang und die Ressourcenrichtlinie wird nicht ausgewertet.

Um AWS WAF für Ihre API zu aktivieren, müssen Sie Folgendes tun:

  1. Erstellen Sie mithilfe der AWS WAF-Konsole, dem AWS-SDK oder der CLI eine regionale Web-ACL mit der gewünschten Kombination von verwalteten AWS WAF-Regeln und Ihren selbstdefinierten Regeln. Weitere Informationen finden Sie unter Erste Schritte mit AWS WAF und Web-Zugriffskontrolllisten (Web-ACL).

    Wichtig

    API Gateway benötigt eine AWS WAFV2-Web-ACL für eine regionale Anwendung oder eine AWS WAF Classic Regional-Web-ACL.

  2. Ordnen Sie die AWS WAF-Web-ACL einer API-Stufe zu. Dies können Sie mithilfe der AWS WAF-Konsole, AWS-SDK, CLI oder über die API-Gateway-Konsole tun.

So nutzen Sie die die API-Gateway-Konsole zur Verknüpfung einer AWS WAF-Web-ACL mit einer API-Gateway-API-Stufe:

Führen Sie die folgenden Schritte aus, um mithilfe der API-Gateway-Konsole eine regionale AWS WAF-Web-ACL mit einer vorhandenen API-Gateway-API-Stufe zu verknüpfen:

  1. Melden Sie sich bei der API-Gateway-Konsole unter https://console.aws.amazon.com/apigateway an.

  2. Wählen Sie eine vorhandene API oder erstellen Sie eine neue.

  3. Wählen Sie im Hauptnavigationsbereich Stages (Stufen) und anschließend eine Stufe aus.

  4. Wählen Sie im Abschnitt Stage details (Stufendetails) die Option Edit (Bearbeiten) aus.

  5. Wählen Sie Ihre Web-ACL unter Web Application Firewall (AWS WAF) aus.

    Wählen Sie eine AWS WAFV2-Web-ACL für eine regionale Anwendung aus, wenn Sie AWS WAFV2 verwenden. Die Web-ACL und alle anderen verwendeten AWS WAFV2-Ressourcen müssen sich in derselben Region wie Ihre API befinden.

    Wählen Sie eine regionale Web-ACL, wenn Sie AWS WAF Classic Regional verwenden.

  6. Klicken Sie auf Änderungen speichern.

Zuordnen einer regionalen AWS WAF-Web-ACL einer API-Gateway-API-Stufe mithilfe der AWS CLI

Der folgende associate-web-acl-Befehl verknüpft eine AWS WAFV2-Web-ACL für eine regionale Anwendung mit einer vorhandenen API Gateway-API-Stufe:

aws wafv2 associate-web-acl \ --web-acl-arn arn:aws:wafv2:{region}:111122223333:regional/webacl/test-cli/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --resource-arn arn:aws:apigateway:{region}::/restapis/4wk1k4onj3/stages/prod

Der folgende associate-web-acl-Befehl verknüpft eine AWS WAF Classic Regional-Web-ACL mit einer vorhandenen API Gateway-API-Stufe:

aws waf-regional associate-web-acl \ --web-acl-id 'aabc123a-fb4f-4fc6-becb-2b00831cadcf' \ --resource-arn 'arn:aws:apigateway:{region}::/restapis/4wk1k4onj3/stages/prod'

Zuordnen einer AWS WAF-Web-ACL zu einer API-Stufe mithilfe der AWS WAF-REST-API

Rufen Sie wie im folgenden Beispiel gezeigt den Befehl AssociateWebACL auf, wenn Sie die AWS WAFV2-REST-API zur Verknüpfung einer AWS WAFV2-Web-ACL zur regionalen Anwendung in einer vorhandenen API-Gateway-API-Stufe nutzen wollen:

import boto3 wafv2 = boto3.client('wafv2') wafv2.associate_web_acl( WebACLArn='arn:aws:wafv2:{region}:111122223333:regional/webacl/test/abc6aa3b-fc33-4841-b3db-0ef3d3825b25', ResourceArn='arn:aws:apigateway:{region}::/restapis/4wk1k4onj3/stages/prod' )

Rufen Sie wie im folgenden Beispiel gezeigt den Befehl AssociateWebACL auf, wenn Sie die AWS WAF-REST-API zur Verknüpfung einer AWS WAF Classic Regional-Web-ACL in einer vorhandenen API-Gateway-API-Stufe nutzen wollen:

import boto3 waf = boto3.client('waf-regional') waf.associate_web_acl( WebACLId='aabc123a-fb4f-4fc6-becb-2b00831cadcf', ResourceArn='arn:aws:apigateway:{region}::/restapis/4wk1k4onj3/stages/prod' )