

**の新しいコンソールエクスペリエンスの紹介 AWS WAF**

更新されたエクスペリエンスを使用して、コンソールの任意の場所で AWS WAF 機能にアクセスできるようになりました。詳細については、[「コンソールの使用](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html)」を参照してください。

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

# Amazon Simple Storage Service バケットへの保護パック (ウェブ ACL) トラフィックログの送信
<a name="logging-s3"></a>

このトピックは、保護パック (ウェブ ACL) トラフィックログの Amazon S3 バケットへの送信に関する情報を提供します。

**注記**  
 AWS WAFの使用料金に加えて、ログ記録の料金が請求されます。詳細については、「[保護パック (ウェブ ACL) トラフィックのログ記録の料金に関する情報](logging-pricing.md)」を参照してください。

保護パック (ウェブ ACL) トラフィックログを Amazon S3 に送信するには、保護パック (ウェブ ACL) を管理するのと同じアカウントから Amazon S3 バケットを設定し、バケットに `aws-waf-logs-` で始まる名前を付けます。ログインを有効にするときは AWS WAF、バケット名を指定します。ロギングバケットの作成については、「*Amazon Simple Storage Service ユーザーガイド*」の「[バケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.html)」を参照してください。

Amazon Athena インタラクティブクエリサービスを使用して、Amazon S3 ログにアクセスし、分析することができます。Athena を使用すれば、標準 SQL を使用した Amazon S3 内のデータを直接分析しやすくなります。のいくつかのアクションを使用すると AWS マネジメントコンソール、Amazon S3 に保存されているデータを Athena にポイントし、標準 SQL を使用してアドホッククエリを実行し、結果を取得できます。詳細については、[「Amazon Athena ユーザーガイド」の AWS WAF 「ログのクエリ](https://docs.aws.amazon.com/athena/latest/ug/waf-logs.html)」を参照してください。 *Amazon Athena * その他のサンプル Amazon Athena クエリについては、GitHub ウェブサイトの[aws-samples/waf-log-sample-athena-queries](https://github.com/aws-samples/waf-log-sample-athena-queries)を参照してください。

**注記**  
AWS WAF は、キータイプの Amazon S3 キー (SSE-S3) および for AWS Key Management Service (SSE-KMS) の Amazon S3 バケットによる暗号化をサポートしています AWS KMS keys。 AWS WAF は、 によって管理される AWS Key Management Service キーの暗号化をサポートしていません AWS。

保護パック (ウェブ ACL) からのログファイルは、5 分間隔で Amazon S3 バケットに発行されます。各ログファイルには、前の 5 分間に記録されたトラフィックのログレコードが含まれています。

ログファイルの最大ファイルサイズは 75 MB です。ログファイルが 5 分以内にファイルサイズの上限に達した場合、ログはレコードの追加を停止し、Amazon S3 バケットに発行してから、新しいログファイルを作成します。

ログファイルは圧縮されます。Amazon S3 コンソールを使用してファイルを開くと、Amazon S3 はログレコードを解凍して表示します。ログファイルをダウンロードする場合、レコードを表示するには解凍する必要があります。

1 つのログファイルには、複数のレコードを含むインターリーブされたエントリが含まれます。保護パック (ウェブ ACL) のすべてのログファイルを表示するには、 保護パック (ウェブ ACL) 名、リージョン、およびアカウント ID で集約されたエントリを探します。

## 命名要件と構文
<a name="logging-s3-naming"></a>

 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 ユーザーガイド*」の「[プレフィックスを使用してオブジェクトを整理する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html)」を参照してください。

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

```
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-LOGGING-BUCKET-SUFFIX` という名前のバケット用の Amazon S3 バケットに存在するログファイルの例を次に示します。 AWS アカウント は です`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 にログを発行するために必須のアクセス許可
<a name="logging-s3-permissions"></a>

Amazon S3 バケットの保護パック (ウェブ ACL) トラフィックログ記録を設定するには、次の許可設定が必要です。 AWS WAF フルアクセスマネージドポリシーのいずれか (`AWSWAFConsoleFullAccess` または `AWSWAFFullAccess`) を使用すると、これらの許可が設定されます。ログ記録と AWS WAF リソースへのアクセスをさらに管理する場合は、これらのアクセス許可を自分で設定できます。アクセス許可の管理については、「IAM ユーザーガイド**」の「[AWS リソースのアクセス管理](https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html)」を参照してください。 AWS WAF 管理ポリシーの詳細については、「」を参照してください[AWS の 管理ポリシー AWS WAF](security-iam-awsmanpol.md)。

次の許可を使用すると、保護パック (ウェブ ACL) ログ記録設定を変更し、Amazon S3 バケットへのログ配信を設定できます。これらの許可は、 AWS WAFの管理に使用するユーザーにアタッチされる必要があります。

**注記**  
以下に示すアクセス許可を設定すると、アクセスが拒否されたことを示すエラーが AWS CloudTrail ログに表示されることがありますが、そのアクセス許可は AWS WAF ログ記録に正確です。

------
#### [ JSON ]

****  

```
{
   "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-destination-bucket-suffix"
         ],
         "Effect":"Allow"
      }
   ]
}
```

------

すべての AWS リソースでアクションが許可されている場合、ポリシーに `"Resource"`の設定で示されます`"*"`。つまり、各アクションがサポートするすべての AWS リソースでアクションが許可されます。 **例えば、アクション `wafv2:PutLoggingConfiguration` は、`wafv2` のログ記録設定リソースでのみサポートされます。

デフォルトでは、Amazon S3 バケットとそれに含まれているオブジェクトはプライベートです。バケット所有者のみが、そのバケットとそれに含まれているオブジェクトにアクセスできます。ただし、バケット所有者は、アクセスポリシーを記述することで他のリソースおよびユーザーに許可を付与することができます。

フローログを作成しているユーザーがバケットを所有している場合、そのバケットにログを発行する許可をフローログに付与するため、サービスは次のポリシーを自動的にバケットにアタッチします。

------
#### [ JSON ]

****  

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

------

**注記**  
 AWS WAF ログ記録用のバケット名は で始まり`aws-waf-logs-`、任意のサフィックスで終わることができます。

ログを作成しているユーザーがバケットを所有していないか、バケットに対する `GetBucketPolicy` および `PutBucketPolicy` 許可がない場合、ログの作成は失敗します。この場合、バケット所有者はバケットに手動で前述のポリシーを追加して、ログ作成者の AWS アカウント ID を指定する必要があります。詳細については、「*Amazon Simple Storage Service ユーザーガイド*」の「[S3 バケットポリシーを追加する方法](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html)」を参照してください。バケットが複数のアカウントからログを受け取る場合は、各アカウントの `AWSLogDeliveryWrite` ポリシーステートメントに `Resource` エレメントエントリを追加します。

たとえば、次のバケットポリシーでは AWS アカウント 、 `111122223333`が という名前のバケットにログを発行できるようにします`aws-waf-logs-LOGGING-BUCKET-SUFFIX`。

------
#### [ JSON ]

****  

```
{
    "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-destination-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-amzn-s3-demo-destination-bucket-suffix",
            "Condition": {
                "StringEquals": {
                "aws:SourceAccount": ["111122223333"]
                },
                "ArnLike": {
                "aws:SourceArn": ["arn:aws:logs:us-east-1:111122223333:*"]
                }
            }
        }
    ]
}
```

------

**注記**  
`s3:ListBucket` アクセス許可が `delivery.logs.amazonaws.com` に付与されていないと、 AWS CloudTrail で `AccessDenied` エラーが表示される場合があります。CloudTrail ログにこのようなエラーが表示されないようにするには、`s3:ListBucket` が `delivery.logs.amazonaws.com` にアクセスアクセス許可を付与し、前述のバケットポリシーで設定された `s3:GetBucketAcl ` アクセス許可で示されている `Condition` パラメータを含める必要があります。これを簡単にするには、新しい `Statement` を作成する代わりに、`AWSLogDeliveryAclCheck` を `“Action”: [“s3:GetBucketAcl”, “s3:ListBucket”]` であるように直接更新することができます。

## KMS キー AWS Key Management Service で を使用するためのアクセス許可
<a name="logging-s3-permissions-encrypt-kms"></a>

ログ記録先が 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 ログファイルへのアクセスに必要なアクセス許可
<a name="logging-s3-log-file-access"></a>

Amazon S3 は、アクセスコントロールリスト (ACL) を使用して、 AWS WAF ログによって作成されたログファイルへのアクセスを管理します。デフォルトでは、バケット所有者が各ログファイルで `FULL_CONTROL` 許可を持ちます。ログ配信の所有者 (バケット所有者とは異なる場合) は、許可を持ちません。ログ配信アカウントには、`READ` および `WRITE` 許可があります。詳細については、「Amazon Simple Storage Service ユーザーガイド」の「[アクセスコントロールリスト (ACL) の概要](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html)」を参照してください。