

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

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

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

# での論理ルールステートメントの使用 AWS WAF
<a name="waf-rule-statements-logical"></a>

このセクションでは、ロジックルールステートメントとは何か、またその仕組みについて説明します。

論理ルールステートメントを使用して他のステートメントを組み合わせたり、結果を否定したりします。すべての論理ルールステートメントに、1 つ以上のネストされたステートメントが必要です。

ルールステートメントの結果を論理的に結合または否定するには、ステートメントを論理ルールステートメントの下にネストします。

論理ルールステートメントはネスト可能です。他の論理ルールステートメント内にネストして、スコープダウンステートメントで使用できます。スコープダウンステートメントの詳細については、「[でのスコープダウンステートメントの使用 AWS WAF](waf-rule-scope-down-statements.md)」を参照してください。

**注記**  
コンソールのビジュアルエディタは、1 レベルのルールステートメントのネストをサポートしており、多くのニーズに対応しています。より多くのレベルをネストするには、コンソールでルールの JSON 表現を編集するか、API を使用します。

この表では、論理ルールステートメントについて説明し、それぞれの保護パック (ウェブ ACL) キャパシティーユニット (WCU) 使用量を計算するためのガイドラインを提供します。WCU の詳細については、「[のウェブ ACL キャパシティユニット (WCUs) AWS WAF](aws-waf-capacity-units.md)」を参照してください。


| 論理ステートメント  | 説明 | WCU | 
| --- | --- | --- | 
| [AND のロジック](waf-rule-statement-type-and.md) | ネストされたステートメントを AND ロジックと組み合わせます。 | ネストされたステートメントに基づく | 
|  [NOT のロジック](waf-rule-statement-type-not.md)  |  ネストされたステートメントの結果を否定します。  |  ネストされたステートメントに基づく  | 
| [OR のロジック](waf-rule-statement-type-or.md) | ネストされたステートメントを OR ロジックと組み合わせます。 | ネストされたステートメントに基づく | 

# AND ルールステートメント
<a name="waf-rule-statement-type-and"></a>

AND ルールステートメントは、ネストされたステートメントを論理 AND 演算と組み合わせるため、AND ステートメントが一致するには、ネストされたステートメントがすべて一致する必要があります。これには、1 つ以上のネストされたステートメントが必要です。

## ルールステートメントの特性
<a name="and-rule-statement-characteristics"></a>

**ネスト可能** - このステートメントタイプはネスト可能です。

**WCU** - ネストされたステートメントに応じて異なります。

## このルールステートメントの場所
<a name="and-rule-statement-where-to-find"></a>
+ コンソールの**ルールビルダー** - **[If a request]** (リクエストの状態) で **[matches all the statements (AND)]** (すべてのステートメントに一致する場合 (AND)) を選択してから、ネストされたステートメントに入力します。
+ **API** – [AndStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_AndStatement.html)

## 例
<a name="and-rule-statement-examples"></a>

次のリストは、AND および NOT 論理ルールステートメントを使用して、SQL インジェクション攻撃ステートメントの一致から誤検知を排除する方法を示しています。この例では、誤検知につながるリクエストと一致する 1 バイトの一致ステートメントを記述できるとします。

AND ステートメントは、バイト一致ステートメントと一致せず、SQL インジェクション攻撃ステートメントと一致するリクエストと一致します。

```
{
      "Name": "SQLiExcludeFalsePositives",
      "Priority": 0,
      "Statement": {
        "AndStatement": {
          "Statements": [
            {
              "NotStatement": {
                "Statement": {
                  "ByteMatchStatement": {
                    "SearchString": "string identifying a false positive",
                    "FieldToMatch": {
                      "Body": {
                        "OversizeHandling": "MATCH"
                      }
                    },
                    "TextTransformations": [
                      {
                        "Priority": 0,
                        "Type": "NONE"
                      }
                    ],
                    "PositionalConstraint": "CONTAINS"
                  }
                }
              }
            },
            {
              "SqliMatchStatement": {
                "FieldToMatch": {
                  "Body": {
                    "OversizeHandling": "MATCH"
                  }
                },
                "TextTransformations": [
                  {
                    "Priority": 0,
                    "Type": "NONE"
                  }
                ]
              }
            }
          ]
        }
      },
      "Action": {
        "Block": {}
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "SQLiExcludeFalsePositives"
      }
    }
```

コンソールルールビジュアルエディタを使用して、非論理ステートメントまたは NOT ステートメントを OR または AND ステートメントの下にネストできます。NOT ステートメントのネストは、前の例に示されています。

コンソールルールビジュアルエディタを使用すると、ほとんどのネスト可能なステートメントを、前の例に示したような論理ルールステートメントの下にネストできます。ビジュアルエディタを使用して OR または AND ステートメントをネストすることはできません。このタイプのネストを設定するには、JSON でルールステートメントを指定する必要があります。例えば、次の JSON ルールリストには、AND ステートメント内にネストされた OR ステートメントが含まれています。

```
{
  "Name": "match_rule",
  "Priority": 0,
  "Statement": {
    "AndStatement": {
      "Statements": [
        {
          "LabelMatchStatement": {
            "Scope": "LABEL",
            "Key": "awswaf:managed:aws:bot-control:bot:category:monitoring"
          }
        },
        {
          "NotStatement": {
            "Statement": {
              "LabelMatchStatement": {
                "Scope": "LABEL",
                "Key": "awswaf:managed:aws:bot-control:bot:name:pingdom"
              }
            }
          }
        },
        {
          "OrStatement": {
            "Statements": [
              {
                "GeoMatchStatement": {
                  "CountryCodes": [
                    "JM",
                    "JP"
                  ]
                }
              },
              {
                "ByteMatchStatement": {
                  "SearchString": "JCountryString",
                  "FieldToMatch": {
                    "Body": {}
                  },
                  "TextTransformations": [
                    {
                      "Priority": 0,
                      "Type": "NONE"
                    }
                  ],
                  "PositionalConstraint": "CONTAINS"
                }
              }
            ]
          }
        }
      ]
    }
  },
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "match_rule"
  }
}
```

# NOT ルールステートメント
<a name="waf-rule-statement-type-not"></a>

NOT ルールステートメントは、単一のネストされたステートメントの結果を論理的に否定するため、NOT ステートメントが一致するには、ネストされたステートメントが一致してはならず、その逆も同様です。これには、ネストされたステートメントが 1 つ必要です。

例えば、特定の国を送信元としないリクエストをブロックする場合は、アクションをブロックに設定した NOT ステートメントを作成し、国を指定する地理的一致ステートメントをネストします。

## ルールステートメントの特性
<a name="not-rule-statement-characteristics"></a>

**ネスト可能** - このステートメントタイプはネスト可能です。

**WCU** - ネストされたステートメントに応じて異なります。

## このルールステートメントの場所
<a name="not-rule-statement-where-to-find"></a>
+ コンソールの**ルールビルダー** - **[If a request]** (リクエストの状態) で **[doesn't match the statement (NOT)]** (すべてのステートメントに一致しない場合 (NOT)) を選択してから、ネストされたステートメントに入力します。
+ **API** – 「[NotStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_NotStatement.html)」

# OR ルールステートメント
<a name="waf-rule-statement-type-or"></a>

OR ルールステートメントは、ネストされたステートメントを OR ロジックと組み合わせるため、OR ステートメントが一致するには、ネストされたステートメントのいずれか 1 つが一致する必要があります。これには、1 つ以上のネストされたステートメントが必要です。

例えば、特定の国から送信されたリクエストや特定のクエリ文字列を含むリクエストをブロックする場合は、OR ステートメントを作成し、その国の地理的照合ステートメントとクエリ文字列の文字列照合ステートメントをネストします。

代わりに、特定の国から送信されて*いない*リクエストや特定のクエリ文字列を含むリクエストをブロックする場合は、前述の OR ステートメントを変更して、NOT ステートメント内の 1 レベル下に地理的照合ステートメントをネストします。コンソールでは 1 レベルのネストしかサポートされないため、このレベルのネストでは JSON 形式を使用する必要があります。

## ルールステートメントの特性
<a name="or-rule-statement-characteristics"></a>

**ネスト可能** - このステートメントタイプはネスト可能です。

**WCU** - ネストされたステートメントに応じて異なります。

## このルールステートメントの場所
<a name="or-rule-statement-where-to-find"></a>
+ コンソールの**ルールビルダー** - **[If a request]** (リクエストの状態) で **[matches at least one of the statements (OR)]** (1 つ以上のステートメントに一致する場合 (OR)) を選択してから、ネストされたステートメントに入力します。
+ **API** – 「[OrStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_OrStatement.html)」

**例**  
次のリストは、OR を使用して他の 2 つのステートメントを結合する方法を示しています。ネストされたステートメントのいずれかが一致する場合、OR ステートメントは一致します。

```
{
  "Name": "neitherOfTwo",
  "Priority": 1,
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "neitherOfTwo"
  },
  "Statement": {
    "OrStatement": {
      "Statements": [
        {
          "GeoMatchStatement": {
            "CountryCodes": [
              "CA"
            ]
          }
        },
        {
          "IPSetReferenceStatement": {
            "ARN": "arn:aws:wafv2:us-east-1:111111111111:regional/ipset/test-ip-set-22222222/33333333-4444-5555-6666-777777777777"
          }
        }
      ]
    }
  }
}
```

コンソールルールビジュアルエディタを使用すると、ネスト可能なステートメントのほとんどを論理ルールステートメントの下にネストできますが、ビジュアルエディタを使用して OR または AND ステートメントをネストすることはできません。このタイプのネストを設定するには、JSON でルールステートメントを指定する必要があります。例えば、次の JSON ルールリストには、AND ステートメント内にネストされた OR ステートメントが含まれています。

```
{
  "Name": "match_rule",
  "Priority": 0,
  "Statement": {
    "AndStatement": {
      "Statements": [
        {
          "LabelMatchStatement": {
            "Scope": "LABEL",
            "Key": "awswaf:managed:aws:bot-control:bot:category:monitoring"
          }
        },
        {
          "NotStatement": {
            "Statement": {
              "LabelMatchStatement": {
                "Scope": "LABEL",
                "Key": "awswaf:managed:aws:bot-control:bot:name:pingdom"
              }
            }
          }
        },
        {
          "OrStatement": {
            "Statements": [
              {
                "GeoMatchStatement": {
                  "CountryCodes": [
                    "JM",
                    "JP"
                  ]
                }
              },
              {
                "ByteMatchStatement": {
                  "SearchString": "JCountryString",
                  "FieldToMatch": {
                    "Body": {}
                  },
                  "TextTransformations": [
                    {
                      "Priority": 0,
                      "Type": "NONE"
                    }
                  ],
                  "PositionalConstraint": "CONTAINS"
                }
              }
            ]
          }
        }
      ]
    }
  },
  "Action": {
    "Block": {}
  },
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "match_rule"
  }
}
```