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

Lesedauer: 7 Minute
0

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 Web-ACL von AWS WAF 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 ausgewählten Ziel.

Lösung

Die folgenden Ziele werden für die Speicherung Ihrer AWS-WAF-Protokolle unterstützt:

Amazon CloudWatch Logs

Um die Protokolle an eine CloudWatch Logs-Protokollgruppe zu senden, wählen Sie die CloudWatch Logs-Protokollgruppe als Ziel, wenn Sie AWS WAF-Protokolle aktivieren.

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

Beachten Sie bei der Verwendung von CloudWatch-Protokollen Folgendes:

  • Protokollgruppennamen müssen mit dem Präfix aws-waf-logs- beginnen.
  • Protokollgruppen müssen sich im selben AWS-Konto und derselben Region wie Ihre Web-ACL befinden. Für globale 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 Protokollgruppe von CloudWatch Logs aktiviert, 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 Protokollierungskonfiguration von Web-ACL sowie die Protokollzustellung 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 zu den ressourcenbasierten Richtlinien von CloudWatch Logs hinzu. Auf diese Weise können Zustelldienste Protokolle an eine Protokollgruppe von CloudWatch Logs weiterleiten.
**Hinweis:**Die Kontonummer und der Amazon-Ressourcenname (ARN) sind im Rahmen der folgenden Richtlinie 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 Sie in Ihrer Protokollgruppe keine Protokolle sehen, überprüfen Sie mithilfe der API DescribeResourcePolicies, ob die oben genannten 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 Protokollgruppenberechtigungen finden Sie unter Aktivieren der Protokollierung für bestimmte AWS-Services.

Amazon S3-Bucket

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

Web-ACLs veröffentlichen die Protokolldateien in einem S3-Bucket in Intervallen von fünf Minuten. 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 diese 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 aktiviert, 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, um so die Zustellung von AWS-WAF-Protokollen an einen S3-Bucket zu ermöglichen.

Wenn diese Berechtigungen zugewiesen sind, 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 für Ihr Konto spezifisch und unterliegen der folgenden Richtlinie.

{
  "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 Sie die AWS-WAF-Protokolle nicht im S3-Bucket sehen, überprüfen Sie mithilfe der API GetBucketPolicy, ob die erforderlichen Berechtigungen in der Bucket-Richtlinie vorhanden sind. Sie können die Bucket-Richtlinie mithilfe der API PutBucketPolicy 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 Protokollierungskonto?

Amazon Kinesis Data Firehose

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

Beachten Sie bei der Verwendung von Kinesis Data Firehose Folgendes:

  • Der Name des Kinesis Data Firehose muss mit dem Präfix aws-waf-logs- beginnen.
  • Der Zustellstream des Kinesis Data Firehose muss sich in demselben AWS-Konto und derselben Region wie Ihre Web-ACL befinden. Für globale Web-ACLs, die mit CloudFront verknüpft sind, muss sich der Kinesis Data Firehose in der Region USA Ost (Nord-Virginia) befinden.
  • Ein AWS-WAF-Protokoll entspricht einem Datensatz des Kinesis Data Firehose und unterliegt den Kontingenten des 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 den Kinesis Data Firehose beantragen.

Erforderliche Berechtigungen

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

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

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

Gehen Sie folgendermaßen vor, um einen Zustellstream des Kinesis Data Firehose zu erstellen:

  1. Öffnen Sie die Konsole von Amazon Kinesis.
  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 Zustellstreams aus.
  4. Wählen Sie Zustellstream erstellen aus.
  5. Wählen Sie Direkte Eingabe als Quelle.
  6. Wählen Sie unter Ziel eines der verfügbaren Ziele für den Kinesis Firehose aus.
  7. Geben Sie unter Name des Zustellstreams einen Namen für Ihren Zustellstream ein, der mit aws-waf-logs- beginnt.
  8. Bestätigen Sie, dass sowohl die Datentransformation als auch die Konvertierung des Datensatzformats Deaktiviert sind.
  9. Geben Sie die Zieleinstellungen auf der Grundlage der in Schritt 6 ausgewählten Zielmethode ein.
  10. (Optional) Konfigurieren Sie Pufferhinweise, Komprimierung und Verschlüsselung nach Ihren Bedürfnissen oder behalten Sie die Standardeinstellungen bei.
  11. (Optional) Konfigurieren Sie die Erweiterten Einstellungen nach Ihren Bedürfnissen oder behalten Sie die Standardeinstellungen bei.
  12. Überprüfen Sie die Einstellungen für den Zustellstream. Wenn die Einstellungen Ihren Spezifikationen entsprechen, wählen Sie Zustellstream erstellen.

Aktivieren von AWS-WAF-Protokollen

Nachdem Sie das Ziel festgelegt haben, an das Sie Ihre AWS-WAF-Protokolle senden möchten, aktivieren Sie die AWS-WAF-Protokollierung, indem Sie wie folgt vorgehen:

  1. Öffnen Sie die Konsole von AWS WAF.
  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 Messung und anschließend Freischalten.
  5. Wählen Sie das Ziel aus, an dem Sie die AWS-WAF-Protokolle von den unterstützten Zielen speichern möchten.
  6. Wählen Sie unter Geschwärzte Felder die Felder aus, die Sie aus den Protokollen auslassen möchten.
  7. Fügen Sie für Filtern der Protokolle einen Filter hinzu, um zu steuern, welche Anfragen Sie speichern möchten.
  8. Wählen Sie Speichern aus.
AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren