Amazon Simple Storage Service バケットへのウェブACLトラフィックログの送信 - AWS WAF、 AWS Firewall Manager、および AWS Shield Advanced

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Simple Storage Service バケットへのウェブACLトラフィックログの送信

このトピックでは、ウェブACLトラフィックログを Amazon S3 バケットに送信するための情報を提供します。

注記

の使用料金に加えて、ログ記録には料金が発生します。 AWS WAF詳細については、ウェブACLトラフィック情報のログ記録の料金 を参照してください。

ウェブACLトラフィックログを Amazon S3 に送信するには、ウェブ の管理に使用するのと同じアカウントから Amazon S3 バケットを設定しACL、 で始まるバケットに名前を付けますaws-waf-logs-。ログインを有効にする場合 AWS WAF、バケット名を指定します。ロギングバケットの作成については、「Amazon Simple Storage Service ユーザーガイド」の「バケットの作成」を参照してください。

Amazon Athena インタラクティブクエリサービスを使用して、Amazon S3 ログにアクセスし、分析することができます。Athena では、標準 を使用して Amazon S3 内のデータを直接分析することが容易になりますSQL。でいくつかのアクションを使用する AWS Management Consoleでは、Amazon S3 に保存されているデータを Athena にポイントし、標準 を使用してアドホッククエリSQLを実行し、結果を取得できます。詳細については、「Querying」を参照してください。 AWS WAFAmazon Athena ユーザーガイドの ログ。その他のサンプル Amazon Athena クエリについては、 GitHub ウェブサイトの「aws-samples/waf-log-sample-athena-queries」を参照してください。

注記

AWS WAF は、キータイプ Amazon S3 キー (-S3) および の Amazon S3 バケットによる暗号化をサポートします。SSE-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 はログレコードを解凍して表示します。ログファイルをダウンロードする場合、レコードを表示するには解凍する必要があります。

1 つのログファイルには、複数のレコードを含むインターリーブされたエントリが含まれます。ウェブ のすべてのログファイルを表示するには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 Simple Storage Service ユーザーガイド」の「プレフィックスを使用してオブジェクトを整理する」を参照してください。

プレフィックスを使用したバケットの場所には、次の構文が使用されます。

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 に準拠しています。

DOC-EXAMPLE-BUCKET という名前のバケット用の Amazon S3 バケットに存在するログファイルの例を次に示します。- 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 バケットのウェブACLトラフィックログ記録を設定するには、次のアクセス許可設定が必要です。これらのアクセス許可は、 AWS WAF フルアクセス管理ポリシー、AWSWAFConsoleFullAccessまたは AWSWAFFullAccess。ログ記録と へのよりきめ細かなアクセスを管理する場合 AWS WAF リソースでは、これらのアクセス許可を自分で設定できます。アクセス許可の管理の詳細については、「 のアクセス管理」を参照してください。 AWSIAM ユーザーガイドの リソース。の詳細については、 AWS WAF 管理ポリシーについては、「」を参照してくださいAWS の マネージドポリシー AWS WAF

次のアクセス許可により、ウェブ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: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-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-、任意のサフィックスで終わることができます。

ログを作成しているユーザーがバケットを所有していないか、バケットに対する GetBucketPolicy および PutBucketPolicy 許可がない場合、ログの作成は失敗します。この場合、バケット所有者は前述のポリシーをバケットに手動で追加し、ログ作成者の AWS アカウント ID。詳細については、「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 許可を持ちます。ログ配信の所有者 (バケット所有者とは異なる場合) は、許可を持ちません。ログ配信アカウントには、READ および WRITE 許可があります。詳細については、「Amazon Simple Storage Service ユーザーガイド」の「アクセスコントロールリスト (ACL) の概要」を参照してください。