Amazon 簡單存儲服務桶 - AWS WAF、 AWS Firewall Manager、和 AWS Shield Advanced

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

Amazon 簡單存儲服務桶

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

注意

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

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

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

注意

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

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

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

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

單一記錄檔包含具有多筆記錄的交錯項目。若要查看 Web ACL 的所有記錄檔,請尋找依 Web 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 API、CLI 或 AWS CloudFormation.

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

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

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

在值區內,並遵循您提供的任何前置詞之後,您的 AWS WAF 記錄會寫入資料夾結構,該資料夾結構取決於您的帳戶 ID、地區、Web 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 資源存取權限,您可以自行設定這些權限。如需管理許可的相關資訊,請參閱 IAM 使用者指南中的 AWS 資源存取管理。如需有關 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-DOC-EXAMPLE-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-DOC-EXAMPLE-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-DOC-EXAMPLE-BUCKET", "Condition": { "StringEquals": { "aws:SourceAccount": ["account-id"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:region:account-id:*"] } } } ] }
注意

用於 AWS WAF 記錄的值區名稱必須以您想要的任何尾碼開頭,aws-waf-logs-並且可以結尾。

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

例如,下列值區政策允許 AWS 帳戶 111122223333將記錄發佈到名為的值區aws-waf-logs-DOC-EXAMPLE-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-DOC-EXAMPLE-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-DOC-EXAMPLE-BUCKET", "Condition": { "StringEquals": { "aws:SourceAccount": ["111122223333"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:us-east-1:111122223333:*"] } } } ] }

搭配 KMS 金鑰 AWS Key Management Service 使用的權限

如果您的記錄目的地使用伺服器端加密與儲存在 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 使用存取控制清單 (ACL) 來管理對由日誌建立的日誌檔的存取。 AWS WAF 根據預設,儲存貯體擁有者擁有各個日誌檔案的 FULL_CONTROL 許可。日誌交付擁有者與儲存貯體擁有者不同時,就沒有任何許可。日誌交付帳戶擁有 READWRITE 許可。如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的存取控制清單 (ACL) 概觀