翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 を使用してアドホッククエリを実行し、結果を取得できます。詳細については、「Amazon Athena ユーザーガイド」の AWS WAF 「ログのクエリ」を参照してください。 Amazon Athena その他のサンプル Amazon Athena クエリについては、 GitHub ウェブサイトの「aws-samples/waf-log-sample-athena-queries
注記
AWS WAF は、キータイプ Amazon S3 キー (SSE-S3) および AWS Key Management Service (SSE-KMS) の Amazon S3 バケットによる暗号化をサポートしています 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-
と指定します。LOGGING-BUCKET-SUFFIX
バケットの場所
バケットの場所は次の構文を使用します。
s3://aws-waf-logs-
LOGGING-BUCKET-SUFFIX
/
バケット ARN
バケット Amazon リソースネーム (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、リージョン、ウェブ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
に準拠しています。
aws-waf-logs-
という名前のバケット用の Amazon S3 バケットに存在するログファイルの例を次に示します。は AWS アカウント ですLOGGING-BUCKET-SUFFIX
11111111111
。ウェブ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 バケットのウェブACLトラフィックログ記録を設定するには、次のアクセス許可設定が必要です。 AWS WAF フルアクセスマネージドポリシーのいずれか (AWSWAFConsoleFullAccess
または AWSWAFFullAccess
) を使用すると、これらの許可が設定されます。ログ記録と AWS WAF リソースへのよりきめ細かなアクセスを管理する場合は、これらのアクセス許可を自分で設定できます。アクセス許可の管理の詳細については、「 IAMユーザーガイド」の AWS 「 リソースのアクセス管理」を参照してください。 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-
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 バケットポリシーを追加する方法」を参照してください。バケットが複数のアカウントからログを受け取る場合は、各アカウントの AWSLogDeliveryWrite
ポリシーステートメントに Resource
エレメントエントリを追加します。
たとえば、次のバケットポリシーでは 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:*"] } } } ] }
KMS キー AWS Key Management Service で を使用するためのアクセス許可
ログ記録の送信先が AWS Key Management Service (SSE-KMS) に保存されているキーによるサーバー側の暗号化を使用していて、カスタマーマネージドキー (KMS キー) を使用する場合は、 KMS キーを使用するための AWS WAF アクセス許可を に付与する必要があります。これを行うには、選択した送信先のキーに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) の概要」を参照してください。