

**에 대한 새로운 콘솔 환경 소개 AWS WAF**

이제 업데이트된 환경을 사용하여 콘솔의 모든 위치에서 AWS WAF 기능에 액세스할 수 있습니다. 자세한 내용은 [콘솔 작업을 참조하세요](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html).

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 의 사용자 지정 웹 요청 및 응답 AWS WAF
<a name="waf-custom-request-response"></a>

이 섹션에서는 AWS WAF 규칙 작업 및 기본 보호 팩(웹 ACL) 작업에 사용자 지정 웹 요청 및 응답 처리 동작을 추가하는 방법을 설명합니다. 연결된 작업이 적용될 때마다 사용자 지정 설정이 적용됩니다.

다음과 같은 방법으로 웹 요청 및 응답을 사용자 지정할 수 있습니다.
+ Allow, Count, CAPTCHA 및 Challenge 작업을 사용하여 웹 요청에 사용자 지정 헤더를 삽입할 수 있습니다. AWS WAF 에서 웹 요청을 보호된 리소스에 전달할 때 해당 요청에 원래 요청 전체와 삽입한 사용자 지정 헤더가 포함됩니다. CAPTCHA 및 Challenge 작업의 경우 AWS WAF 는 요청이 CAPTCHA 또는 챌린지 토큰 검사를 통과하는 경우에만 사용자 지정을 적용합니다.
+ Block 작업을 사용하면 응답 코드, 헤더, 본문이 포함된 완전한 사용자 지정 응답을 정의할 수 있습니다. 보호된 리소스는에서 제공하는 사용자 지정 응답을 사용하여 요청에 응답합니다 AWS WAF. 사용자 지정 응답은 `403 (Forbidden)`의 기본 Block 작업 응답을 대체합니다.

**사용자 지정할 수 있는 작업 설정**  
다음 작업 설정을 정의할 때 사용자 지정 요청 또는 응답을 지정할 수 있습니다.
+ 규칙 작업. 자세한 내용은 [에서 규칙 작업 사용 AWS WAF](waf-rule-action.md) 단원을 참조하세요.
+ 보호 팩(웹 ACL)에 대한 기본 작업입니다. 자세한 내용은 [에서 보호 팩(웹 ACL) 기본 작업 설정 AWS WAF](web-acl-default-action.md) 단원을 참조하세요.

**사용자 지정할 수 없는 작업 설정**  
보호 팩(웹 ACL)에서 사용하는 규칙 그룹에 대한 재정의 작업에서는 사용자 지정 요청 처리를 지정할 수 *없습니다*. [에서 규칙 및 규칙 그룹과 함께 보호 팩(웹 ACLs) 사용 AWS WAF](web-acl-processing.md)을(를) 참조하세요. [에서 관리형 규칙 그룹 문 사용 AWS WAF](waf-rule-statement-type-managed-rule-group.md) 및 [에서 규칙 그룹 문 사용 AWS WAF](waf-rule-statement-type-rule-group.md)도 참조하세요.

**업데이트 중 일시적인 불일치**  
보호 팩(웹 ACL) 또는 기타 AWS WAF 리소스를 생성하거나 변경하면 리소스가 저장된 모든 영역에 변경 사항이 전파되는 데 약간의 시간이 걸립니다. 전파 시간은 몇 초\$1몇 분이 걸릴 수 있습니다.

다음은 변경 전파 중에 표시될 수 있는 일시적 불일치의 예입니다.
+ 보호 팩(웹 ACL)을 생성한 후 이를 리소스에 연결하려고 하면 보호 팩(웹 ACL)을 사용할 수 없다는 예외가 발생할 수 있습니다.
+ 보호 팩(웹 ACL)에 규칙 그룹을 추가한 후 새 규칙 그룹 규칙이 보호 팩(웹 ACL)이 사용되는 한 영역에는 적용되고 다른 영역에서는 적용되지 않을 수 있습니다.
+ 규칙 작업 설정을 변경한 후 일부 위치에서 이전 작업이 표시되고 다른 위치에서는 새 작업이 표시될 수 있습니다.
+ 차단 규칙에서 사용되는 IP 세트에 IP 주소를 추가한 후 새 주소가 한 영역에서는 차단되는데 다른 영역에서 계속 허용될 수도 있습니다.

**사용자 지정 요청 및 응답 사용 제한**  
AWS WAF 는 사용자 지정 요청 및 응답 사용에 대한 최대 설정을 정의합니다. 예: 보호 팩(웹 ACL) 또는 규칙 그룹당 최대 요청 헤더 수, 단일 사용자 지정 응답 정의의 최대 사용자 지정 헤더 수. 자세한 내용은 [AWS WAF 할당량](limits.md) 섹션을 참조하세요.

**Topics**
+ [

# 차단되지 않은 작업에 대해 사용자 지정 요청 헤더 삽입
](customizing-the-incoming-request.md)
+ [

# Block 작업에 대한 사용자 지정 응답 전송
](customizing-the-response-for-blocked-requests.md)
+ [

# 사용자 지정 응답에 지원되는 상태 코드
](customizing-the-response-status-codes.md)

# 차단되지 않은 작업에 대해 사용자 지정 요청 헤더 삽입
<a name="customizing-the-incoming-request"></a>

이 섹션에서는 규칙 작업이 요청을 차단하지 않을 때에 사용자 지정 헤더를 원래 HTTP 요청에 AWS WAF 삽입하도록 지시하는 방법을 설명합니다. 이 옵션을 사용하면 요청에만 추가할 수 있습니다. 원본 요청의 어떤 부분도 수정하거나 교체할 수 없습니다. 사용자 지정 헤더 삽입의 사용은 예를 들면, 삽입된 헤더에 따라 요청을 다르게 처리하도록 다운스트림 애플리케이션에 신호를 보내는 경우나 분석을 위해 요청에 플래그를 지정하는 경우입니다.

**중요**  
이 옵션은 Allow, Count, CAPTCHA 및 Challenge 규칙 작업과 Allow로 설정된 보호 팩(웹 ACL) 기본 작업에 적용됩니다. 규칙 작업에 대한 자세한 내용은 [에서 규칙 작업 사용 AWS WAF](waf-rule-action.md) 섹션을 참조하세요. 기본 보호 팩(웹 ACL) 작업에 대한 자세한 내용은 [에서 보호 팩(웹 ACL) 기본 작업 설정 AWS WAF](web-acl-default-action.md) 섹션을 참조하세요.

## 사용자 지정 요청 헤더 이름 사용 시 고려 사항
<a name="using-custom-request-header-names"></a>

**요청 헤더에 추가된 접두사**  
AWS WAF 는 요청에 이미 있는 헤더와의 혼동을 방지하기 `x-amzn-waf-`위해 로 삽입하는 모든 요청 헤더를 접두사로 지정합니다. 예를 들어 헤더 이름를 지정하면가 헤더를 `sample` AWS WAF 삽입합니다`x-amzn-waf-sample`.

**중요**  
보안 관행으로 헤더가 이미 `x-amzn-waf-`로 시작하는 요청을 차단하는 문자열 일치 규칙을 추가할 수 있습니다. 이렇게 하면 사용자 지정 요청 헤더를 처리할 때가 AWS WAF 삽입한 `x-amzn-waf-` 접두사 문자열을 모방하는 비AWS WAF 소스의 요청이 차단됩니다.

다음 예제에서는 `x-amzn-waf-` 접두사가 삽입되지 않은 트래픽을 차단하도록 구성된 문자열 일치 규칙을 보여줍니다 AWS WAF.

```
    "Rules": [
        {
          "Name": "CustomHeader",
          "Priority": 0,
          "Statement": {
            "ByteMatchStatement": {
              "SearchString": " x-amzn-waf-",
              "FieldToMatch": {
                "Headers": {
                  "MatchPattern": {
                    "All": {}
                  },
                  "MatchScope": "KEY",
                  "OversizeHandling": "MATCH"
                }
              },
              "TextTransformations": [
                {
                  "Priority": 0,
                  "Type": "NONE"
                }
              ],
              "PositionalConstraint": "STARTS_WITH"
            }
          },
          "Action": {
            "Block": {}
          },
          "VisibilityConfig": {
            "SampledRequestsEnabled": true,
            "CloudWatchMetricsEnabled": true,
            "MetricName": "CustomHeader"
          }
        }
      ]
```

문자열 일치 규칙 사용에 대한 자세한 내용은 [문자열 일치 규칙 문](waf-rule-statement-type-string-match.md) 섹션을 참조하세요.

**이름이 같은 헤더**  
요청에 삽입 중인 것과 동일한 이름의 헤더가 이미 있는 경우 AWS WAF 는 헤더를 AWS WAF 덮어씁니다. 따라서 이름이 동일한 여러 규칙에서 헤더를 정의하는 경우 요청을 검사하고 일치하는 항목을 찾는 마지막 규칙에 헤더가 추가되고 이전 규칙에는 헤더가 추가되지 않습니다.

## 비종료 규칙 작업이 포함된 사용자 지정 헤더 사용
<a name="custom-request-header-non-terminating-rule-actions"></a>

Allow 작업과 달리 Count 작업은 보호 팩(웹 ACL)의 나머지 규칙을 사용하여 웹 요청을 AWS WAF 처리하는 것을 중지하지 않습니다. 마찬가지로 CAPTCHA 및에서 요청 토큰이 유효한 것으로 Challenge 확인되면 이러한 작업은 웹 요청 AWS WAF 처리를 중지하지 않습니다. 따라서 이러한 작업 중 하나와 함께 규칙을 사용하여 사용자 지정 헤더를 삽입하면 후속 규칙에서도 사용자 지정 헤더가 삽입될 수 있습니다. 규칙 작업 동작에 대한 자세한 내용은 [에서 규칙 작업 사용 AWS WAF](waf-rule-action.md) 섹션을 참조하세요.

예를 들어 규칙의 우선 순위가 다음과 같다고 가정해 보겠습니다.

1. Count 작업과 `RuleAHeader` 이름의 사용자 지정 헤더가 있는 RuleA.

1. Allow 작업과 `RuleBHeader` 이름의 사용자 지정 헤더가 있는 RuleB.

요청이 RuleA 및 RuleB와 모두 일치하는 경우 `x-amzn-waf-RuleBHeader`는 헤더 `x-amzn-waf-RuleAHeader` 및를 AWS WAF 삽입한 다음 해당 요청을 보호된 리소스로 전달합니다.

AWS WAF 는 요청 검사가 완료되면 사용자 지정 헤더를 웹 요청에 삽입합니다. 따라서 Count로 설정된 작업을 포함하는 규칙과 함께 사용자 지정 요청 처리를 사용하는 경우 추가하는 사용자 지정 헤더는 후속 규칙에서 검사되지 않습니다.

## 사용자 지정 요청 처리 예제
<a name="example-custom-request-handling"></a>

규칙의 작업 또는 보호 팩(웹 ACL)의 기본 작업에 대한 사용자 지정 요청 처리를 정의합니다. 다음 목록은 보호 팩(웹 ACL)의 기본 작업에 추가된 사용자 지정 처리를 위한 JSON을 보여줍니다.

```
{
 "Name": "SampleWebACL",
 "Scope": "REGIONAL",
 "DefaultAction": {
  "Allow": {
   "CustomRequestHandling": {
    "InsertHeaders": [
     {
      "Name": "fruit",
      "Value": "watermelon"
     },
     {
      "Name": "pie",
      "Value": "apple"
     }
    ]
   }
  }
 },
 "Description": "Sample protection pack (web ACL) with custom request handling configured for default action.",
 "Rules": [],
 "VisibilityConfig": {
  "SampledRequestsEnabled": true,
  "CloudWatchMetricsEnabled": true,
  "MetricName": "SampleWebACL"
 }
}
```

# Block 작업에 대한 사용자 지정 응답 전송
<a name="customizing-the-response-for-blocked-requests"></a>

이 섹션에서는에 로 설정된 규칙 작업 또는 보호 팩(웹 ACL) 기본 작업에 대한 사용자 지정 HTTP 응답을 클라이언트로 다시 AWS WAF 보내도록 지시하는 방법을 설명합니다Block. 규칙 작업에 대한 자세한 내용은 [에서 규칙 작업 사용 AWS WAF](waf-rule-action.md) 섹션을 참조하세요. 기본 보호 팩(웹 ACL) 작업에 대한 자세한 내용은 [에서 보호 팩(웹 ACL) 기본 작업 설정 AWS WAF](web-acl-default-action.md) 섹션을 참조하세요.

Block 작업에 대한 사용자 지정 응답 처리를 정의할 때는 상태 코드, 헤더 및 응답 본문을 정의합니다. 사용할 수 있는 상태 코드 목록은 다음 섹션을 AWS WAF참조하세요[사용자 지정 응답에 지원되는 상태 코드](customizing-the-response-status-codes.md).

**사용 사례**  
사용자 지정 응답의 사용 예는 다음과 같습니다.
+ 기본 상태 코드가 아닌 상태 코드를 다시 클라이언트로 보내는 경우
+ 클라이언트에 사용자 지정 응답을 다시 보냅니다. `content-type`이라는 이름을 제외하고 모든 헤더 이름을 지정할 수 있습니다.
+ 정적 오류 페이지를 클라이언트로 다시 보내는 경우
+ 클라이언트를 다른 URL로 리디렉션하는 경우. 이렇게 하려면 `3xx` 리디렉션 상태 코드(예: `301 (Moved Permanently)` 또는`302 (Found)`) 중 하나를 지정한 다음 새 URL을 포함하는 `Location` 이름이 지정된 새 헤더를 지정합니다.

**보호된 리소스에서 정의한 응답과의 상호 작용**  
작업에 지정한 AWS WAF Block 사용자 지정 응답은 보호된 리소스에서 정의한 모든 응답 사양보다 우선합니다.

로 보호하는 AWS 리소스의 호스트 서비스는 웹 요청에 대한 사용자 지정 응답 처리를 허용할 AWS WAF 수 있습니다. 예는 다음과 같습니다.
+ Amazon CloudFront를 사용하면 상태 코드를 기반으로 오류 페이지를 사용자 지정할 수 있습니다. 자세한 내용을 알아보려면 *Amazon CloudFront 개발자 안내서*의 [사용자 지정 오류 응답 생성](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/GeneratingCustomErrorResponses.html) 섹션을 참조하세요.
+ Amazon API Gateway를 사용하면 게이트웨이에 대한 응답 및 상태 코드를 정의할 수 있습니다. 자세한 내용을 알아보려면 *Amazon API Gateway 개발자 안내서*의 [API Gatewaydml 게이트웨이 응답](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-gatewayResponse-definition.html) 섹션을 참조하세요.

사용자 AWS WAF 지정 응답 설정을 보호된 AWS 리소스의 사용자 지정 응답 설정과 결합할 수 없습니다. 개별 웹 요청에 대한 응답 사양은 전적으로 AWS WAF 에서 또는 전적으로 보호된 리소스에서 가져옵니다.

가 AWS WAF 차단하는 웹 요청의 경우 다음은 우선 순위입니다.

1. **AWS WAF 사용자 지정 응답** - 작업에 사용자 지정 응답이 활성화된 경우 AWS WAF Block 보호된 리소스는 구성된 사용자 지정 응답을 클라이언트로 다시 보냅니다. 보호된 리소스 자체에 정의했을 수 있는 응답 설정은 아무런 영향을 미치지 않습니다.

1. **보호된 리소스에 정의된 사용자 지정 응답** - 그렇지 않고 보호된 리소스에 사용자 지정 응답 설정이 지정된 경우 보호된 리소스는 이러한 설정을 사용하여 클라이언트에 응답합니다.

1. **AWS WAF 기본 Block 응답** - 그렇지 않으면 보호된 리소스가 AWS WAF 기본 응답 로 클라이언트에 Block 응답합니다`403 (Forbidden)`.

가 AWS WAF 허용하는 웹 요청의 경우 보호된 리소스의 구성에 따라 클라이언트로 다시 보내는 응답이 결정됩니다. 허용된 요청에 AWS WAF 대해에서 응답 설정을 구성할 수 없습니다. 허용된 요청에 AWS WAF 대해에서 구성할 수 있는 유일한 사용자 지정은 요청을 보호된 리소스로 전달하기 전에 원래 요청에 사용자 지정 헤더를 삽입하는 것입니다. 이 내용은 이전 섹션 [차단되지 않은 작업에 대해 사용자 지정 요청 헤더 삽입](customizing-the-incoming-request.md)에 설명되어 있습니다.

**사용자 지정 응답 헤더**  
`content-type`이라는 이름을 제외하고 모든 헤더 이름을 지정할 수 있습니다.

**사용자 지정 응답 본문**  
사용자 지정 응답을 사용하려는 보호 팩(웹 ACL) 또는 규칙 그룹의 컨텍스트 내에서 사용자 지정 응답의 본문을 정의합니다. 사용자 지정 응답 본문을 정의한 후에는 이 본문을 생성했던 보호 팩(웹 ACL) 또는 규칙 그룹 어디에서든 해당 본문을 참조로 사용할 수 있습니다. 개별 Block 작업 설정에서 사용할 사용자 지정 본문을 참조하고 사용자 지정 응답의 상태 코드와 헤더를 정의합니다.

콘솔에서 사용자 지정 응답을 생성할 때 이미 정의한 응답 본문 중에서 선택하거나 새 본문을 작성할 수 있습니다. 콘솔 외부에서는 보호 팩(웹 ACL) 또는 규칙 그룹 수준에서 사용자 지정 응답 본문을 정의한 다음 보호 팩(웹 ACL) 또는 규칙 그룹 내의 작업 설정에서 해당 본문을 참조합니다. 이 항목은 다음 섹션의 JSON 예제에 나와 있습니다.

**사용자 지정 응답 예제**  
다음 예제는 사용자 지정 응답 설정이 있는 규칙 그룹의 JSON 목록입니다. 사용자 지정 응답 본문은 전체 규칙 그룹에 대해 정의된 후 규칙 작업에서 키를 사용하여 참조됩니다.

```
{
 "ARN": "test_rulegroup_arn",
 "Capacity": 1,
 
 "CustomResponseBodies": {
  "CustomResponseBodyKey1": {
   "Content": "This is a plain text response body.",
   "ContentType": "TEXT_PLAIN"
  }
 },
 
 "Description": "This is a test rule group.",
 "Id": "test_rulegroup_id",
 "Name": "TestRuleGroup",
 
 "Rules": [
  {
   "Action": {
    "Block": {
     "CustomResponse": {
      "CustomResponseBodyKey": "CustomResponseBodyKey1",
      "ResponseCode": 404,
      "ResponseHeaders": [
       {
        "Name": "BlockActionHeader1Name",
        "Value": "BlockActionHeader1Value"
       }
      ]
     }
    }
   },
   "Name": "GeoMatchRule",
   "Priority": 1,
   "Statement": {
    "GeoMatchStatement": {
     "CountryCodes": [
      "US"
     ]
    }
   },
   "VisibilityConfig": {
    "CloudWatchMetricsEnabled": true,
    "MetricName": "TestRuleGroupReferenceMetric",
    "SampledRequestsEnabled": true
   }
  }
 ],
 "VisibilityConfig": {
  "CloudWatchMetricsEnabled": true,
  "MetricName": "TestRuleGroupMetric",
  "SampledRequestsEnabled": true
 }
}
```

# 사용자 지정 응답에 지원되는 상태 코드
<a name="customizing-the-response-status-codes"></a>

이 섹션에서는 사용자 지정 응답에 사용할 수 있는 상태 코드가 나열됩니다. HTTP 상태 코드에 대한 자세한 내용은 IETF(Internet Engineering Task Force)의 [상태 코드](https://www.rfc-editor.org/rfc/rfc9110.html#name-status-codes) 및 Wikipedia의 [HTTP 상태 코드 목록](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes)을 참조하세요.

다음은가 사용자 지정 응답에 대해 AWS WAF 지원하는 HTTP 상태 코드입니다.
+ `2xx Successful`
  + `200` – `OK`
  + `201` – `Created`
  + `202` – `Accepted` 
  + `204` – `No Content` 
  + `206` – `Partial Content`
+ `3xx Redirection `
  + `300` – `Multiple Choices`
  + `301` – `Moved Permanently`
  + `302` – `Found`
  + `303` –`See Other`
  + `304` – `Not Modified`
  + `307` – `Temporary Redirect`
  + `308` – `Permanent Redirect`
+ `4xx Client Error `
  + `400` – `Bad Request`
  + `401` – `Unauthorized`
  + `403` – `Forbidden`
  + `404` – `Not Found`
  + `405` – `Method Not Allowed`
  + `408` – `Request Timeout`
  + `409` – `Conflict`
  + `411` – `Length Required`
  + `412` – `Precondition Failed`
  + `413` – `Request Entity Too Large`
  + `414` – `Request-URI Too Long`
  + `415` – `Unsupported Media Type`
  + `416` – `Requested Range Not Satisfiable`
  + `421` – `Misdirected Request`
  + `429` – `Too Many Requests`
+ `5xx Server Error`
  + `500` – `Internal Server Error`
  + `501` – `Not Implemented`
  + `502` – `Bad Gateway`
  + `503` – `Service Unavailable`
  + `504` – `Gateway Timeout`
  + `505` – `HTTP Version Not Supported`