

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

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

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

# ログ記録 AWS WAF 保護パック (ウェブ ACL) トラフィック
<a name="logging"></a>

このセクションでは、 AWS WAF 保護パック (ウェブ ACLs) のログ記録オプションについて説明します。

ログ記録を有効にして、ウェブ ACL で分析されるトラフィックに関する詳細情報を取得できます。ログに記録された情報には、 AWS がリソースからウェブリクエストを AWS WAF 受信した時間、リクエストに関する詳細情報、およびリクエストが一致したルールに関する詳細が含まれます。保護パック (ウェブ ACL) ログは、Amazon CloudWatch Logs ロググループ、Amazon Simple Storage Service (Amazon S3) バケット、または Amazon Data Firehose 配信ストリームに送信できます。

は、保護パック (ウェブ ACLs) に対して有効にできるログに加えて、 によって処理されたウェブサイトまたはアプリケーショントラフィックのサービスログ AWS も使用 AWS WAF して、 AWS 顧客およびサービスのセキュリティをサポートし、保護します。

**注記**  
保護パック (ウェブ ACL) のログ記録設定は、 AWS WAF ログにのみ影響します。特に、ログ記録用に編集されたフィールド設定は、リクエストサンプリングや Security Lake データ収集には影響しません。保護パック (ウェブ ACL) データ保護を設定することで、収集またはサンプリングからフィールドを除外できます。データ保護以外に、Security Lake データ収集は、Security Lake サービスを通じて完全に設定されます。

**Topics**
+ [保護パック (ウェブ ACL) トラフィックのログ記録の料金に関する情報](logging-pricing.md)
+ [AWS WAF ログ記録の送信先](logging-destinations.md)
+ [保護パック (ウェブ ACL) のログ記録の設定](logging-management-configure.md)
+ [保護パック (ウェブ ACL) レコードの検索](logging-management.md)
+ [保護パック (ウェブ ACL) トラフィックのログフィールド](logging-fields.md)
+ [保護パック (ウェブ ACL) トラフィックのログ例](logging-examples.md)

**その他のデータ収集および分析オプション**  
ログ記録に加えて、データ収集と分析のために以下のオプションを有効にすることができます。
+ **Amazon Security Lake** – Security Lake を設定して、保護パック (ウェブ ACL) データを収集できます。Security Lake は、正規化、分析、管理のためにさまざまな ソースからログとイベントデータを収集します。このオプションの詳細については、[「Amazon Security Lake ユーザーガイド」の「Amazon Security Lake とは](https://docs.aws.amazon.com/security-lake/latest/userguide/what-is-security-lake.html)[」および「 AWS のサービスからデータを収集](https://docs.aws.amazon.com/security-lake/latest/userguide/internal-sources.html)する」を参照してください。 **

  AWS WAF は、このオプションの使用に対して課金しません。料金については、「*Amazon Security Lake ユーザーガイド*」の「[Security Lake Pricing](https://aws.amazon.com/security-lake/pricing/)」と「[How Security Lake pricing is determined](https://docs.aws.amazon.com/security-lake/latest/userguide/estimating-costs.html)」を参照してください。
+ **リクエストサンプリング** – 評価対象のウェブリクエストをサンプリングするように保護パック (ウェブ ACL) を設定して、アプリケーションが受信するトラフィックのタイプを把握できます。このオプションについては、「[ウェブリクエストのサンプルの表示](web-acl-testing-view-sample.md)」を参照してください。

# 保護パック (ウェブ ACL) トラフィックのログ記録の料金に関する情報
<a name="logging-pricing"></a>

このセクションで、保護パック (ウェブ ACL) トラフィックログの使用についての料金に関する考慮事項について説明します。

保護パック (ウェブ ACL) トラフィックに関する情報のログ記録について、各ログの宛先タイプに関連するコストに応じて請求されます。これらの料金は、 AWS WAFの使用料に加算されます。コストは、選択した宛先タイプやログに記録するデータ量などの要因によって異なる場合があります。

各ログ記録の宛先タイプの料金に関する情報へのリンクを次に示します。
+ **CloudWatch Logs** – 料金は公開ログ配信についてのものです。「[Amazon CloudWatch Logs の料金](https://aws.amazon.com/cloudwatch/pricing/)」を参照してください。**[Paid Tier]** (有料の階層) で **[Logs]** (ログ) タブを選択し、**[Vended Logs]** (公開ログ) で **[Delivery to CloudWatch Logs]** (CloudWatch Logs に配信) の情報を確認します。
+ **Amazon S3 バケット** – Amazon S3 の料金は、CloudWatch Logs が Amazon S3 バケットに公開ログ配信した料金と Amazon S3 を使用した料金を合計したものです。
  + Amazon S3 については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」を参照してください。
  + CloudWatch Logs が Amazon S3 に提供する公開ログ配信については、「[Amazon CloudWatch Logs の料金](https://aws.amazon.com/cloudwatch/pricing/)」を参照してください。**[Paid Tier]** (有料の階層) で **[Logs]** (ログ) タブを選択し、**[Vended Logs]** (公開ログ) で **[Delivery to S3]** (S3 に配信) の情報を確認します。
+ **Firehose** –「[Amazon Data Firehose Pricing](https://aws.amazon.com/kinesis/data-firehose/pricing/)」を参照してください。

 AWS WAF 料金の詳細については、[AWS WAF 「 ](https://aws.amazon.com/waf/pricing/)料金表」を参照してください。

# AWS WAF ログ記録の送信先
<a name="logging-destinations"></a>

このセクションでは、 AWS WAF ログ用に選択できるログ記録のオプションについて説明します。各セクションでは、ログを設定するためのガイダンスと、送信先の種類に固有の動作に関する情報を提供します。ログ記録の送信先を設定したら、保護パック (ウェブ ACL) ログ記録設定にその指定を入力して、送信先へのログ記録を開始することができます。

**Topics**
+ [CloudWatch Logs](logging-cw-logs.md)
+ [Amazon S3](logging-s3.md)
+ [Firehose](logging-kinesis.md)

# Amazon CloudWatch Logs ロググループへの保護パック (ウェブ ACL) トラフィックログの送信
<a name="logging-cw-logs"></a>

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

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

Amazon CloudWatch Logs にログを送信するには、CloudWatch Logs ロググループを作成します。ログインを有効にするときは AWS WAF、ロググループ ARN を指定します。保護パック (ウェブ ACL) のログ記録を有効にすると、 はログストリームの CloudWatch Logs ロググループにログを AWS WAF 配信します。

CloudWatch Logs を使用すると、 AWS WAF コンソールで保護パック (ウェブ ACL) のログを調べることができます。保護パック (ウェブ ACL) ページで、**[Logging insights]** (ログ記録のインサイト) タブを選択します。このオプションは、CloudWatch コンソールで CloudWatch Logs に提供されるログ記録インサイトに追加されるものです。

 AWS WAF 保護パック (ウェブ ACL) と同じリージョンで、保護パック (ウェブ ACL) の管理に使用するのと同じアカウントを使用して、保護パック (ウェブ ACL) ログのロググループを設定します。CloudWatch Logs ロググループの設定については、「[ロググループとログストリームの操作](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)」を参照してください。

## CloudWatch Logs のロググループに関する配分
<a name="logging-cw-logs-quotas"></a>

CloudWatch Logs には、スループットのデフォルトの最大クォータがあり、リージョン内のすべてのロググループで共有されます。これに対して、増加をリクエストできます。ログ記録の要件が既存のスループット設定に対して高すぎる場合は、アカウントの `PutLogEvents` のスロットリングメトリクスが表示されます。Service Quotas コンソールで制限を表示して引き上げをリクエストするには、「[CloudWatch Logs PutLogEvents quota](https://console.aws.amazon.com/servicequotas/home/services/logs/quotas/L-7E1FAE88)」を参照してください。

## ロググループの命名
<a name="logging-cw-logs-naming"></a>

ロググループ名は `aws-waf-logs-` で始まる必要があり、末尾を任意のサフィックスにすることができます (例: `aws-waf-logs-testLogGroup2`)。

結果として生じる ARN 形式は次のとおりです。

```
arn:aws:logs:Region:account-id:log-group:aws-waf-logs-log-group-suffix
```

ログストリームの命名形式は次のとおりです。

```
Region_web-acl-name_log-stream-number
```

リージョン `us-east-1` の保護パック (ウェブ ACL) `TestWebACL` のログストリームの例を次に示します。

```
us-east-1_TestWebACL_0
```

## CloudWatch Logs にログを発行するために必須のアクセス許可
<a name="logging-cw-logs-permissions"></a>

CloudWatch Logs ロググループの保護パック (ウェブ ACL) トラフィックログ記録を設定するには、このセクションで説明する許可設定が必要です。アクセス許可は、 AWS WAF フルアクセス管理ポリシーの 1 つ、`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) ログ記録設定の変更、CloudWatch Logs のログ配信の設定、およびロググループに関する情報の取得が可能となります。これらの許可は、 AWS WAFの管理に使用するユーザーにアタッチされる必要があります。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "wafv2:PutLoggingConfiguration",
                "wafv2:DeleteLoggingConfiguration"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow",
            "Sid": "LoggingConfigurationAPI"
        },
        {
            "Sid": "WebACLLoggingCWL",
            "Action": [
                "logs:CreateLogDelivery",
                "logs:DeleteLogDelivery",
                "logs:PutResourcePolicy",
                "logs:DescribeResourcePolicies",
                "logs:DescribeLogGroups"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        }
    ]
}
```

------

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

# 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)」を参照してください。

# Amazon Data Firehose 配信ストリームへの保護パック (ウェブ ACL) トラフィックログ送信
<a name="logging-kinesis"></a>

このセクションは、保護パック (ウェブ ACL) トラフィックログの Amazon Data Firehose 配信ストリームへの送信に関する情報を提供します。

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

ログを Amazon Data Firehose に送信するには、保護パック (ウェブ ACL) から Firehose で設定した Amazon Data Firehose 配信ストリームにログを送信します。ログ記録を有効にすると、 は Firehose の HTTPS エンドポイントを介してストレージ宛先にログを AWS WAF 配信します。

1 つの AWS WAF ログは、1 つの Firehose レコードに相当します。通常、1 秒あたり 10,000 件のリクエストを受信していて、完全なログを有効にする場合、Firehose には 1 秒あたり 10,000 件のレコード設定を行う必要があります。Firehose を正しく設定しない場合、すべてのログは記録 AWS WAF されません。詳細については、「[Amazon Kinesis Data Firehose quotas](https://docs.aws.amazon.com/firehose/latest/dev/limits.html)」を参照してください。

Amazon Data Firehose 配信ストリームを作成し、保存されているログを確認する方法については、「[What Is Amazon Data Firehose?](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html)」を参照してください。

配信ストリームの作成の詳細については、「[Creating an Amazon Data Firehose delivery stream](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html)」を参照してください。

## 保護パック (ウェブ ACL) の Amazon Data Firehose 配信ストリームを設定する
<a name="logging-kinesis-configuration"></a>

保護パック (ウェブ ACL) の Amazon Data Firehose 配信ストリームを次のように設定します。
+ 保護パック (ウェブ ACL) の管理に使用するアカウントと同じアカウントを使用して作成します。
+ 保護パック (ウェブ ACL) と同じリージョンに作成します。Amazon CloudFront のログをキャプチャしている場合は、米国東部 (バージニア北部) リージョン `us-east-1` に Firehose を作成します。
+ データ Firehose にプレフィックス `aws-waf-logs-` で始まる名前を付けます。例えば、`aws-waf-logs-us-east-2-analytics`。
+ Direct PUT 用に設定し、アプリケーションが配信ストリームに直接アクセスできるようにします。「[Amazon Data Firehose コンソール](https://console.aws.amazon.com/firehose)」で、配信ストリームの **[ソース]** の設定に **[Direct PUT または他のソース]** を選択します。API を通じて、配信ストリームのプロパティ `DeliveryStreamType` を `DirectPut` に設定します。
**注記**  
`Kinesis stream` をソースとして使用しないでください。

## Amazon Data Firehose にログを発行するために必須のアクセス権限
<a name="logging-kinesis-permissions"></a>

Kinesis Data Firehose の設定に必要な許可を理解するには、「[Controlling Access with Amazon Kinesis Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html)」(Amazon Kinesis Data Firehose によるアクセスの制御) を参照してください。

Amazon Data Firehose 配信ストリームを使用して保護パック (ウェブ ACL) のログ記録を正常に有効化するには、次のアクセス権限が付与されている必要があります。
+ `iam:CreateServiceLinkedRole`
+ `firehose:ListDeliveryStreams`
+ `wafv2:PutLoggingConfiguration`

サービスにリンクされたロールおよび `iam:CreateServiceLinkedRole` 許可の詳細については、「[のサービスにリンクされたロールの使用 AWS WAF](using-service-linked-roles.md)」を参照してください。

# 保護パック (ウェブ ACL) のログ記録の設定
<a name="logging-management-configure"></a>

このセクションでは、保護パック (ウェブ ACL) のデータ保護を設定する手順について説明します。

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

保護パック (ウェブ ACL) のログ記録を有効にするには、使用するログ記録の送信先を既に設定しておく必要があります。ターゲットの選択肢とそれぞれの要件については、「[AWS WAF ログ記録の送信先](logging-destinations.md)」を参照してください。

**保護パック (ウェブ ACL) のログ記録を設定するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/wafv2/homev2](https://console.aws.amazon.com/wafv2/homev2) で AWS WAF コンソールを開きます。

1. ナビゲーションペインで、**[保護パック (ウェブ ACL)]** を選択します。

1. ログ記録を有効にする保護パック (ウェブ ACL) の名前を選択します。コンソールで保護パック (ウェブ ACL) の説明が表示され、そこで編集できます。

1. **[ログ記録]** タブで **[ログ記録を有効にする]** を選択します。

1. ログ記録の送信先タイプを選択し、設定したログ記録先を選択します。名前が `aws-waf-logs-` で始まるログ記録先を選択する必要があります。

1. (オプション) ログに一部のフィールドを含めたくない場合は、それらをマスキングします。マスキングするフィールドを選び、**[Add]** (追加) を選択します。必要に応じて手順を繰り返し、追加のフィールドをマスキングします。マスキングされたフィールドは、ログに `xxx` と表示されます。
**注記**  
この設定は、リクエストサンプリングには影響しません。保護パック (ウェブ ACL) データ保護を設定するか、保護パック (ウェブ ACL) のサンプリングを無効にすることで、リクエストサンプリングからフィールドを除外できます。

1. (オプション) すべてのリクエストをログに送信しない場合は、フィルタリング条件と動作を追加します。**[Filter logs]** (ログをフィルタリング) で、適用する各フィルターについて **[Add filter]** (フィルターを追加) を選択し、次にフィルター基準を選択して、基準に一致するリクエストを保持するかドロップするかを指定します。フィルターの追加が完了したら、必要に応じて、**[Default logging behavior]** (デフォルトのログ記録動作) を変更します。
**注記**  
複数のフィルターを追加すると、 AWS WAF はそれらを上部から評価します。

1. **[Enable logging]** (ログの有効化) を選択します。
**注記**  
ログ記録を正常に有効にすると、 AWS WAF はログ記録の送信先にログを書き込むために必要なアクセス許可を持つサービスにリンクされたロールを作成します。詳細については、「[のサービスにリンクされたロールの使用 AWS WAF](using-service-linked-roles.md)」を参照してください。

# 保護パック (ウェブ ACL) レコードの検索
<a name="logging-management"></a>

このセクションでは、保護パック (ウェブ ACL) レコードを検索する方法について説明します。

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

**ログにログレコードが見つからない場合**  
まれに、 AWS WAF ログ配信が 100% を下回ることがあり、ログはベストエフォートベースで配信されます。 AWS WAF アーキテクチャは、他のすべての考慮事項よりもアプリケーションのセキュリティを優先します。ロギングフローでトラフィックスロットリングが発生する場合など、状況によってはレコードがドロップされることがあります。影響するレコードは数件に限られます。ログエントリがいくつか欠落していることに気付いた場合は、[AWS サポート センター](https://console.aws.amazon.com/support/home#/)に連絡してください。

保護パック (ウェブ ACL) のログ記録設定で、 AWS WAF がログに送信する内容をカスタマイズできます。
+ **フィールドのマスキング** – 対応する一致設定を使用するルールのログレコードの次のフィールドをマスキングできます: **[URI パス]**、**[クエリ文字列]**、**[単一ヘッダー]**、および **[HTTP メソッド]**。マスキングされたフィールドは、ログに `REDACTED` と表示されます。例えば、ログ内の **[クエリ文字列]** フィールドをマスキングすると、**[クエリ文字列]** 一致コンポーネント設定を使用するすべてのルールで `REDACTED` としてリストされます。マスキングは、ルールで一致するように指定したリクエストコンポーネントにのみ適用されるため、**[単一ヘッダー]** コンポーネントのマスキングは、**[ヘッダー]** で照合するルールには適用されません。ログフィールドのリストについては、「[保護パック (ウェブ ACL) トラフィックのログフィールド](logging-fields.md)」を参照してください。
**注記**  
この設定は、リクエストサンプリングには影響しません。保護パック (ウェブ ACL) データ保護を設定するか、保護パック (ウェブ ACL) のサンプリングを無効にすることで、リクエストサンプリングからフィールドを除外できます。
+ **ログのフィルタリング** – フィルタリングを追加して、ログに保持されるウェブリクエストとドロップされるウェブリクエストを指定できます。ウェブリクエストの評価中 AWS WAF に適用される設定をフィルタリングします。次の設定でフィルタリングできます。
  + **完全修飾ラベル** – 完全修飾ラベルには、プレフィックス、オプションの名前空間、およびラベル名があります。プレフィクスは、ラベルを追加したルールのルールグループまたは保護パック (ウェブ ACL) コンテキストを識別します。ラベルの詳細については、「[でのウェブリクエストのラベル付け AWS WAF](waf-labels.md)」を参照してください。
  + **ルールアクション** – 通常のルールアクション設定だけでなく、ルールグループのルールのレガシー `EXCLUDED_AS_COUNT` オーバーライドオプションをフィルタリングできます。ルールアクションの設定については、「[でのルールアクションの使用 AWS WAF](waf-rule-action.md)」を参照してください。ルールグループのルールの現在のルールアクションオーバーライドとレガシールールアクションオーバーライドについては、「[でのルールグループアクションの上書き AWS WAF](web-acl-rule-group-override-options.md)」を参照してください。
    + 通常のルールアクションフィルターは、ルールで設定されたアクションだけでなく、ルールグループのルールアクションをオーバーライドするための現在のオプションを使用して設定されたアクションにも適用されます。
    + `EXCLUDED_AS_COUNT` ログフィルターは、`Count` アクションログフィルターと重複しています。`EXCLUDED_AS_COUNT` は、ルールグループのルールアクションを Count にオーバーライドするための現在のオプションとレガシーオプションの両方をフィルタリングします。

# 保護パック (ウェブ ACL) トラフィックのログフィールド
<a name="logging-fields"></a>

次のリストは、可能なログフィールドについて説明しています。

**action**  
がリクエスト AWS WAF に適用した終了アクション。これは許可、ブロック、CAPTCHA、チャレンジのいずれかを示します。ウェブリクエストに有効なトークンが含まれていないとき、CAPTCHA および Challenge アクションは終了します。

**args**  
クエリ文字列。

**captchaResponse**  
CAPTCHA アクションがリクエストに適用されたときに入力される、リクエストの CAPTCHA アクションステータス。このフィールドは、終了の有無にかかわらず、すべての CAPTCHA アクションに入力されます。リクエストに CAPTCHA アクションが複数回適用されている場合、このフィールドはアクションが最後に適用された時点から入力されます。  
リクエストにトークンが含まれていない、あるいはトークンが無効または有効期限切れているとき、CAPTCHA アクションはウェブリクエストの検査を終了します。CAPTCHA アクションが終了している場合、このフィールドにはレスポンスコードと失敗の理由が含まれます。アクションが非終了型の場合、このフィールドには解決タイムスタンプが含まれます。終了アクションと非終了アクションを区別するには、このフィールドで空でない `failureReason` 属性をフィルタリングできます。

**cfDistributionTenantId**  
ウェブリクエストに関連付けられた CloudFront ディストリビューションテナントの識別子。このフィールドはオプションであり、CloudFront ディストリビューションテナントに関連付けられた保護パック (ウェブ ACL) にのみ適用されます。

**challengeResponse**  
Challenge アクションがリクエストに適用されたときに入力される、リクエストのチャレンジアクションステータス。このフィールドは、終了の有無にかかわらず、すべての Challenge アクションに入力されます。リクエストに Challenge アクションが複数回適用されている場合、このフィールドはアクションが最後に適用された時点から入力されます。  
リクエストにトークンが含まれていない、あるいはトークンが無効または有効期限切れているとき、Challenge アクションはウェブリクエストの検査を終了します。Challenge アクションが終了している場合、このフィールドにはレスポンスコードと失敗の理由が含まれます。アクションが非終了型の場合、このフィールドには解決タイムスタンプが含まれます。終了アクションと非終了アクションを区別するには、このフィールドで空でない `failureReason` 属性をフィルタリングできます。

**clientAsn**  
ウェブリクエストのオリジンの IP アドレスに関連付けられた AS 番号 (ASN)。  
**clientAsn** は、ASN 一致ステートメントが使用されている場合にのみ AWS WAF ログに記録されます。このフィールドは、それ以外の場合はログに記録されません。

**clientIp**  
リクエストを送信するクライアントの IP アドレス。

**country**  
リクエストの送信国。 AWS WAF が原産国を特定できない場合、このフィールドは に設定されます`-`。

**country**  
リクエストの送信国。 AWS WAF が原産国を特定できない場合、このフィールドは に設定されます`-`。

**excludedRules**  
ルールグループのルールにのみ使用されます。除外されているルールグループ内のルールのリスト。これらのルールのアクションは Count に設定されています。  
オーバーライドルールアクションのオプションを使用してルールがカウントするようにオーバーライドする場合、一致するものはここには一覧表示されません。アクションペア `action` および `overriddenAction` として一覧表示されています。    
exclusionType  
除外されたルールにアクション Count があることを示すタイプ。  
ruleId  
除外されたルールグループ内のルールの ID。

**formatVersion**  
ログの形式バージョン。

**forwardedAsn**  
ウェブリクエストを転送したエンティティの の IP アドレスに関連付けられた AS 番号 (ASN)。

**headers**  
ヘッダーの一覧。

**httpMethod**  
リクエストの HTTP メソッド。

**httpRequest**  
リクエストに関するメタデータです。

**httpSourceId**  
関連付けられたリソースの ID。  
+ Amazon CloudFront ディストリビューションの場合、ID は ARN 構文で `distribution-id` です。

  `arn:partitioncloudfront::account-id:distribution/distribution-id` 
+ Application Load Balancer の場合、ID は ARN 構文で `load-balancer-id` です。

  `arn:partition:elasticloadbalancing:region:account-id:loadbalancer/app/load-balancer-name/load-balancer-id`
+ Amazon API Gateway REST API の場合、ID は ARN 構文で `api-id` です。

  `arn:partition:apigateway:region::/restapis/api-id/stages/stage-name`
+  AWS AppSync GraphQL API の場合、ID は ARN 構文`GraphQLApiId`の です。

  `arn:partition:appsync:region:account-id:apis/GraphQLApiId`
+ Amazon Cognito ユーザープールの場合、ID は ARN 構文で `user-pool-id` です。

  `arn:partition:cognito-idp:region:account-id:userpool/user-pool-id`
+  AWS App Runner サービスの場合、ID は ARN 構文`apprunner-service-id`の です。

  `arn:partition:apprunner:region:account-id:service/apprunner-service-name/apprunner-service-id`

**httpSourceName**  
リクエストの送信元。指定できる値: Amazon CloudFront `CF` の場合、`APIGW`Amazon API Gateway `ALB` の場合、Application Load Balancer `APPSYNC`の場合、Amazon Cognito AWS AppSync`COGNITOIDP` の場合、App Runner `APPRUNNER` の場合、Verified Access `VERIFIED_ACCESS` の場合。

**httpVersion**  
HTTP のバージョン。

**ja3Fingerprint**  
リクエストの JA3 フィンガープリント。  
JA3 フィンガープリント検査は、Amazon CloudFront ディストリビューションと Application Load Balancer でのみ利用可能です。
JA3 フィンガープリントは、受信リクエストの TLS Client Hello から生成される 32 文字のハッシュです。このフィンガープリントは、クライアントの TLS 設定の一意の識別子として機能します。 AWS WAF は、計算に十分な TLS Client Hello 情報を持つリクエストごとに、このフィンガープリントを計算してログに記録します。  
この値は、保護パック (ウェブ ACL) ルールで JA3 フィンガープリントの一致を設定するときに指定します。JA3 フィンガープリントとの一致を作成する方法については、「[でコンポーネントをリクエストする AWS WAF](waf-rule-statement-fields-list.md)」の「[JA3 フィンガープリント](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-ja3-fingerprint)」に記載されているルールステートメントを参照してください。

**ja4Fingerprint**  
リクエストの JA4 フィンガープリント。  
JA4 フィンガープリント検査は、Amazon CloudFront ディストリビューションと Application Load Balancer でのみ使用できます。
JA4 フィンガープリントは、受信リクエストの TLS Client Hello から派生した 36 文字のハッシュです。このフィンガープリントは、クライアントの TLS 設定の一意の識別子として機能します。 AWS WAF は、計算に十分な TLS Client Hello 情報を持つリクエストごとに、このフィンガープリントを計算してログに記録します。  
この値は、保護パック (ウェブ ACL) ルールで JA4 フィンガープリントの一致を設定するときに指定します。JA4 フィンガープリントとの一致の作成については、ルールステートメント[でコンポーネントをリクエストする AWS WAF](waf-rule-statement-fields-list.md)の [JA4 フィンガープリント](waf-rule-statement-fields-list.md#waf-rule-statement-request-component-ja4-fingerprint)の「」を参照してください。

**ラベル**  
ウェブリクエストのラベル。これらのラベルは、最初の 100 AWS WAF 個のラベルの評価に使用されたルールによって適用されました。

**nonTerminatingMatchingRules**  
リクエストに一致した非終了型ルールのリスト。各リスト項目には、次の情報が含まれています。    
action  
がリクエスト AWS WAF に適用したアクション。カウント、CAPTCHA、チャレンジのいずれかを示します。ウェブリクエストに有効なトークンが含まれていると、CAPTCHA および Challenge は終了処理しません。  
ruleId  
リクエストに一致し、非終了ルールの ID。  
ruleMatchDetails  
リクエストに一致したルールに関する詳細情報。このフィールドは、SQL インジェクションおよびクロスサイトスクリプティング (XSS) 一致ルールステートメントに対してのみ設定されます。一致ルールでは、複数の検査基準の一致が必要になる場合があるため、これらの一致の詳細は、一致基準の配列として提供されます。
各ルールに提供される追加情報は、ルール設定、ルール一致タイプ、一致の詳細などの要因によって異なります。たとえば、CAPTCHA または Challenge アクションを持つルールの場合、`captchaResponse` または`challengeResponse` が一覧表示されます。一致するルールがルールグループにあり、その設定済みルールアクションをオーバーライドした場合、設定済みアクションは `overriddenAction` で提供されます。

**oversizeFields**  
保護パック (ウェブ ACL) によって検査され、 AWS WAF 検査制限を超えているウェブリクエスト内のフィールドのリスト。フィールドがオーバーサイズであっても、保護パック (ウェブ ACL) が検査しない場合、ここには表示されません。  
このリストには、`REQUEST_BODY`、`REQUEST_JSON_BODY`、`REQUEST_HEADERS`、および `REQUEST_COOKIES` の値が何個か含まれることも、含まれないこともあります。オーバーサイズフィールドの詳細については、「[でのウェブリクエストコンポーネントのオーバーサイズ化 AWS WAF](waf-oversize-request-components.md)」を参照してください。

**rateBasedRuleList**  
このリクエストで動作したレートベースのルールのリスト。レートベースルールの詳細については、「[でのレートベースのルールステートメントの使用 AWS WAF](waf-rule-statement-type-rate-based.md)」を参照してください。    
rateBasedRuleId  
このリクエストで動作したレートベースのルールの ID。これがリクエストを終了した場合、`rateBasedRuleId` の ID は、`terminatingRuleId` の ID と同じです。  
rateBasedRuleName  
このリクエストで動作したレートベースのルールの名前。  
limitKey  
ルールが使用している集約のタイプ。指定できる値は、ウェブリクエストの発信元用の `IP`、リクエストのヘッダーで転送された IP 用の `FORWARDED_IP`、カスタム集約キー設定用の `CUSTOMKEYS`、および集約なしですべてのリクエストをまとめてカウントする用の `CONSTANT` です。  
limitValue  
単一の IP アドレスタイプでレート制限を行う場合にのみ使用される。リクエストに有効ではない IP アドレスが含まれている場合、`limitvalue` は `INVALID` です。  
maxRateAllowed  
特定の集約インスタンスに対して指定された時間枠で許可されるリクエストの最大数。集約インスタンスは、`limitKey` およびレートベースのルール設定で提供される追加のキー仕様によって定義されます。  
evaluationWindowSec  
がリクエストに AWS WAF 含めた時間を秒単位でカウントします。  
customValues  
リクエスト内のレートベースのルールによって識別される一意の値。文字列値の場合、ログは文字列値の最初の 32 文字を出力します。キータイプに応じて、これらの値は HTTP メソッドやクエリ文字列といったキーだけの場合もあれば、ヘッダーやヘッダー名のようなキーと名前の場合もあります。

**requestHeadersInserted**  
カスタムリクエストの処理用に挿入されるヘッダーのリスト。

**requestId**  
基盤となるホストサービスによって生成されるリクエストの ID。Application Load Balancer では、これはトレース ID です。その他すべての場合、これはリクエスト ID です。

**responseCodeSent**  
カスタムレスポンスで送信されるレスポンスコード。

**ruleGroupId**  
ルールグループの ID ルールがリクエストをブロックした場合、`ruleGroupID` の ID は、`terminatingRuleId` の ID と同じです。

**ruleGroupList**  
このリクエストに対して動作したルールグループのリスト (一致情報を含む)。

**terminatingRule**  
リクエストを終了したルール。これが存在する場合、次の情報が含まれます。    
action  
がリクエスト AWS WAF に適用した終了アクション。これは許可、ブロック、CAPTCHA、チャレンジのいずれかを示します。ウェブリクエストに有効なトークンが含まれていないとき、CAPTCHA および Challenge アクションは終了します。  
ruleId  
リクエストに一致したルールの ID。  
ruleMatchDetails  
リクエストに一致したルールに関する詳細情報。このフィールドは、SQL インジェクションおよびクロスサイトスクリプティング (XSS) 一致ルールステートメントに対してのみ設定されます。一致ルールでは、複数の検査基準の一致が必要になる場合があるため、これらの一致の詳細は、一致基準の配列として提供されます。
各ルールに提供される追加情報は、ルール設定、ルール一致タイプ、一致の詳細などの要因によって異なります。たとえば、CAPTCHA または Challenge アクションを持つルールの場合、`captchaResponse` または`challengeResponse` が一覧表示されます。一致するルールがルールグループにあり、その設定済みルールアクションをオーバーライドした場合、設定済みアクションは `overriddenAction` で提供されます。

**terminatingRuleId**  
リクエストを終了したルールの ID。リクエストを終了したものがない場合、この値は `Default_Action` となります。

**terminatingRuleMatchDetails**  
リクエストに一致した終了ルールに関する詳細情報。終了ルールには、ウェブリクエストに対する検査プロセスを終了するアクションがあります。終了ルールに可能なアクションには、Allow、Block、CAPTCHA、Challenge が含まれます。ウェブリクエストの検査中に、リクエストに一致し、終了アクションを持つ最初のルールで、 は検査 AWS WAF を停止し、アクションを適用します。ウェブリクエストには、一致する終了ルールのログで報告された脅威に加えて、他の脅威が含まれている可能性があります。  
これは、SQL インジェクションおよびクロスサイトスクリプティング (XSS) 一致ルールステートメントに対してのみ設定されます。一致ルールでは、複数の検査基準の一致が必要になる場合があるため、これらの一致の詳細は、一致基準の配列として提供されます。

**terminatingRuleType**  
リクエストを終了したルールのタイプ。可能な値: RATE\$1BASED、REGULAR、GROUP、MANAGED\$1RULE\$1GROUP。

**timestamp**  
タイムスタンプ (ミリ秒単位)。

**uri**  
リクエストの URI。

**fragment**  
「\$1」記号の後に続く URL の一部で、\$1section2 など、リソースに関する追加情報を提供します。

**webaclId**  
保護パック (ウェブ ACL) の GUID。

# 保護パック (ウェブ ACL) トラフィックのログ例
<a name="logging-examples"></a>

このセクションでは、保護パック (ウェブ ACL) トラフィックをログに記録する例を示します。

**Example レートベースのルール 1: キーが 1 つで、`Header:dogname` に設定されたルール設定**  

```
    {
      "Name": "RateBasedRule",
      "Priority": 1,
      "Statement": {
        "RateBasedStatement": {
          "Limit": 100,
          "AggregateKeyType": "CUSTOM_KEYS",
          "CustomKeys": [
            {
              "Header": {
                "Name": "dogname",
                "TextTransformations": [
                  {
                    "Priority": 0,
                    "Type": "NONE"
                  }
                ]
              }
            }
          ]
        }
      },
      "Action": {
        "Block": {}
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "RateBasedRule"
      }
    }
```

**Example レートベースのルール 1: レートベースのルールによってブロックされたリクエストのログエントリ**  

```
{
   "timestamp":1683355579981,
   "formatVersion":1,
   "webaclId": ...,
   "terminatingRuleId":"RateBasedRule",
   "terminatingRuleType":"RATE_BASED",
   "action":"BLOCK",
   "terminatingRuleMatchDetails":[
      
   ],
   "httpSourceName":"APIGW",
   "httpSourceId":"EXAMPLE11:rjvegx5guh:CanaryTest",
   "ruleGroupList":[
      
   ],
   "rateBasedRuleList":[
      {
         "rateBasedRuleId": ...,
         "rateBasedRuleName":"RateBasedRule",
         "limitKey":"CUSTOMKEYS",
         "maxRateAllowed":100,
         "evaluationWindowSec":"120",
         "customValues":[
            {
               "key":"HEADER",
               "name":"dogname",
               "value":"ella"
            }
         ]
      }
   ],
   "nonTerminatingMatchingRules":[
      
   ],
   "requestHeadersInserted":null,
   "responseCodeSent":null,
   "httpRequest":{
      "clientIp":"52.46.82.45",
      "country":"FR",
      "headers":[
         {
            "name":"X-Forwarded-For",
            "value":"52.46.82.45"
         },
         {
            "name":"X-Forwarded-Proto",
            "value":"https"
         },
         {
            "name":"X-Forwarded-Port",
            "value":"443"
         },
         {
            "name":"Host",
            "value":"rjvegx5guh.execute-api.eu-west-3.amazonaws.com"
         },
         {
            "name":"X-Amzn-Trace-Id",
            "value":"Root=1-645566cf-7cb058b04d9bb3ee01dc4036"
         },
         {
            "name":"dogname",
            "value":"ella"
         },
         {
            "name":"User-Agent",
            "value":"RateBasedRuleTestKoipOneKeyModulePV2"
         },
         {
            "name":"Accept-Encoding",
            "value":"gzip,deflate"
         }
      ],
      "uri":"/CanaryTest",
      "args":"",
      "httpVersion":"HTTP/1.1",
      "httpMethod":"GET",
      "requestId":"Ed0AiHF_CGYF-DA="
   }
}
```

**Example レートベースのルール 2: キーが 2 つで、`Header:dogname` および `Header:catname` に設定されたルール設定**  

```
    {
      "Name": "RateBasedRule",
      "Priority": 1,
      "Statement": {
        "RateBasedStatement": {
          "Limit": 100,
          "AggregateKeyType": "CUSTOM_KEYS",
          "CustomKeys": [
            {
              "Header": {
                "Name": "dogname",
                "TextTransformations": [
                  {
                    "Priority": 0,
                    "Type": "NONE"
                  }
                ]
              }
            },
            {
              "Header": {
                "Name": "catname",
                "TextTransformations": [
                  {
                    "Priority": 0,
                    "Type": "NONE"
                  }
                ]
              }
            }
          ]
        }
      },
      "Action": {
        "Block": {}
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "RateBasedRule"
      }
    }
```

**Example レートベースのルール 2: レートベースのルールによってブロックされたリクエストのログエントリ**  

```
{
   "timestamp":1633322211194,
   "formatVersion":1,
   "webaclId":...,
   "terminatingRuleId":"RateBasedRule",
   "terminatingRuleType":"RATE_BASED",
   "action":"BLOCK",
   "terminatingRuleMatchDetails":[
      
   ],
   "httpSourceName":"APIGW",
   "httpSourceId":"EXAMPLE11:rjvegx5guh:CanaryTest",
   "ruleGroupList":[
      
   ],
   "rateBasedRuleList":[
      {
         "rateBasedRuleId":...,
         "rateBasedRuleName":"RateBasedRule",
         "limitKey":"CUSTOMKEYS",
         "maxRateAllowed":100,
         "evaluationWindowSec":"120",
         "customValues":[
            {
               "key":"HEADER",
               "name":"dogname",
               "value":"ella"
            },
            {
               "key":"HEADER",
               "name":"catname",
               "value":"goofie"
            }
         ]
      }
   ],
   "nonTerminatingMatchingRules":[
      
   ],
   "requestHeadersInserted":null,
   "responseCodeSent":null,
   "httpRequest":{
      "clientIp":"52.46.82.35",
      "country":"FR",
      "headers":[
         {
            "name":"X-Forwarded-For",
            "value":"52.46.82.35"
         },
         {
            "name":"X-Forwarded-Proto",
            "value":"https"
         },
         {
            "name":"X-Forwarded-Port",
            "value":"443"
         },
         {
            "name":"Host",
            "value":"23llbyn8v3.execute-api.eu-west-3.amazonaws.com"
         },
         {
            "name":"X-Amzn-Trace-Id",
            "value":"Root=1-64556629-17ac754c2ed9f0620e0f2a0c"
         },
         {
            "name":"catname",
            "value":"goofie"
         },
         {
            "name":"dogname",
            "value":"ella"
         },
         {
            "name":"User-Agent",
            "value":"Apache-HttpClient/UNAVAILABLE (Java/11.0.19)"
         },
         {
            "name":"Accept-Encoding",
            "value":"gzip,deflate"
         }
      ],
      "uri":"/CanaryTest",
      "args":"",
      "httpVersion":"HTTP/1.1",
      "httpMethod":"GET",
      "requestId":"EdzmlH5OCGYF1vQ="
   }
}
```

**Example SQLi 検出 (終了) でトリガーされたルールのログ出力**  

```
{
    "timestamp": 1576280412771,
    "formatVersion": 1,
    "webaclId": "arn:aws:wafv2:ap-southeast-2:111122223333:regional/webacl/STMTest/1EXAMPLE-2ARN-3ARN-4ARN-123456EXAMPLE",
    "terminatingRuleId": "STMTest_SQLi_XSS",
    "terminatingRuleType": "REGULAR",
    "action": "BLOCK",
    "terminatingRuleMatchDetails": [
        {
            "conditionType": "SQL_INJECTION",
            "sensitivityLevel": "HIGH",
            "location": "HEADER",
            "matchedData": [
                "10",
                "AND",
                "1"
            ]
        }
    ],
    "httpSourceName": "-",
    "httpSourceId": "-",
    "ruleGroupList": [],
    "rateBasedRuleList": [],
    "nonTerminatingMatchingRules": [],
    "httpRequest": {
        "clientIp": "1.1.1.1",
        "country": "AU",
        "headers": [
            {
                "name": "Host",
                "value": "localhost:1989"
            },
            {
                "name": "User-Agent",
                "value": "curl/7.61.1"
            },
            {
                "name": "Accept",
                "value": "*/*"
            },
            {
                "name": "x-stm-test",
                "value": "10 AND 1=1"
            }
        ],
        "uri": "/myUri",
        "args": "",
        "httpVersion": "HTTP/1.1",
        "httpMethod": "GET",
        "requestId": "rid"
    },
    "labels": [
        {
            "name": "value"
        }
    ]
}
```

**Example SQLi 検出 (非終了) でトリガーされたルールのログ出力**  

```
{
    "timestamp":1592357192516
    ,"formatVersion":1
    ,"webaclId":"arn:aws:wafv2:us-east-1:123456789012:global/webacl/hello-world/5933d6d9-9dde-js82-v8aw-9ck28nv9"
    ,"terminatingRuleId":"Default_Action"
    ,"terminatingRuleType":"REGULAR"
    ,"action":"ALLOW"
    ,"terminatingRuleMatchDetails":[]
    ,"httpSourceName":"-"
    ,"httpSourceId":"-"
    ,"ruleGroupList":[]
    ,"rateBasedRuleList":[]
    ,"nonTerminatingMatchingRules":
    [{
        "ruleId":"TestRule"
        ,"action":"COUNT"
        ,"ruleMatchDetails":
        [{
            "conditionType":"SQL_INJECTION"
            ,"sensitivityLevel": "HIGH"
            ,"location":"HEADER"
            ,"matchedData":[
                "10"
                ,"and"
                ,"1"]
            }]
    }]
    ,"httpRequest":{
        "clientIp":"3.3.3.3"
        ,"country":"US"
        ,"headers":[
            {"name":"Host","value":"localhost:1989"}
            ,{"name":"User-Agent","value":"curl/7.61.1"}
            ,{"name":"Accept","value":"*/*"}
            ,{"name":"myHeader","myValue":"10 AND 1=1"}
            ]
            ,"uri":"/myUri","args":""
            ,"httpVersion":"HTTP/1.1"
            ,"httpMethod":"GET"
            ,"requestId":"rid"
    },
    "labels": [
        {
            "name": "value"
        }
    ]
}
```

**Example ルールグループ内でトリガーされた複数のルールのログ出力 (RuleA-XSS は終了、Rule-B は非終了)**  

```
{
    "timestamp":1592361810888,
    "formatVersion":1,
    "webaclId":"arn:aws:wafv2:us-east-1:123456789012:global/webacl/hello-world/5933d6d9-9dde-js82-v8aw-9ck28nv9"
    ,"terminatingRuleId":"RG-Reference"
    ,"terminatingRuleType":"GROUP"
    ,"action":"BLOCK",
    "terminatingRuleMatchDetails":
    [{
        "conditionType":"XSS"
        ,"location":"HEADER"
        ,"matchedData":["<","frameset"]
    }]
    ,"httpSourceName":"-"
    ,"httpSourceId":"-"
    ,"ruleGroupList":
    [{
        "ruleGroupId":"arn:aws:wafv2:us-east-1:123456789012:global/rulegroup/hello-world/c05lb698-1f11-4m41-aef4-99a506d53f4b"
        ,"terminatingRule":{
            "ruleId":"RuleA-XSS"
            ,"action":"BLOCK"
            ,"ruleMatchDetails":null
            }
        ,"nonTerminatingMatchingRules":
        [{
            "ruleId":"RuleB-SQLi"
            ,"action":"COUNT"
            ,"ruleMatchDetails":
            [{
                "conditionType":"SQL_INJECTION"
                ,"sensitivityLevel": "LOW"
                ,"location":"HEADER"
                ,"matchedData":[
                    "10"
                    ,"and"
                    ,"1"]
            }]
        }]
        ,"excludedRules":null
    }]
    ,"rateBasedRuleList":[]
    ,"nonTerminatingMatchingRules":[]
    ,"httpRequest":{
        "clientIp":"3.3.3.3"
        ,"country":"US"
        ,"headers":
        [
            {"name":"Host","value":"localhost:1989"}
            ,{"name":"User-Agent","value":"curl/7.61.1"}
            ,{"name":"Accept","value":"*/*"}
            ,{"name":"myHeader1","value":"<frameset onload=alert(1)>"}
            ,{"name":"myHeader2","value":"10 AND 1=1"}
            ]
        ,"uri":"/myUri"
        ,"args":""
        ,"httpVersion":"HTTP/1.1"
        ,"httpMethod":"GET"
        ,"requestId":"rid"
    },
    "labels": [
        {
            "name": "value"
        }
    ]
}
```

**Example コンテンツタイプ JSON を使用したリクエストボディの検査のためにトリガーされたルールのログ出力**  
AWS WAF は現在、JSON 本文検査の場所を として報告しています`UNKNOWN`。  

```
{
    "timestamp": 1576280412771,
    "formatVersion": 1,
    "webaclId": "arn:aws:wafv2:ap-southeast-2:123456789012:regional/webacl/test/111",
    "terminatingRuleId": "STMTest_SQLi_XSS",
    "terminatingRuleType": "REGULAR",
    "action": "BLOCK",
    "terminatingRuleMatchDetails": [
        {
            "conditionType": "SQL_INJECTION",
            "sensitivityLevel": "LOW",
            "location": "UNKNOWN",
            "matchedData": [
                "10",
                "AND",
                "1"
            ]
        }
    ],
    "httpSourceName": "ALB",
    "httpSourceId": "alb",
    "ruleGroupList": [],
    "rateBasedRuleList": [],
    "nonTerminatingMatchingRules": [],
    "requestHeadersInserted":null,
    "responseCodeSent":null,
    "httpRequest": {
        "clientIp": "1.1.1.1",
        "country": "AU",
        "headers": [],
        "uri": "",
        "args": "",
        "httpVersion": "HTTP/1.1",
        "httpMethod": "POST",
        "requestId": "null"
    },
    "labels": [
        {
            "name": "value"
        }
    ]
}
```

**Example 有効期限が切れていない有効な CAPTCHA トークンを使用したウェブリクエストに対する CAPTCHA ルールのログ出力**  
次のログリストは、CAPTCHA アクションを持つルールと一致したウェブリクエストについてのものです。ウェブリクエストには有効で有効期限が切れていない CAPTCHA トークンがあり、Countアクションの動作と同様に AWS WAF、 による CAPTCHA 一致としてのみ記録されます。この CAPTCHA の一致については、`nonTerminatingMatchingRules` に記載されています。  

```
{
  "timestamp": 1632420429309,
  "formatVersion": 1,
  "webaclId": "arn:aws:wafv2:us-east-1:123456789012:regional/webacl/captcha-web-acl/585e38b5-afce-4d2a-b417-14fb08b66c67",
  "terminatingRuleId": "Default_Action",
  "terminatingRuleType": "REGULAR",
  "action": "ALLOW",
  "terminatingRuleMatchDetails": [],
  "httpSourceName": "APIGW",
  "httpSourceId": "123456789012:b34myvfw0b:pen-test",
  "ruleGroupList": [],
  "rateBasedRuleList": [],
  "nonTerminatingMatchingRules": [
    {
      "ruleId": "captcha-rule",
      "action": "CAPTCHA",
      "ruleMatchDetails": [],
      "captchaResponse": {
        "responseCode": 0,
        "solveTimestamp": 1632420429
      }
    }
  ],
  "requestHeadersInserted": [
    {
      "name": "x-amzn-waf-test-header-name",
      "value": "test-header-value"
    }
  ],
  "responseCodeSent": null,
  "httpRequest": {
    "clientIp": "72.21.198.65",
    "country": "US",
    "headers": [
      {
        "name": "X-Forwarded-For",
        "value": "72.21.198.65"
      },
      {
        "name": "X-Forwarded-Proto",
        "value": "https"
      },
      {
        "name": "X-Forwarded-Port",
        "value": "443"
      },
      {
        "name": "Host",
        "value": "b34myvfw0b.gamma.execute-api.us-east-1.amazonaws.com"
      },
      {
        "name": "X-Amzn-Trace-Id",
        "value": "Root=1-614cc24d-5ad89a09181910c43917a888"
      },
      {
        "name": "cache-control",
        "value": "max-age=0"
      },
      {
        "name": "sec-ch-ua",
        "value": "\"Chromium\";v=\"94\", \"Google Chrome\";v=\"94\", \";Not A Brand\";v=\"99\""
      },
      {
        "name": "sec-ch-ua-mobile",
        "value": "?0"
      },
      {
        "name": "sec-ch-ua-platform",
        "value": "\"Windows\""
      },
      {
        "name": "upgrade-insecure-requests",
        "value": "1"
      },
      {
        "name": "user-agent",
        "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36"
      },
      {
        "name": "accept",
        "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
      },
      {
        "name": "sec-fetch-site",
        "value": "same-origin"
      },
      {
        "name": "sec-fetch-mode",
        "value": "navigate"
      },
      {
        "name": "sec-fetch-user",
        "value": "?1"
      },
      {
        "name": "sec-fetch-dest",
        "value": "document"
      },
      {
        "name": "referer",
        "value": "https://b34myvfw0b.gamma.execute-api.us-east-1.amazonaws.com/pen-test/pets"
      },
      {
        "name": "accept-encoding",
        "value": "gzip, deflate, br"
      },
      {
        "name": "accept-language",
        "value": "en-US,en;q=0.9"
      },
      {
        "name": "cookie",
        "value": "aws-waf-token=51c71352-41f5-4f6d-b676-c24907bdf819:EQoAZ/J+AAQAAAAA:t9wvxbw042wva7E2Y6lgud/bS6YG0CJKVAJqaRqDZ140ythKW0Zj9wKB2O8lSkYDRqf1yONcVBFo5u0eYi0tvT4rtQCXsu+KanAardW8go4QSLw4yoED59lgV7oAhGyCalAzE7ra29j+RvvZPsQyoQuDCrtoY/TvQyMTXIXzGPDC/rKBbg=="
      }
    ],
    "uri": "/pen-test/pets",
    "args": "",
    "httpVersion": "HTTP/1.1",
    "httpMethod": "GET",
    "requestId": "GINMHHUgoAMFxug="
  }
}
```

**Example CAPTCHA トークンがないウェブリクエストに対する CAPTCHA ルールのログ出力**  
次のログリストは、CAPTCHA アクションを持つルールと一致したウェブリクエストについてのものです。ウェブリクエストに CAPTCHA トークンがなく、 によってブロックされました AWS WAF。  

```
{
  "timestamp": 1632420416512,
  "formatVersion": 1,
  "webaclId": "arn:aws:wafv2:us-east-1:123456789012:regional/webacl/captcha-web-acl/585e38b5-afce-4d2a-b417-14fb08b66c67",
  "terminatingRuleId": "captcha-rule",
  "terminatingRuleType": "REGULAR",
  "action": "CAPTCHA",
  "terminatingRuleMatchDetails": [],
  "httpSourceName": "APIGW",
  "httpSourceId": "123456789012:b34myvfw0b:pen-test",
  "ruleGroupList": [],
  "rateBasedRuleList": [],
  "nonTerminatingMatchingRules": [],
  "requestHeadersInserted": null,
  "responseCodeSent": 405,
  "httpRequest": {
    "clientIp": "72.21.198.65",
    "country": "US",
    "headers": [
      {
        "name": "X-Forwarded-For",
        "value": "72.21.198.65"
      },
      {
        "name": "X-Forwarded-Proto",
        "value": "https"
      },
      {
        "name": "X-Forwarded-Port",
        "value": "443"
      },
      {
        "name": "Host",
        "value": "b34myvfw0b.gamma.execute-api.us-east-1.amazonaws.com"
      },
      {
        "name": "X-Amzn-Trace-Id",
        "value": "Root=1-614cc240-18b57ff33c10e5c016b508c5"
      },
      {
        "name": "sec-ch-ua",
        "value": "\"Chromium\";v=\"94\", \"Google Chrome\";v=\"94\", \";Not A Brand\";v=\"99\""
      },
      {
        "name": "sec-ch-ua-mobile",
        "value": "?0"
      },
      {
        "name": "sec-ch-ua-platform",
        "value": "\"Windows\""
      },
      {
        "name": "upgrade-insecure-requests",
        "value": "1"
      },
      {
        "name": "user-agent",
        "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.54 Safari/537.36"
      },
      {
        "name": "accept",
        "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
      },
      {
        "name": "sec-fetch-site",
        "value": "cross-site"
      },
      {
        "name": "sec-fetch-mode",
        "value": "navigate"
      },
      {
        "name": "sec-fetch-user",
        "value": "?1"
      },
      {
        "name": "sec-fetch-dest",
        "value": "document"
      },
      {
        "name": "accept-encoding",
        "value": "gzip, deflate, br"
      },
      {
        "name": "accept-language",
        "value": "en-US,en;q=0.9"
      }
    ],
    "uri": "/pen-test/pets",
    "args": "",
    "httpVersion": "HTTP/1.1",
    "httpMethod": "GET",
    "requestId": "GINKHEssoAMFsrg="
  },
  "captchaResponse": {
    "responseCode": 405,
    "solveTimestamp": 0,
    "failureReason": "TOKEN_MISSING"
  }
}
```