

**에 대한 새로운 콘솔 환경 소개 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>

이 섹션에서는 논리적 규칙 문이 무엇이고 어떻게 작동하는지를 설명합니다.

논리적 규칙 문을 사용하여 다른 문을 결합하거나 결과를 무효화할 수 있습니다. 모든 논리적 규칙 문은 적어도 하나의 중첩 문을 사용합니다.

규칙 문 결과를 논리적으로 결합하거나 무효화하려면 해당 문을 논리적 규칙 문 아래에 중첩해야 합니다.

논리적 규칙 문을 중첩할 수 있습니다. 이를 다른 논리적 규칙 문 안에 중첩하여 범위 축소 문에서 사용할 수 있습니다. 범위 축소 문에 대한 자세한 내용은 [에서 범위 축소 문 사용 AWS WAF](waf-rule-scope-down-statements.md) 섹션을 참조하세요.

**참고**  
콘솔의 시각적 편집기는 여러 요구 사항에 대해 작동하는 한 수준의 규칙 문 중첩을 지원합니다. 더 많은 수준을 중첩하려면 콘솔에서 규칙의 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 문이 일치하도록 모든 중첩된 문이 일치해야 합니다. 여기에는 적어도 두 개의 중첩 문이 필요합니다.

## 규칙 문 특성
<a name="and-rule-statement-characteristics"></a>

**중첩 가능** – 이러한 문 유형을 중첩할 수 있습니다.

**WCU** – 중첩된 문에 따라 다릅니다.

## 이 규칙 문을 찾을 수 있는 위치
<a name="and-rule-statement-where-to-find"></a>
+ 콘솔의 **규칙 빌더** – **요청의 경우**에서 **모든 문과 일치(AND)**를 선택한 다음, 중첩된 문을 입력합니다.
+ **API** – [AndStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_AndStatement.html)

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

다음 목록은 AND 및 NOT 논리 규칙 문을 사용하여 SQL 명령어 삽입 공격 문에 대한 일치 항목에서 거짓 긍정을 제거하는 방법을 보여줍니다. 이 예제의 경우 단일 바이트 일치 문을 작성하여 거짓 긍정을 초래하는 요청을 일치시킬 수 있다고 가정해 보겠습니다.

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 문과 일치하지 않아야 하며, 그 반대의 경우도 마찬가지입니다. 이를 위해서는 하나의 중첩된 문이 필요합니다.

예를 들어 특정 국가가 출처가 아닌 요청을 차단하려면 작업을 차단으로 설정하여 NOT 문을 생성하고 국가를 지정하는 지역 일치 문을 중첩합니다.

## 규칙 문 특성
<a name="not-rule-statement-characteristics"></a>

**중첩 가능** – 이러한 문 유형을 중첩할 수 있습니다.

**WCU** – 중첩된 문에 따라 다릅니다.

## 이 규칙 문을 찾을 수 있는 위치
<a name="not-rule-statement-where-to-find"></a>
+ 콘솔의 **규칙 빌더** – **요청의 경우**에서 **문과 일치하지 않음(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 문과 일치해야 합니다. 여기에는 적어도 두 개의 중첩 문이 필요합니다.

예를 들어 특정 국가에서 나온 요청이나 특정 쿼리 문자열이 포함된 요청을 차단하려는 경우에는 OR 문을 생성하고 해당 국가에 대한 지역 일치 문과 쿼리 문자열에 대한 문자열 일치 문을 중첩할 수 있습니다.

대신 특정 국가에서 나오지 *않거나* 특정 쿼리 문자열이 포함된 요청을 차단하려면 이전 OR 문을 수정하여 NOT 문 내부에서 지역 일치 문을 한 수준 낮게 중첩합니다. 콘솔은 한 수준의 중첩만 지원하므로 이러한 수준의 중첩을 위해서는 JSON 서식을 사용해야 합니다.

## 규칙 문 특성
<a name="or-rule-statement-characteristics"></a>

**중첩 가능** – 이러한 문 유형을 중첩할 수 있습니다.

**WCU** – 중첩된 문에 따라 다릅니다.

## 이 규칙 문을 찾을 수 있는 위치
<a name="or-rule-statement-where-to-find"></a>
+ 콘솔의 **규칙 빌더** – **요청의 경우**에서 **최소 하나의 문과 일치(OR)**를 선택한 다음, 중첩된 문을 입력합니다.
+ **API** – [OrStatement](https://docs.aws.amazon.com/waf/latest/APIReference/API_OrStatement.html)

**예제**  
다음 목록은 OR를 사용하여 다른 두 명령문을 결합하는 방법을 보여줍니다. 중첩된 명령문 중 하나라도 일치하면 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"
  }
}
```