Wie aktiviere ich die AWS-WAF-Protokollierung und sende Protokolle an CloudWatch, Amazon S3 oder Kinesis Data Firehose?

Letzte Aktualisierung: 22.07.2022

Ich möchte die Protokollierung für AWS WAF aktivieren und die Protokolle an Amazon CloudWatch, Amazon Simple Storage Service (Amazon S3) oder Amazon Kinesis Data Firehose senden. Wie aktiviere ich AWS-WAF-Protokolle und welche Berechtigungen sind erforderlich?

Kurzbeschreibung

Wählen Sie zunächst ein unterstütztes Ziel für Ihre AWS-WAF-Web-ACL aus. AWS WAF unterstützt die folgenden Protokollziele:

Stellen Sie sicher, dass Sie über die erforderlichen Ressourcenberechtigungen verfügen, um AWS-WAF-Protokolle zu aktivieren. Aktivieren Sie dann die AWS-WAF-Protokolle mit dem von Ihnen gewählten Ziel.

Auflösung

Die folgenden Ziele werden zum Speichern Ihrer AWS-WAF-Protokolle unterstützt:

Amazon CloudWatch Logs

Um die Protokolle an eine CloudWatch-Logs-Protokollgruppe zu senden, wählen Sie beim Aktivieren von AWS-WAF-Protokollen die CloudWatch-Logs-Protokollgruppe als Ziel aus.

Erstellen Sie entweder eine neue Protokollgruppe oder verwenden Sie eine vorhandene Protokollgruppe. Wenn diese Option aktiviert ist, werden AWS-WAF-Protokolle an Protokollgruppen in Protokollstreams gesendet. Sie können diese Protokolle mithilfe von Protokoll-Einblicke analysieren. Weitere Informationen finden Sie unter: Welche Optionen habe ich, um in CloudWatch oder Amazon S3 gespeicherte AWS-WAF-Protokolle zu analysieren?

Beachten Sie beim Verwenden von CloudWatch-Protokollen Folgendes:

  • Protokollgruppennamen müssen mit dem Präfix aws-waf-logs- beginnen.
  • Protokollgruppen müssen sich in demselben AWS-Konto und derselben Region wie Ihre Web-ACL befinden. Bei globalen Web-ACLs, die mit CloudFront verknüpft sind, muss sich die Protokollgruppe in der Region USA Ost (Nord-Virginia) befinden.
  • Protokollgruppen haben Kontingente für Protokollgruppen beim Speichern von Protokollen.
  • In Protokollgruppen erstellte Protokollstreams haben das folgende Format:
Region_web-acl-name_log-stream-number

Erforderliche Berechtigungen

Das Konto, das die AWS-WAF-Protokolle mithilfe der CloudWatch-Logs-Protokollgruppe einschaltet, muss über die folgenden Berechtigungen verfügen:

  • wafv2:PutLoggingConfiguration
  • wafv2:DeleteLoggingConfiguration
  • logs:CreateLogDelivery
  • logs:DeleteLogDelivery
  • logs:PutResourcePolicy
  • logs:DescribeResourcePolicies
  • logs:DescribeLogGroups

Diese Berechtigungen sind erforderlich, um die Konfiguration der Web-ACL-Protokollierung zu ändern, die Protokollübermittlung zu konfigurieren und Berechtigungen für eine Protokollgruppe abzurufen und zu bearbeiten. Diese Berechtigungen müssen dem Benutzer zugewiesen werden, der AWS WAF verwaltet.

Wenn diese Berechtigungen zugewiesen werden, fügt AWS automatisch die folgende Richtlinie in die ressourcenbasierten Richtlinien von CloudWatch Logs ein. Auf diese Weise können Bereitstellungsdienste Protokolle an eine CloudWatch-Logs-Protokollgruppe übertragen.
Hinweis: Die Kontonummer und der Amazon-Ressourcenname (ARN) sind für die folgenden Richtlinien spezifisch für Ihr Konto.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AWSLogDeliveryWrite20150319",
      "Effect": "Allow",
      "Principal": {
        "Service": ["delivery.logs.amazonaws.com"]
      },
      "Action": [
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": ["arn:aws:logs:us-east-1:0123456789:log-group:my-log-group:log-stream:*"],
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": ["0123456789"]
        },
        "ArnLike": {
          "aws:SourceArn": ["arn:aws:logs:us-east-1:0123456789:*"]
        }
      }
    }
  ]
}

Wenn in Ihrer Protokollgruppe keine Protokolle angezeigt werden, überprüfen Sie mithilfe der DescribeResourcePolicies-API, ob die zuvor erforderlichen Berechtigungen zur ressourcenbasierten Richtlinie Ihrer Protokollgruppe hinzugefügt wurden. Sie können die ressourcenbasierte Richtlinie für Protokolldienste mit PutResourcePolicy bearbeiten.

Weitere Informationen zu Berechtigungen für Protokollgruppen finden Sie unter Aktivieren der Protokollierung von bestimmten AWS-Services.

Amazon-S3-Bucket

Um die Protokolle an einen Amazon-S3-Bucket zu senden, wählen Sie S3-Bucket als Ziel, wenn Sie AWS-WAF-Protokolle aktivieren.

Web-ACLs veröffentlichen die Protokolldateien in Abständen von fünf Minuten in einem S3-Bucket. Die maximale Dateigröße beträgt 75 Megabyte (MB). Wenn die Dateigröße das Maximum überschreitet, wird eine neue Datei protokolliert. Wenn Protokolle aktiviert sind, können Sie sie mit Amazon Athena analysieren. Weitere Informationen finden Sie unter Abfragen von AWS-WAF-Protokollen.

S3-Bucket-Namen für die AWS-WAF-Protokollierung müssen mit dem Präfix aws-waf-logs- beginnen.

Erforderliche Berechtigungen

Das Konto, das die AWS-WAF-Protokolle mithilfe eines S3-Buckets einschaltet, muss über die folgenden Berechtigungen verfügen:

  • wafv2:PutLoggingConfiguration
  • wafv2:DeleteLoggingConfiguration
  • logs:CreateLogDelivery
  • logs:DeleteLogDelivery
  • s3:PutBucketPolicy
  • s3:GetBucketPolicy

Diese Berechtigungen sind erforderlich, um die AWS-WAF-Protokollierung zu aktivieren und die Protokollzustellung für einen S3-Bucket zu konfigurieren. Sie werden auch benötigt, um die Bucket-Richtlinie abzurufen und zu bearbeiten, damit AWS-WAF-Protokolle an einen S3-Bucket übermittelt werden können.

Wenn diese Berechtigungen zugewiesen werden, wird die folgende Beispielrichtlinie automatisch zur Bucket-Richtlinie hinzugefügt, um die Übermittlung von Protokollen an den S3-Bucket zu ermöglichen:
Hinweis: Die Kontonummer und der Amazon-Ressourcenname (ARN) sind spezifisch für Ihr Konto für die folgenden Richtlinien.

{
  "Version": "2012-10-17",
  "Id": "AWSLogDeliveryWrite20150319",
  "Statement": [
    {
      "Sid": "AWSLogDeliveryAclCheck",
      "Effect": "Allow",
      "Principal": {
        "Service": "delivery.logs.amazonaws.com"
      },
      "Action": "s3:GetBucketAcl",
      "Resource": "arn:aws:s3:::my-bucket",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": [
            "0123456789"
          ]
        },
        "ArnLike": {
          "aws:SourceArn": [
            "arn:aws:logs:us-east-1:0123456789:*"
          ]
        }
      }
    },
    {
      "Sid": "AWSLogDeliveryWrite",
      "Effect": "Allow",
      "Principal": {
        "Service": "delivery.logs.amazonaws.com"
      },
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::my-bucket/AWSLogs/account-ID/*",
      "Condition": {
        "StringEquals": {
          "s3:x-amz-acl": "bucket-owner-full-control",
          "aws:SourceAccount": [
            "0123456789"
          ]
        },
        "ArnLike": {
          "aws:SourceArn": [
            "arn:aws:logs:us-east-1:0123456789:*"
          ]
        }
      }
    }
  ]
}

Wenn die AWS WAF-Protokolle im S3-Bucket nicht angezeigt werden, überprüfen Sie mithilfe der GetBucketPolicy-API, ob die erforderlichen Berechtigungen in der Bucket-Richtlinie vorhanden sind. Sie können die Bucket-Richtlinie mithilfe der PutBucketPolicy-API bearbeiten.

Informationen zum Senden von Protokollen an ein anderes AWS-Konto oder eine andere AWS-Region finden Sie unter: Wie sende ich AWS-WAF-Protokolle an einen Amazon-S3-Bucket in einem zentralen Protokollkonto?

Amazon Kinesis Data Firehose

Um die AWS-WAF-Protokolle an den Kinesis-Data-Firehose-Stream zu senden, müssen Sie einen Bereitstellungsdatenstrom erstellen. Der Bereitstellungsdatenstrom hat verschiedene Ziele zum Speichern von Protokollen.

Beachten Sie bei der Verwendung von Kinesis Data Firehose Folgendes:

  • Der Name der Kinesis Data Firehose muss mit dem Präfix aws-waf-logs- beginnen.
  • Der Kinesis-Data-Firehose-Bereitstellungsdatenstrom muss sich in demselben AWS-Konto und derselben Region wie Ihre Web-ACL befinden. Bei globalen Web-ACLs, die CloudFront zugeordnet sind, muss sich Kinesis Data Firehose in der Region USA Ost (Nord-Virginia) befinden.
  • Ein AWS-WAF-Protokoll entspricht einem Kinesis-Data-Firehose-Datensatz und unterliegt den Kontingenten von Amazon Kinesis Data Firehose.
    Wichtig: Wenn Sie mehr als 10 000 Anfragen pro Sekunde erhalten, werden Ihre Daten gedrosselt und nicht alle Anfragen werden protokolliert. Um eine Drosselung zu verhindern, müssen Sie eine Erhöhung des Kontingents für die Kinesis Data Firehose beantragen.

Erforderliche Berechtigungen

Das Konto, das die AWS-WAF-Protokolle mithilfe des Kinesis-Data-Firehose-Ziels einschaltet, muss über die folgenden Berechtigungen verfügen:

  • wafv2:PutLoggingConfiguration
  • wafv2:DeleteLoggingConfiguration
  • iam:CreateServiceLinkedRole
  • firehose:ListDeliveryStreams

Weitere Informationen zu Service-verknüpften Rollen und der Berechtigung iam:CreateServiceLinkedRole finden Sie unter: Verwenden von Service-verknüpften Rollen für AWS WAF.

Gehen Sie folgendermaßen vor, um einen Kinesis-Data-Firehose-Bereitstellungsdatenstrom zu erstellen:

  1. Öffnen Sie die Amazon-Kinesis-Konsole.
  2. Wählen Sie für Region die AWS-Region aus, in der Sie Ihre Web-ACL erstellt haben.
    Hinweis: Wählen Sie Global aus, wenn Ihre Web-ACL für Amazon CloudFront eingerichtet ist.
  3. Wählen Sie im Navigationsbereich Bereitstellungsdatenströme aus.
  4. Wählen Sie Bereitstellungsdatenstrom erstellen aus.
  5. Wählen Sie für Quelle die Option Direct PUT.
  6. Wählen Sie für Ziel eines der verfügbaren Ziele für Kinesis Firehose aus.
  7. Geben Sie unter Name des Bereitstellungsdatenstrom einen Namen für Ihren Bereitstellungsdatenstrom ein, der mit aws-waf-logs- beginnt.
  8. Bestätigen Sie, dass Datentransformation und Konvertierung des Datensatzformats beide deaktiviert sind.
  9. Geben Sie die Zieleinstellungen basierend auf der in Schritt 6 ausgewählten Zielmethode ein.
  10. (Optional) Konfigurieren Sie für Pufferhinweise, Komprimierung und Verschlüsselung nach Ihren Vorgaben oder behalten Sie die Standardeinstellungen bei.
  11. (Optional) Konfigurieren Sie für erweiterte Einstellungen nach Ihren Vorgaben oder behalten Sie die Standardeinstellungen bei.
  12. Überprüfen Sie die Einstellungen für den Bereitstellungsdatenstrom. Wenn die Einstellungen Ihren Spezifikationen entsprechen, wählen Sie Bereitstellungsdatenstrom erstellen.

AWS-WAF-Protokolle aktivieren

Nachdem Sie das Ziel festgelegt haben, an das Sie Ihre AWS-WAF-Protokolle senden möchten, aktivieren Sie die AWS-WAF-Protokollierung, indem Sie folgende Schritte ausführen:

  1. Öffnen Sie die AWS-WAF-Konsole.
  2. Wählen Sie für Region die AWS-Region aus, in der Sie Ihre Web-ACL erstellt haben.
    Hinweis: Wählen Sie Global aus, wenn Ihre Web-ACL für Amazon CloudFront eingerichtet ist.
  3. Wählen Sie Ihre Web-ACL aus.
  4. Wählen Sie Protokollierung und Metriken und dann Aktivieren.
  5. Wählen Sie das Ziel aus, in dem Sie die AWS-WAF-Protokolle von den unterstützten Zielen speichern möchten.
  6. Wählen Sie für Redigierte Felder die Felder aus, die Sie in den Protokollen auslassen möchten.
  7. Fügen Sie für Filterprotokolle den Filter hinzu, um zu steuern, welche Anforderungen Sie speichern möchten.
  8. Wählen Sie Speichern.

War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?