本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 Web ACL流量日誌傳送至 Amazon Simple Storage Service 儲存貯體
本主題提供將 Web ACL流量日誌傳送至 Amazon S3 儲存貯體的資訊。
注意
除了使用 的費用之外,您還需要支付記錄費用 AWS WAF。如需相關資訊,請參閱 記錄網路ACL流量資訊的定價。
若要將 Web ACL流量日誌傳送至 Amazon S3,您可以從用來管理 Web 的相同帳戶設定 Amazon S3 儲存貯體ACL,並以 為儲存貯體命名aws-waf-logs-
。當您啟用登入時 AWS WAF,請提供儲存貯體名稱。如需有關建立記錄儲存貯體的資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的建立儲存貯體。
您可以使用 Amazon Athena 互動式查詢服務存取和分析 Amazon S3 日誌。 Amazon Athena Athena 可讓您使用標準 直接在 Amazon S3 中分析資料SQL。透過 中的幾個動作 AWS Management Console,您可以將 Athena 指向存放在 Amazon S3 中的資料,並快速開始使用標準SQL來執行臨時查詢並取得結果。如需詳細資訊,請參閱《Amazon Athena 使用者指南》中的查詢 AWS WAF 日誌。如需其他範例 Amazon Athena 查詢,請參閱 GitHub 網站上的 aws-samples/waf-log-sample-athena-queries
注意
AWS WAF 支援對 Amazon S3 金鑰類型 (SSE-S3) 和 for(-) 的 Amazon S3 儲存貯體進行加密 AWS KMS keys。 AWS WAF 不支援對 管理的 AWS Key Management Service 金鑰進行加密 AWS。 AWS Key Management Service SSEKMS
您的 Web ACLs 每隔 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-
。LOGGING-BUCKET-SUFFIX
儲存貯體位置
儲存貯體位置使用以下語法:
s3://aws-waf-logs-
LOGGING-BUCKET-SUFFIX
/
儲存貯體 ARN
儲存貯體 Amazon Resource Name (ARN) 的格式如下:
arn:aws:s3:::aws-waf-logs-
LOGGING-BUCKET-SUFFIX
具有字首的儲存貯體位置
如果您在物件金鑰名稱中使用字首來組織存放在儲存貯體中的資料,您可以在記錄儲存貯體名稱中提供字首。
注意
此選項無法透過 主控台使用。使用 AWS WAF APIs、 CLI或 AWS CloudFormation。
如需在 Amazon S3 中使用字首的資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的使用字首組織物件。
具有字首的儲存貯體位置使用以下語法:
s3://aws-waf-logs-
LOGGING-BUCKET-SUFFIX
/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 儲存貯體中的範例日誌檔案aws-waf-logs-
。 AWS 帳戶 為 LOGGING-BUCKET-SUFFIX
11111111111
。Web ACL是 TEST-WEBACL
,區域是 us-east-1
。
s3://aws-waf-logs-
LOGGING-BUCKET-SUFFIX
/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 完整存取受管政策 AWSWAFConsoleFullAccess
或 時,會為您設定這些許可AWSWAFFullAccess
。如果您想要管理更精細的日誌 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-
LOGGING-BUCKET-SUFFIX
" ], "Effect":"Allow" } ] }
當所有 AWS 資源上都允許動作時,政策中會指出動作,其"Resource"
設定為 "*"
。這表示每個動作支援的所有 AWS 資源都允許這些動作。 例如, 動作僅wafv2:PutLoggingConfiguration
支援wafv2
記錄組態資源。
根據預設,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-
LOGGING-BUCKET-SUFFIX
/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-LOGGING-BUCKET-SUFFIX
", "Condition": { "StringEquals": { "aws:SourceAccount": ["account-id
"] }, "ArnLike": { "aws:SourceArn": ["arn:aws:logs:region
:account-id
:*"] } } } ] }
注意
用於 AWS WAF 記錄的儲存貯體名稱必須以 開頭aws-waf-logs-
,並以您想要的任何尾碼結尾。
如果建立日誌的使用者沒有儲存貯體,或沒有儲存貯體的 GetBucketPolicy
和 PutBucketPolicy
許可,則日誌建立會失敗。在此情況下,儲存貯體擁有者必須將上述政策手動新增至儲存貯體,並指定日誌建立者的 AWS 帳戶 ID。如需詳細資訊,請參閱 Amazon Simple Storage Service 使用者指南中的我該如何新增 S3 儲存貯體政策?。如果儲存貯體收到來自多個帳戶的日誌,請將Resource
元素項目新增至每個帳戶的AWSLogDeliveryWrite
政策陳述式。
例如,下列儲存貯體政策允許 AWS 帳戶 111122223333
將日誌發佈至名為 的儲存貯體aws-waf-logs-
:LOGGING-BUCKET-SUFFIX
{ "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-
LOGGING-BUCKET-SUFFIX
/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-LOGGING-BUCKET-SUFFIX
", "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
許可。日誌交付擁有者與儲存貯體擁有者不同時,就沒有任何許可。日誌交付帳戶擁有 READ
與 WRITE
許可。如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的存取控制清單 (ACL) 概觀。