Wie sende ich AWS WAF-Protokolle an einen Amazon S3-Bucket in einem zentralisierten Protokollierungskonto?

Letzte Aktualisierung: 28.06.2022

Wie sende ich AWS WAF-Protokolle an einen Amazon Simple Storage Service (Amazon S3)-Bucket in einem anderen Konto oder einer anderen AWS-Region?

Kurzbeschreibung

Gehen Sie wie folgt vor, um AWS WAF-Protokolle an einen Amazon S3-Bucket in einem zentralisierten Protokollierungskonto zu senden:

  1. Erstellen Sie im zentralisierten Protokollierungskonto einen S3-Bucket in der von Ihnen ausgewählten AWS-Region, der einen Bucket-Namen hat, der mit aws-waf-logs- beginnt.
  2. Erstellen Sie eine Bucket-Richtlinie, und fügen Sie sie dem S3-Bucket hinzu, die die Bereitstellung von Protokollen von den Quellkonten ermöglicht.
  3. Verwenden Sie den AWS-CLI-Befehl put-logging-configuration, um Ihre Web Access Control Lists (Web-ACLs) so zu konfigurieren, dass die Protokolle an den S3-Bucket im zentralen Protokollierungskonto gesendet werden.

Lösung

Erstellen Sie einen S3-Bucket im zentralisierten Protokollierungskonto in der von Ihnen ausgewählten Region

  1. Erstellen Sie einen S3-Bucket im zentralen Protokollierungskonto für die von Ihnen gewählte AWS-Region.
  2. Geben Sie einen Bucket-Namen ein, der mit dem Präfix aws-waf-logs- beginnt.
    Zum Beispiel: aws-waf-logs-example-bucket

Erstellen und Hinzufügen einer Bucket-Richtlinie zum S3-Bucket

Fügen Sie Ihrem S3-Bucket die folgende S3-Bucket-Richtlinie hinzu:

Wichtig:

  • Ersetzen Sie die Konto-IDs in aws:SourceAccount durch die Liste der Konto-IDs Ihrer Quellkonten, die Protokolle an diesen Bucket senden.
  • Ersetzen Sie die ARNs in aws:SourceArn durch die Liste der ARNs der Quellressourcen, die Protokolle in diesem Bucket veröffentlichen werden, im Format arn:aws:logs:*:source-account-id:*.
  • Ersetzen Sie den S3-Bucket-Namen aws-waf-logs-example-bucket in Ressource durch den Namen Ihres S3-Buckets.
{
  "Version": "2012-10-17",
  "Id": "AWSLogDeliveryWrite20150319",
  "Statement": [
    {
      "Sid": "AWSLogDeliveryWrite",
      "Effect": "Allow",
      "Principal": {
        "Service": "delivery.logs.amazonaws.com"
      },
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::aws-waf-logs-example-bucket/AWSLogs/*",
      "Condition": {
        "StringEquals": {
          "s3:x-amz-acl": "bucket-owner-full-control",
          "aws:SourceAccount": [
            "111111111111",
            "222222222222"
          ]
        },
        "ArnLike": {
          "aws:SourceArn": [
            "arn:aws:logs:*:111111111111:*",
            "arn:aws:logs:*:222222222222:*"
          ]
        }
      }
    },
    {
      "Sid": "AWSLogDeliveryAclCheck",
      "Effect": "Allow",
      "Principal": {
        "Service": "delivery.logs.amazonaws.com"
      },
      "Action": "s3:GetBucketAcl",
      "Resource": "arn:aws:s3:::aws-waf-logs-example-bucket",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": [
            "111111111111",
            "222222222222"
          ]
        },
        "ArnLike": {
          "aws:SourceArn": [
            "arn:aws:logs:*:111111111111:*",
            "arn:aws:logs:*:222222222222:*"
          ]
        }
      }
    }
  ]
}

Konfigurieren Sie Ihre Web-ACLs so, dass sie die Protokolle an den gewünschten S3-Bucket senden

Sie müssen Ihre Web-ACL für das Senden der AWS WAF-Protokolle an den S3-Bucket des zentralen Protokollierungskontos konfigurieren. Um Ihre Web-ACL zu konfigurieren, führen Sie den folgenden AWS-CLI-Befehl von dem Konto aus, dem die Web-ACL gehört:

Wichtig:

  • Ersetzen Sie den ResourceArn-Wert durch den ARN Ihrer Web-ACLs.
  • Ersetzen Sie den Wert LogDestinationConfigs durch den ARN der S3-Buckets in Ihrem zentralisierten Protokollierungskonto.
  • Ersetzen Sie Region durch die AWS-Region, in der sich Ihre Web-ACL befindet.
aws wafv2 put-logging-configuration --logging-configuration ResourceArn=arn:aws:wafv2:eu-west-1: 111111111111:regional/webacl/testing/b4a768c9-4895-4f35-9354-3049ab8acc29,LogDestinationConfigs=arn:aws:s3:::aws-waf-logs-example-bucket --region eu-west-1

Hinweis: Verwenden Sie für Web-ACLs in der CloudFront-Region (Global) im vorherigen Befehl us-east-1 als AWS-Region.

Wiederholen Sie den vorherigen Befehl put-logging-configuration für jede Ihrer Web-ACLs.


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?