將網絡ACL流量日誌發送到 Amazon 簡單存儲服務存儲桶 - AWS WAFAWS Firewall Manager、 和 AWS Shield Advanced

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將網絡ACL流量日誌發送到 Amazon 簡單存儲服務存儲桶

本主題提供將網頁ACL流量日誌傳送到 Amazon S3 儲存貯體的相關資訊。

注意

除了使用費外,您還需要支付登錄費用 AWS WAF如需相關資訊,請參閱記錄網路ACL流量資訊的定價

若要將您的網路ACL流量日誌傳送到 Amazon S3,請使用與管理網路相同的帳戶設定 Amazon S3 儲存貯體ACL,並以開頭命名該儲存貯體aws-waf-logs-。啟用登入時 AWS WAF,您提供值區名稱。如需建立記錄值區的詳細資訊,請參閱 Amazon 簡單儲存服務使用者指南中的建立儲存貯體

您可以使用亞馬遜雅典娜互動式查詢服務存取和分析 Amazon S3 日誌。Athena 可讓您輕鬆地使用標準直接在 Amazon S3 中分析資料SQL。隨著一些動作在 AWS Management Console,您可以將 Athena 指向存放在 Amazon S3 中的資料,然後快速開始使用標準執SQL行臨機操作查詢並取得結果。如需詳細資訊,請參閱查詢 AWS WAFAmazon Athena 用戶指南中的日誌。如需其他 Amazon Athena 查詢範例,請參閱網站上的 AWS 範例/waf-log-sample-athena-查詢。 GitHub

注意

AWS WAF 針對金鑰類型 Amazon S3 金鑰 (SSE-S3) 和用於支援使用 Amazon S3 儲存貯體加密 AWS Key Management Service (SSE-KMS) AWS KMS keys. AWS WAF 不支持加密 AWS Key Management Service 由管理的金鑰 AWS.

您的ACLs網路每隔 5 分鐘將其日誌檔發佈到 Amazon S3 儲存貯體。每個記錄檔都包含前 5 分鐘內記錄之流量的記錄檔記錄。

日誌檔的大小上限為 75 MB。如果日誌檔在 5 分鐘內達到檔案大小限制,則日誌會停止向其新增記錄,將其發佈到 Amazon S3 儲存貯體,然後建立新的日誌檔。

日誌檔案已壓縮。如果您使用 Amazon S3 主控台開啟檔案,Amazon S3 會將日誌記錄解壓縮並顯示。如果您下載記錄檔,則必須將它們解壓縮才能檢視記錄。

單一記錄檔包含具有多筆記錄的交錯項目。若要查看網路的所有記錄檔ACL,請尋找依網路ACL名稱、地區和您的帳戶 ID 彙總的項目。

命名需求和語法

您的儲存貯體名稱 AWS WAF 日誌記錄必須以您想要的任何後綴開頭,aws-waf-logs-並且可以結束。例如:aws-waf-logs-DOC-EXAMPLE-BUCKET-SUFFIX

鏟斗位置

值區位置使用下列語法:

s3://aws-waf-logs-DOC-EXAMPLE-BUCKET-SUFFIX/
水桶 ARN

存儲桶 Amazon 資源名稱(ARN)的格式如下:

arn:aws:s3:::aws-waf-logs-DOC-EXAMPLE-BUCKET-SUFFIX
含前置字元的值區位置

如果您在物件金鑰名稱中使用前置字元來組織儲存在值區中的資料,您可以在記錄值區名稱中提供前置字元。

注意

此選項無法透過主控台使用。使用 AWS WAF APIs、CLI、或 AWS CloudFormation.

如需在 Amazon S3 中使用前置字元的相關資訊,請參閱 Amazon 簡單儲存服務使用者指南中的使用前置詞組織物件

含前置字元的值區位置使用下列語法:

s3://aws-waf-logs-DOC-EXAMPLE-BUCKET-SUFFIX/DOC-EXAMPLE-KEY-NAME-PREFIX/
值區資料夾和檔案名稱

在你的桶內,並遵循你提供的任何前綴,你的 AWS WAF 記錄會根據您的帳戶 ID、地區、網路ACL名稱以及日期和時間決定的資料夾結構下寫入。

AWSLogs/account-id/WAFLogs/Region/web-acl-name/YYYY/MM/dd/HH/mm

在資料夾內,記錄檔名稱的格式類似:

account-id_waflogs_Region_web-acl-name_timestamp_hash.log.gz

資料夾結構和記錄檔名稱中使用的時間規格會遵循時間戳記格式規格YYYYMMddTHHmmZ

以下顯示 Amazon S3 儲存貯體中名為的儲存貯體的日誌檔範例DOC-EXAMPLE-BUCKET。所以此 AWS 帳戶 是11111111111。網絡ACL是TEST-WEBACL,地區是us-east-1

s3://DOC-EXAMPLE-BUCKET/AWSLogs/11111111111/WAFLogs/us-east-1/TEST-WEBACL/2021/10/28/19/50/11111111111_waflogs_us-east-1_TEST-WEBACL_20211028T1950Z_e0ca43b5.log.gz
注意

您的儲存貯體名稱 AWS WAF 日誌記錄必須以您想要的任何後綴開頭,aws-waf-logs-並且可以結束。

將日誌發佈到 Amazon S3 所需的許可

為 Amazon S3 儲存貯體設定 Web ACL 流量記錄需要下列許可設定。當您使用其中一個時,這些權限是為您設定的 AWS WAF 完整存取受管理的原則,AWSWAFConsoleFullAccessAWSWAFFullAccess。如果您想管理對日誌記錄和更細微的訪問 AWS WAF 資源,您可以自己設置這些權限。如需管理權限的相關資訊,請參閱的存取管理 AWS《IAM使用者指南》中的資源。如需有關的資訊 AWS WAF 受管理的策略,請參閱AWS 受管理的政策 AWS WAF

下列權限可讓您變更 Web 記ACL錄組態,以及設定 Amazon S3 儲存貯體的日誌傳遞。這些權限必須附加至您用來管理的使用者 AWS WAF.

注意

當您設置下面列出的權限時,您可能會在 AWS CloudTrail 指出存取遭拒,但權限正確的記錄 AWS WAF 記錄。

{ "Version":"2012-10-17", "Statement":[ { "Action":[ "wafv2:PutLoggingConfiguration", "wafv2:DeleteLoggingConfiguration" ], "Resource":[ "*" ], "Effect":"Allow", "Sid":"LoggingConfigurationAPI" }, { "Sid":"WebACLLogDelivery", "Action":[ "logs:CreateLogDelivery", "logs:DeleteLogDelivery" ], "Resource": "*", "Effect":"Allow" }, { "Sid":"WebACLLoggingS3", "Action":[ "s3:PutBucketPolicy", "s3:GetBucketPolicy" ], "Resource": [ "arn:aws:s3:::aws-waf-logs-amzn-s3-demo-bucket" ], "Effect":"Allow" } ] }

當所有人都允許執行動作時 AWS 資源,它在策略中以"Resource"設定為表示"*"。這意味著所有操作都允許 AWS 每個動作支援的資源。例如,只有wafv2記錄組態資源才支援動作wafv2:PutLoggingConfiguration

根據預設,Amazon S3 儲存貯體及其包含的物件都是私有的。只有儲存貯體擁有者可存取儲存貯體及存放於其中的物件。但是,值區擁有者可以透過撰寫存取原則來授與其他資源和使用者的存取權。

如果建立記錄檔的使用者擁有該值區,服務會自動將下列原則附加至值區,以授予記錄檔發佈至該值區的記錄權限:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSLogDeliveryWrite", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::aws-waf-logs-amzn-s3-demo-bucket/AWSLogs/account-id/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": ["account-id"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:region:account-id:*"] } } }, { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::aws-waf-logs-amzn-s3-demo-bucket", "Condition": { "StringEquals": { "aws:SourceAccount": ["account-id"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:region:account-id:*"] } } } ] }
注意

您的儲存貯體名稱 AWS WAF 日誌記錄必須以您想要的任何後綴開頭,aws-waf-logs-並且可以結束。

如果建立記錄的使用者不擁有值區,或者沒有值區的GetBucketPolicyPutBucketPolicy權限,則記錄建立會失敗。在這種情況下,值區擁有者必須手動將上述政策新增至值區,並指定記錄建立者的 AWS 帳戶 識別碼。如需詳細資訊,請參閱 Amazon Simple Storage Service 使用者指南中的我該如何新增 S3 儲存貯體政策?。如果值區收到來自多個帳戶的記錄,請在每個帳戶的AWSLogDeliveryWrite政策聲明中新增Resource元素項目。

例如,下列值區政策允許 AWS 帳戶 111122223333將日誌發佈到名為aws-waf-logs-amzn-s3-demo-bucket

{ "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-amzn-s3-demo-bucket/AWSLogs/111122223333/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": ["111122223333"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:111122223333:*"] } } }, { "Sid": "AWSLogDeliveryAclCheck", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::aws-waf-logs-amzn-s3-demo-bucket", "Condition": { "StringEquals": { "aws:SourceAccount": ["111122223333"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:111122223333:*"] } } } ] }

使用權限 AWS Key Management Service 用KMS鑰匙

如果您的記錄目的地使用伺服器端加密與儲存在中的金鑰 AWS Key Management Service (SSE-KMS),你使用客戶管理密鑰(KMS密鑰),你必須給 AWS WAF 允許使用您的KMS密鑰。若要這麼做,請將金鑰原則新增至所選目的地的KMS金鑰。這允許 AWS WAF 記錄以將日誌文件寫入目的地。

將以下金鑰原則新增至您的KMS金鑰以允許 AWS WAF 登錄到您的 Amazon S3 存儲桶。

{ "Sid": "Allow AWS WAF to use the key", "Effect": "Allow", "Principal": { "Service": [ "delivery.logs.amazonaws.com" ] }, "Action": "kms:GenerateDataKey*", "Resource": "*" }

存取 Amazon S3 日誌檔所需的許可

Amazon S3 使用存取控制清單 (ACLs) 來管理對由 AWS WAF 日誌。根據預設,儲存貯體擁有者擁有各個日誌檔案的 FULL_CONTROL 許可。日誌交付擁有者與儲存貯體擁有者不同時,就沒有任何許可。日誌交付帳戶擁有 READWRITE 許可。如需詳細資訊,請參閱 Amazon 簡單儲存服務使用者指南中的存取控制清單 (ACL) 概觀