如何將 AWS WAF 日誌傳送至集中式日誌帳戶的 Amazon S3 儲存貯體?

2 分的閱讀內容
0

如何將 AWS WAF 日誌傳送至不同帳戶或 AWS 區域的 Amazon Simple Storage Service (Amazon S3) 儲存貯體?

簡短描述

若要將 AWS WAF 日誌傳送至集中式日誌帳戶的 Amazon S3 儲存貯體,請執行以下操作:

  1. 在集中式日誌帳戶建立 S3 儲存貯體,該帳戶在所選 AWS 區域的儲存貯體名稱開頭為 aws-waf-logs-
  2. 建立並新增儲存貯體原則至 S3 儲存貯體,以便從來源帳戶傳遞日誌。
  3. 使用 AWS CLI 命令 put-logging-configuration 來設定 Web 存取控制清單 (Web ACL),將日誌傳送至集中式日誌帳戶的 S3 儲存貯體。

解決方案

在所選區域的集中式日誌帳戶建立 S3 儲存貯體

  1. 在所選 AWS 區域的集中式日誌帳戶建立 S3 儲存貯體
  2. 輸入以 aws-waf-logs- 前置詞開頭的值區名稱。
    **例如:**aws-waf-logs-example-bucket

建立儲存貯體原則並加入 S3 儲存貯體

將下列 S3 儲存貯體原則加入您的 S3 儲存貯體:

重要事項:

  • 將**「aws:SourceAccount」**中的帳戶 ID 取代為將要傳送日誌記錄至此儲存貯體之來源帳戶的帳戶 ID 清單。
  • aws:SourceArn 中的 ARN 取代為將要傳送日誌記錄至此儲存貯體之來源資源 ARN 清單,格式為 arn:aws:logs:*:source-account-id:*
  • Resource 中的 S3 儲存貯體名稱 aws-waf-logs-example-bucket 取代為您 S3 儲存貯體的名稱。
{
  "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:*"
          ]
        }
      }
    }
  ]
}

將您的 Web ACL 設定為將日誌傳送到所需的 S3 儲存貯體

您必須設定 Web ACL,才能將 AWS WAF 日誌傳送到集中式記錄帳戶的 S3 儲存貯體。若要設定您的 Web ACL,請從擁有 Web ACL 的帳戶執行下列 AWS CLI 命令:

重要事項:

  • ResourceArn 值取代為您的網路 ACL ARN。
  • LogDestinationConfigs 值取代為集中式記錄帳戶中 S3 儲存貯體的 ARN。
  • region 取代為 Web ACL 所在的 AWS 區域。
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

**備註:**對於 CloudFront (全域) 區域中的網路 ACL,請在上一個命令使用 us-east-1 做為 AWS 區域。

針對每個 Web ACL 重複上述的 put-logging-configuration 指令。


相關資訊

Amazon 簡單儲存服務記錄目的地

AWS 官方
AWS 官方已更新 2 年前