

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

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

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

# AWS WAF 지능형 위협 완화에 토큰 사용
<a name="waf-tokens"></a>

이 섹션에서는 AWS WAF 토큰이 수행하는 작업을 설명합니다.

AWS WAF 토큰은 AWS WAF 지능형 위협 완화를 통해 제공되는 향상된 보호 기능의 필수적인 부분입니다. 지문이라고도 하는 토큰은 클라이언트가 저장하는 모든 웹 요청과 함께 제공하는 단일 클라이언트 세션에 대한 정보 모음입니다. 토큰을 AWS WAF 사용하여 악의적인 클라이언트 세션을 식별하고 합법적인 세션과 분리합니다. 둘 다 단일 IP 주소에서 시작되더라도 마찬가지입니다. 토큰 사용으로 인해 합법적인 사용자에게는 무시할 만한 비용이 부과되지만 봇넷의 경우 높은 비용이 발생합니다.

AWS WAF 는 토큰을 사용하여 애플리케이션 통합 SDKs와 규칙 작업 Challenge 및에서 제공하는 브라우저 및 최종 사용자 챌린지 기능을 지원합니다CAPTCHA. 또한 토큰은 AWS WAF Bot Control 및 계정 탈취 방지 관리형 규칙 그룹의 기능을 활성화합니다.

AWS WAF 는 자동 챌린지 및 CAPTCHA 퍼즐에 성공적으로 응답하는 클라이언트에 대한 토큰을 생성, 업데이트 및 암호화합니다. 토큰이 있는 클라이언트가 웹 요청을 보내면 암호화된 토큰이 포함되어 토큰을 AWS WAF 해독하고 내용을 확인합니다.

**Topics**
+ [에서 토큰을 AWS WAF 사용하는 방법](waf-tokens-usage.md)
+ [AWS WAF 토큰 특성](waf-tokens-details.md)
+ [에서 타임스탬프 만료 및 토큰 면제 시간 설정 AWS WAF](waf-tokens-immunity-times.md)
+ [에서 토큰 도메인 및 도메인 목록 지정 AWS WAF](waf-tokens-domains.md)
+ [의 토큰 레이블 유형 AWS WAF](waf-tokens-labeling.md)
+ [유효한 AWS WAF 토큰이 없는 요청 차단](waf-tokens-block-missing-tokens.md)
+ [CloudFront 오리진인 Application Load Balancer에 필요한 구성](waf-tokens-with-alb-and-cf.md)

# 에서 토큰을 AWS WAF 사용하는 방법
<a name="waf-tokens-usage"></a>

이 섹션에서는가 토큰을 AWS WAF 사용하는 방법을 설명합니다.

AWS WAF 는 토큰을 사용하여 다음 유형의 클라이언트 세션 검증을 기록하고 확인합니다.
+ **CAPTCHA** - CAPTCHA 퍼즐은 봇을 인간 사용자와 구분하는 데 도움이 됩니다. CAPTCHA는 CAPTCHA 규칙 작업을 통해서만 실행됩니다. 퍼즐을 성공적으로 완료하면 CAPTCHA 스크립트는 토큰의 CAPTCHA 타임스탬프를 업데이트합니다. 자세한 내용은 [CAPTCHA Challenge의 및 AWS WAF](waf-captcha-and-challenge.md) 단원을 참조하십시오.
+ **챌린지** - 챌린지는 자동으로 실행되어 일반 클라이언트 세션을 봇 세션과 구분할 수 있도록 도와주고 봇의 운영 비용을 증가시킵니다. 챌린지가 성공적으로 완료되면 챌린지 스크립트는 필요한 AWS WAF 경우에서 새 토큰을 자동으로 조달한 다음 토큰의 챌린지 타임스탬프를 업데이트합니다.

  AWS WAF 는 다음과 같은 상황에서 챌린지를 실행합니다.
  + **애플리케이션 통합 SDK** - 애플리케이션 통합 SDK는 클라이언트 애플리케이션 세션 내에서 실행되며 클라이언트가 챌린지에 성공적으로 응답한 후에만 로그인 시도가 허용되도록 합니다. 자세한 내용은 [의 클라이언트 애플리케이션 통합 AWS WAF](waf-application-integration.md) 단원을 참조하십시오.
  + **Challenge 규칙 작업** – 자세한 내용은 [CAPTCHA Challenge의 및 AWS WAF](waf-captcha-and-challenge.md) 섹션을 참조하세요.
  + **CAPTCHA**— CAPTCHA 중간 광고를 실행할 때 클라이언트에 아직 토큰이 없는 경우 스크립트는 자동으로 챌린지를 먼저 실행하여 클라이언트 세션을 확인하고 토큰을 초기화합니다.

토큰은 지능형 위협 AWS 관리형 규칙 그룹의 많은 규칙에 필요합니다. 이들 규칙은 토큰을 사용하여 세션 수준에서 클라이언트 구분, 브라우저 특성 결정, 애플리케이션 웹 페이지의 사용자 상호 작용 수준 파악 등의 작업을 수행합니다. 이러한 규칙 그룹은 AWS WAF 토큰 관리를 호출하여 규칙 그룹이 검사하는 토큰 레이블 지정을 적용합니다.
+ **AWS WAF 사기 제어 계정 생성 사기 방지(ACFP)** - ACFP 규칙에는 유효한 토큰이 있는 웹 요청이 필요합니다. 규칙에 대한 자세한 내용은 [AWS WAF 사기 제어 계정 생성 사기 방지(ACFP) 규칙 그룹](aws-managed-rule-groups-acfp.md) 섹션을 참조하세요.
+ **AWS WAF 사기 제어 계정 탈취 방지(ATP)** - 대량의 오래 지속되는 클라이언트 세션을 방지하는 ATP 규칙에는 만료되지 않은 챌린지 타임스탬프가 있는 유효한 토큰이 있는 웹 요청이 필요합니다. 자세한 내용은 [AWS WAF 사기 제어 계정 탈취 방지(ATP) 규칙 그룹](aws-managed-rule-groups-atp.md) 단원을 참조하십시오.
+ **AWS WAF Bot Control** -이 규칙 그룹의 대상 규칙은 클라이언트가 유효한 토큰 없이 보낼 수 있는 웹 요청 수를 제한하고 세션 수준 모니터링 및 관리에 토큰 세션 추적을 사용합니다. 이들 규칙은 필요에 따라 Challenge 및 CAPTCHA 규칙 작업을 적용하여 토큰 획득 및 유효한 클라이언트 동작을 요구합니다. 자세한 내용은 [AWS WAF Bot Control 규칙 그룹](aws-managed-rule-groups-bot.md) 단원을 참조하십시오.

# AWS WAF 토큰 특성
<a name="waf-tokens-details"></a>

각 토큰의 특성은 다음과 같습니다.
+ 토큰은 `aws-waf-token` 이름이 지정된 쿠키에 저장됩니다.
+ 토큰은 암호화됩니다.
+ 토큰은 다음 정보가 포함된 세분화된 고정 식별자로 클라이언트 세션을 핑거프린팅합니다.
  + 자동 챌린지에 대한 클라이언트의 최근 성공 응답의 타임스탬프.
  + CAPTCHA에 대한 최종 사용자의 최근 성공 응답의 타임스탬프. 이는 보호 기능에서 CAPTCHA를 사용하는 경우에만 나타납니다.
  + 합법적인 클라이언트를 원하지 않는 트래픽으로부터 분리하는 데 도움이 될 수 있는 클라이언트 및 클라이언트 행동에 대한 추가 정보. 이 정보에는 자동화된 활동을 탐지하는 데 사용할 수 있는 다양한 클라이언트 식별자와 클라이언트 측 신호가 포함됩니다. 수집된 정보는 고유하지 않으므로 각 개인에게 매핑할 수 없습니다.
    + 모든 토큰에는 자동화 및 브라우저 설정 불일치 표시와 같은 클라이언트 브라우저 질의 데이터가 포함됩니다. 이 정보는 Challenge 작업과 클라이언트 애플리케이션 SDK에 의해 실행되는 스크립트를 통해 검색됩니다. 이러한 스크립트는 브라우저에 능동적으로 질의하고 그 결과를 토큰에 넣습니다.
    + 또한 클라이언트 애플리케이션 통합 SDK를 구현하면 토큰에 최종 사용자의 애플리케이션 페이지 상호 작용에 대해 수동적으로 수집된 정보가 포함됩니다. 상호 작용에는 마우스 이동, 키 누름 및 페이지에 있는 모든 HTML 양식과의 상호 작용이 포함됩니다. 이 정보는 AWS WAF 에서 클라이언트의 사용자 상호 작용 수준을 탐지하여 사람으로 여겨지지 않는 사용자에게 챌린지를 제시하는 데 도움이 됩니다. 클라이언트측 통합에 대한 자세한 내용은 [의 클라이언트 애플리케이션 통합 AWS WAF](waf-application-integration.md) 섹션을 참조하세요.

보안상의 이유로 AWS 는 AWS WAF 토큰의 내용에 대한 전체 설명이나 토큰 암호화 프로세스에 대한 자세한 정보를 제공하지 않습니다.

# 에서 타임스탬프 만료 및 토큰 면제 시간 설정 AWS WAF
<a name="waf-tokens-immunity-times"></a>

이 섹션에서는 챌린지 및 CAPTCHA 타임스탬프를 만료하는 방법을 설명합니다.

AWS WAF 는 챌린지 및 CAPTCHA 면제 시간을 사용하여 단일 클라이언트 세션에 챌린지 또는 CAPTCHA를 표시할 수 있는 빈도를 제어합니다. 최종 사용자가 CAPTCHA에 성공적으로 응답한 후 CAPTCHA 면제 시간에 따라 최종 사용자가 다른 CAPTCHA를 받지 않는 기간이 결정됩니다. 마찬가지로, 챌린지 면제 시간은 클라이언트 세션이 챌린지에 성공적으로 응답한 후 다시 챌린지를 받지 않는 기간을 결정합니다.

** AWS WAF 토큰 면제 시간 작동 방식**

AWS WAF 는 토큰 내의 해당 타임스탬프를 업데이트하여 챌린지 또는 CAPTCHA에 대한 성공적인 응답을 기록합니다. 가 토큰에 챌린지 또는 CAPTCHA가 있는지 AWS WAF 검사하면 현재 시간에서 타임스탬프를 뺍니다. 결과가 구성된 면제 시간보다 크면 타임스탬프가 만료됩니다.

** AWS WAF 토큰 면제 시간의 구성 가능한 측면**

보호 팩(웹 ACL)과 CAPTCHA 또는 Challenge 규칙 작업을 사용하는 모든 규칙에서 챌린지 및 CAPTCHA 면제 시간을 구성할 수 있습니다.
+ 두 면제 시간에 대한 기본 보호 팩(웹 ACL) 설정은 300초입니다.
+ CAPTCHA 또는 Challenge 작업을 사용하는 모든 규칙의 면제 시간을 지정할 수 있습니다. 규칙에 대한 면제 시간을 지정하지 않으면 보호 팩(웹 ACL)에서 설정을 상속합니다.
+ CAPTCHA 또는 Challenge 작업을 사용하는 규칙 그룹 내 규칙의 경우 규칙에 대한 면제 시간을 지정하지 않으면 규칙 그룹을 사용하는 각 보호 팩(웹 ACL)의 설정이 상속됩니다.
+ 애플리케이션 통합 SDK는 보호 팩(웹 ACL)의 챌린지 면제 시간을 사용합니다.
+ 제한 시간의 최소 챌린지 면제 시간 값은 300초입니다. 제한 시간의 최소 CAPTCHA 면제 시간 값은 60초입니다. 두 면제 시간의 최대값은 259,200초, 즉 3일입니다.

보호 팩(웹 ACL) 및 규칙 수준 면제 시간 설정을 사용하여 CAPTCHA 작업, Challenge 또는 SDK 챌린지 관리 동작을 조정할 수 있습니다. 예를 들어, 면제 시간이 짧고 매우 민감한 데이터에 대한 액세스를 제어하는 규칙을 구성한 다음 다른 규칙 및 SDK가 상속할 더 높은 면제 시간을 보호 팩(웹 ACL)에서 설정할 수 있습니다.

특히 CAPTCHA의 경우 퍼즐은 고객의 웹 사이트 경험을 저하시킬 수 있으므로 CAPTCHA 면제 시간을 조정하면 원하는 보호 기능을 제공하면서 고객 경험에 미치는 영향을 완화하는 데 도움이 될 수 있습니다.

Challenge 및 CAPTCHA 규칙 작업의 사용 면제 시간 조정에 대한 자세한 내용은 [CAPTCHA 및 Challenge 작업 사용 모범 사례](waf-captcha-and-challenge-best-practices.md) 섹션을 참조하세요.

# AWS WAF 토큰 면제 시간을 설정할 위치
<a name="waf-tokens-immunity-times-setting"></a>

보호 팩(웹 ACL)과 Challenge 및 CAPTCHA 규칙 작업을 사용하는 규칙에서 면제 시간을 설정할 수 있습니다.

보호 팩(웹 ACL)및 관련 규칙의 관리에 대한 일반적인 정보는 [에서 웹 트래픽 지표 보기 AWS WAF](web-acl-working-with.md) 섹션을 참조하세요.

**보호 팩(웹 ACL) 면제 시간을 설정할 위치**
+ **콘솔** - 보호 팩(웹 ACL)을 편집할 때 **규칙** 탭의 **보호 팩(웹 ACL) CAPTCHA 구성** 및 **보호 팩(웹 ACL) 챌린지 구성** 창에서 설정을 편집하고 변경합니다. 콘솔에서는 보호 팩(웹 ACL)을 생성한 후에만 보호 팩(웹 ACL) CAPTCHA 및 챌린지 면제 시간을 구성할 수 있습니다.
+ **콘솔 외부** - 보호 팩(웹 ACL) 데이터 유형에는 사용자가 구성하여 보호 팩(웹 ACL)의 생성 및 업데이트 작업에 제공할 수 있는 CAPTCHA 및 챌린지 구성 매개변수가 있습니다.

**규칙 면제 시간을 설정할 위치**
+ **콘솔** - 규칙을 만들거나 편집하고 CAPTCHA 또는 Challenge 작업을 지정할 때 규칙 면제 시간 설정을 수정할 수 있습니다.
+ **콘솔 외부** - 규칙 데이터 유형에는 규칙을 정의할 때 구성할 수 있는 CAPTCHA 및 챌린지 구성 매개변수가 있습니다.

# 에서 토큰 도메인 및 도메인 목록 지정 AWS WAF
<a name="waf-tokens-domains"></a>

이 섹션에서는가 토큰에서 AWS WAF 사용하고 토큰에서 수락하는 도메인을 구성하는 방법을 설명합니다.

는 클라이언트에 대한 토큰을 AWS WAF 생성할 때 토큰 도메인으로 구성합니다. AWS WAF 는 웹 요청에서 토큰을 검사할 때 해당 도메인이 보호 팩(웹 ACL)에 유효한 것으로 간주되는 도메인과 일치하지 않는 경우 토큰을 유효하지 않은 것으로 간주하여 거부합니다.

기본적으로는 도메인 설정이 보호 팩(웹 ACL)과 연결된 리소스의 호스트 도메인과 정확히 일치하는 토큰 AWS WAF 만 허용합니다. 웹 요청의 `Host` 헤더 값입니다. 브라우저의 avaScript `window.location.hostname` 속성과 사용자의 주소 표시줄에 표시되는 주소에서 이 도메인을 찾을 수 있습니다.

다음 섹션에 설명된 바와 같이 보호 팩(웹 ACL) 구성에서 허용 가능한 토큰 도메인을 지정할 수도 있습니다. 이 경우는 호스트 헤더와 정확히 일치하는 항목과 토큰 도메인 목록의 도메인과 일치하는 항목을 모두 AWS WAF 수락합니다.

도메인을 설정하고 보호 팩(웹 ACL)에서 토큰 AWS WAF 을 평가할 때 사용할의 토큰 도메인을 지정할 수 있습니다. `gov.au`와 같은 공개 접미사는 도메인으로 지정할 수 없습니다. 사용할 수 없는 도메인의 경우 [공개 접미사](https://publicsuffix.org/list/) 목록의 [https://publicsuffix.org/list/public_suffix_list.dat](https://publicsuffix.org/list/public_suffix_list.dat) 목록을 참조하세요.

## AWS WAF 보호 팩(웹 ACL) 토큰 도메인 목록 구성
<a name="waf-tokens-domain-lists"></a>

수락하려는 추가 도메인과 함께 토큰 도메인 목록을 제공하여 여러 보호된 리소스에서 토큰 AWS WAF 을 공유하도록 보호 팩(웹 ACL)을 구성할 수 있습니다. 토큰 도메인 목록에서는 여전히 리소스의 호스트 도메인을 AWS WAF 수락합니다. 또한 접두사가 붙은 하위 도메인을 포함하여 토큰 도메인 목록의 모든 도메인을 허용합니다.

예를 들어 토큰 도메인 목록의 도메인 사양 `example.com`은 `example.com`(`http://example.com/`), `api.example.com`(`http://api.example.com/`) 및 `www.example.com`(`http://www.example.com/`)와 일치합니다. `example.api.com`(`http://example.api.com/`) 또는 `apiexample.com`(`http://apiexample.com/`)과는 일치하지 않습니다.

보호 팩(웹 ACL)을 만들거나 편집할 때 보호 팩(웹 ACL)에서 토큰 도메인 목록을 구성할 수 있습니다. 보호 팩(웹 ACL)의 관리에 대한 일반적인 정보는 [에서 웹 트래픽 지표 보기 AWS WAF](web-acl-working-with.md) 섹션을 참조하세요.

## AWS WAF 토큰 도메인 설정
<a name="waf-tokens-domain-in-token"></a>

AWS WAF 는 애플리케이션 통합 SDKs 및 Challenge 및 CAPTCHA 규칙 작업에서 실행되는 챌린지 스크립트의 요청에 따라 토큰을 생성합니다.

토큰에를 AWS WAF 설정하는 도메인은 토큰을 요청하는 챌린지 스크립트 유형과 사용자가 제공하는 추가 토큰 도메인 구성에 따라 결정됩니다. AWS WAF 는 토큰의 도메인을 구성에서 찾을 수 있는 가장 짧은 가장 일반적인 설정으로 설정합니다.
+ **JavaScript SDK** - 토큰 도메인 사양을 사용하여 JavaScript SDK를 구성할 수 있으며, 이 사양에는 하나 이상의 도메인이 포함될 수 있습니다. 구성하는 도메인은 보호된 호스트 도메인 및 보호 팩(웹 ACL)의 토큰 도메인 목록에 따라 AWS WAF 가 수락할 도메인이어야 합니다.

  가 클라이언트에 토큰을 AWS WAF 발급하면 토큰 도메인을 호스트 도메인과 일치하고 구성된 목록의 호스트 도메인과 도메인 중에서 가장 짧은 도메인으로 설정합니다. 예를 들어 호스트 도메인이 `api.example.com` 이고 토큰 도메인 목록에가 있는 경우는 호스트 도메인과 일치하고 더 짧기 때문에 `example.com` 토큰에를 `example.com` AWS WAF 사용합니다. JavaScript API 구성에 토큰 도메인 목록을 제공하지 않으면는 도메인을 보호된 리소스의 호스트 도메인으로 AWS WAF 설정합니다.

  자세한 내용은 [토큰에 사용할 도메인 제공](waf-js-challenge-api-set-token-domain.md) 단원을 참조하십시오.
+ **모바일 SDK** - 애플리케이션 코드에서 토큰 도메인 속성을 사용하여 모바일 SDK를 구성해야 합니다. 이 속성은 AWS WAF 에서 보호된 호스트 도메인과 보호 팩(웹 ACL)의 토큰 도메인 목록에 기반하여 허용할 도메인이어야 합니다.

  가 클라이언트에 토큰을 AWS WAF 발행하면이 속성을 토큰 도메인으로 사용합니다. AWS WAF 는 모바일 SDK 클라이언트에 대해 발행하는 토큰에서 호스트 도메인을 사용하지 않습니다.

  자세한 내용은 [AWS WAF 모바일 SDK 사양](waf-mobile-sdk-specification.md)의 `WAFConfiguration` `domainName` 설정을 참조하세요.
+ **Challenge 작업** - 보호 팩(웹 ACL)에 토큰 도메인 목록을 지정하는 경우는 호스트 도메인과 목록의 도메인 중에서 토큰 도메인을 호스트 도메인과 일치하고 가장 짧은 도메인으로 AWS WAF 설정합니다. 예를 들어 호스트 도메인이 `api.example.com` 이고 토큰 도메인 목록에가 있는 경우는 호스트 도메인과 일치하고 더 짧기 때문에 `example.com` 토큰에를 `example.com` AWS WAF 사용합니다. 보호 팩(웹 ACL)에 토큰 도메인 목록을 제공하지 않으면가 도메인을 보호된 리소스의 호스트 도메인으로 AWS WAF 설정합니다.

# 의 토큰 레이블 유형 AWS WAF
<a name="waf-tokens-labeling"></a>

이 섹션에서는 AWS WAF 토큰 관리가 웹 요청에 추가하는 레이블을 설명합니다. 레이블에 대한 일반적인 내용은 [의 웹 요청 레이블 지정 AWS WAF](waf-labels.md) 섹션을 참조하세요.

 AWS WAF 봇 또는 사기 제어 관리형 규칙 그룹을 사용하는 경우 규칙 그룹은 AWS WAF 토큰 관리를 사용하여 웹 요청 토큰을 검사하고 요청에 토큰 레이블을 적용합니다. 관리형 규칙 그룹에 대한 자세한 설명은 [AWS WAF 사기 제어 계정 생성 사기 방지(ACFP) 규칙 그룹](aws-managed-rule-groups-acfp.md), [AWS WAF 사기 제어 계정 탈취 방지(ATP) 규칙 그룹](aws-managed-rule-groups-atp.md) 및 [AWS WAF Bot Control 규칙 그룹](aws-managed-rule-groups-bot.md)을(를) 참조하십시오.

**참고**  
AWS WAF 는 이러한 지능형 위협 완화 관리형 규칙 그룹 중 하나를 사용하는 경우에만 토큰 레이블을 적용합니다.

토큰 관리는 웹 요청에 다음 레이블을 추가할 수 있습니다.

**클라이언트 세션 레이블**  
레이블에는 AWS WAF 토큰 관리가 클라이언트 세션을 식별하는 데 사용하는 고유 식별자가 `awswaf:managed:token:id:identifier` 포함되어 있습니다. 클라이언트가 새 토큰을 획득하는 경우(예: 사용하고 있던 토큰을 폐기한 후) 식별자가 변경될 수 있습니다.

**참고**  
AWS WAF 는이 레이블에 대한 Amazon CloudWatch 지표를 보고하지 않습니다.

**브라우저 지문 레이블**  
레이블에는 AWS WAF 토큰 관리가 다양한 클라이언트 브라우저 신호에서 계산하는 강력한 브라우저 지문 식별자가 `awswaf:managed:token:fingerprint:fingerprint-identifier` 포함되어 있습니다. 이 식별자는 여러 토큰 획득 시도에서 동일하게 유지됩니다. 지문 식별자는 단일 클라이언트에 고유하지 않습니다.

**참고**  
AWS WAF 는이 레이블에 대한 Amazon CloudWatch 지표를 보고하지 않습니다.

**토큰 상태 레이블: 레이블 네임스페이스 접두사**  
토큰 상태 레이블은 토큰 및 챌린지 상태와 토큰에 포함된 CAPTCHA 정보를 보고합니다.

각 토큰 상태 레이블은 다음 네임스페이스 접두사 중 하나로 시작합니다.
+ `awswaf:managed:token:` – 토큰의 일반 상태를 보고하고 토큰의 챌린지 정보 상태를 보고하는 데 사용됩니다.
+ `awswaf:managed:captcha:` – 토큰의 CAPTCHA 정보 상태를 보고하는 데 사용됩니다.

**토큰 상태 레이블: 레이블 이름**  
접두사 뒤에 오는 라벨의 나머지 부분은 자세한 토큰 상태 정보를 제공합니다.
+ `accepted` – 요청 토큰이 존재하며 다음을 포함합니다.
  + 유효한 챌린지 또는 CAPTCHA 솔루션.
  + 만료되지 않은 챌린지 또는 CAPTCHA 타임스탬프.
  + 보호 팩(웹 ACL)에 대해 유효한 도메인 사양입니다.

  예: 레이블 `awswaf:managed:token:accepted`은(는) 웹 요청의 토큰에 유효한 인증 확인 솔루션, 만료되지 않은 챌린지 타임스탬프 및 유효한 도메인이 있음을 나타냅니다.
+ `rejected` – 요청 토큰이 존재하지만 수락 기준을 충족하지 않습니다.

  거부된 레이블과 함께 토큰 관리는 사용자 지정 레이블 네임스페이스 및 이름을 추가하여 이유를 나타냅니다.
  + `rejected:not_solved` – 토큰에 챌린지 또는 CAPTCHA 솔루션이 없습니다.
  + `rejected:expired` – 보호 팩(웹 ACL)의 구성된 토큰 면역 시간에 따라 토큰의 챌린지 또는 CAPTCHA 타임스탬프가 만료되었습니다.
  + `rejected:domain_mismatch` – 토큰의 도메인이 보호 팩(웹 ACL)의 토큰 도메인 구성과 일치하지 않습니다.
  + `rejected:invalid` - 표시된 토큰을 읽을 AWS WAF 수 없습니다.

  예: 레이블 `awswaf:managed:captcha:rejected` 및 `awswaf:managed:captcha:rejected:expired`가 함께 표시되는 것은 토큰 내 CAPTCHA 타임스탬프가 보호 팩(웹 ACL)에 구성된 CAPTCHA 토큰 면역 시간을 초과했기 때문에 요청에 유효한 CAPTCHA 풀이가 포함되지 않았음을 의미합니다.
+ `absent` – 요청에 토큰이 없거나 토큰 관리자가 토큰을 읽을 수 없습니다.

  예: 레이블 `awswaf:managed:captcha:absent`는 요청에 토큰이 없음을 나타냅니다.

# 유효한 AWS WAF 토큰이 없는 요청 차단
<a name="waf-tokens-block-missing-tokens"></a>

이 섹션에서는 AWS WAF 모바일 SDK를 사용할 때 토큰이 누락된 로그인 요청을 차단하는 방법을 설명합니다.

지능형 위협 AWS 관리형 규칙 그룹 `AWSManagedRulesACFPRuleSet`, `AWSManagedRulesATPRuleSet`및 `AWSManagedRulesBotControlRuleSet`를 사용하는 경우 규칙 그룹은 AWS WAF 토큰 관리를 호출하여 웹 요청 토큰의 상태를 평가하고 그에 따라 요청에 레이블을 지정합니다.

**참고**  
토큰 레이블 지정은 이러한 관리형 규칙 그룹 중 하나를 사용하여 평가하는 웹 요청에만 적용됩니다.

토큰 관리에서 적용하는 레이블 지정에 대한 내용은 앞의 [의 토큰 레이블 유형 AWS WAF](waf-tokens-labeling.md) 섹션을 참조하세요.

그러면 지능형 위협 완화 관리형 규칙 그룹이 다음과 같이 토큰 요구 사항을 처리합니다.
+ `AWSManagedRulesACFPRuleSet` `AllRequests` 규칙은 모든 요청에 대해 Challenge 작업을 실행하여 `accepted` 토큰 레이블이 없는 요청을 효과적으로 차단하도록 구성됩니다.
+ `AWSManagedRulesATPRuleSet`는 `rejected` 토큰 레이블이 있는 요청을 차단하지만 `absent` 토큰 레이블이 있는 요청은 차단하지 않습니다.
+ `AWSManagedRulesBotControlRuleSet` 대상 보호 수준에서는 클라이언트가 `accepted` 토큰 레이블 없이 요청을 5회 전송하고 나면 클라이언트에 챌린지를 제시합니다. 이 수준은 유효한 토큰이 없는 개별 요청을 차단하지는 않습니다. 이 규칙 그룹의 공통 보호 수준은 토큰 요구 사항을 관리하지 않습니다.

지능형 위협 규칙 그룹에 대한 자세한 내용은 [AWS WAF 사기 제어 계정 생성 사기 방지(ACFP) 규칙 그룹](aws-managed-rule-groups-acfp.md), [AWS WAF 사기 제어 계정 탈취 방지(ATP) 규칙 그룹](aws-managed-rule-groups-atp.md) 및 [AWS WAF Bot Control 규칙 그룹](aws-managed-rule-groups-bot.md) 섹션을 참조하세요.

**Bot Control 또는 ATP 관리형 규칙 그룹을 사용할 때 토큰이 누락된 요청을 차단하려면**  
봇 컨트롤 및 ATP 규칙 그룹을 사용하면 유효한 토큰이 없는 요청에 대해 규칙 그룹 평가를 종료하고 보호 팩(웹 ACL)에서 계속 평가할 수 있습니다.

토큰이 없거나 토큰이 거부된 모든 요청을 차단하려면 관리형 규칙 그룹 바로 뒤에 실행되도록 규칙을 추가하여 해당 규칙 그룹이 처리하지 않는 요청이 캡처 및 차단되도록 합니다.

다음은 ATP 관리형 규칙 그룹을 사용하는 보호 팩(웹 ACL)의 예제 JSON 목록입니다. 보호 팩(웹 ACL)에는 `awswaf:managed:token:absent` 레이블을 캡처하고 처리하는 규칙이 추가되었습니다. 이 규칙은 평가 범위를 로그인 엔드포인트로 이동하는 웹 요청으로 좁혀서 ATP 규칙 그룹의 범위와 일치시킵니다. 추가된 규칙은 굵게 표시됩니다.

```
{
  "Name": "exampleWebACL",
  "Id": "55555555-6666-7777-8888-999999999999",
  "ARN": "arn:aws:wafv2:us-east-1:111111111111:regional/webacl/exampleWebACL/55555555-4444-3333-2222-111111111111",
  "DefaultAction": {
    "Allow": {}
  },
  "Description": "",
  "Rules": [
    {
      "Name": "AWS-AWSManagedRulesATPRuleSet",
      "Priority": 1,
      "Statement": {
        "ManagedRuleGroupStatement": {
          "VendorName": "AWS",
          "Name": "AWSManagedRulesATPRuleSet",
          "ManagedRuleGroupConfigs": [
            {
              "AWSManagedRulesATPRuleSet": {
                "LoginPath": "/web/login",
                "RequestInspection": {
                  "PayloadType": "JSON",
                  "UsernameField": {
                    "Identifier": "/form/username"
                  },
                  "PasswordField": {
                    "Identifier": "/form/password"
                  }
                },
                "ResponseInspection": {
                  "StatusCode": {
                    "SuccessCodes": [
                      200
                    ],
                    "FailureCodes": [
                      401,
                      403,
                      500
                    ]
                  }
                }
              }  
            }
          ]
        }
      },
      "OverrideAction": {
        "None": {}
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "AWS-AWSManagedRulesATPRuleSet"
      }
    },
    {
      "Name": "RequireTokenForLogins",
      "Priority": 2,
      "Statement": {
        "AndStatement": {
          "Statements": [
            {
              "Statement": {
                "LabelMatchStatement": {
                  "Scope": "LABEL",
                  "Key": "awswaf:managed:token:absent"
                }
              }
            },
            {
              "ByteMatchStatement": {
                "SearchString": "/web/login",
                "FieldToMatch": {
                  "UriPath": {}
                },
                "TextTransformations": [
                  {
                    "Priority": 0,
                    "Type": "NONE"
                 }
                ],
                "PositionalConstraint": "STARTS_WITH"
              }
            },
            {
              "ByteMatchStatement": {
                "SearchString": "POST",
                "FieldToMatch": {
                  "Method": {}
                },
                "TextTransformations": [
                  {
                    "Priority": 0,
                    "Type": "NONE"
                  }
                ],
                "PositionalConstraint": "EXACTLY"
              }
            }
          ]
        }
      },
      "Action": {
        "Block": {}
      },
      "VisibilityConfig": {
        "SampledRequestsEnabled": true,
        "CloudWatchMetricsEnabled": true,
        "MetricName": "RequireTokenForLogins"
      } 
    }
  ],
  "VisibilityConfig": {
    "SampledRequestsEnabled": true,
    "CloudWatchMetricsEnabled": true,
    "MetricName": "exampleWebACL"
  },
  "Capacity": 51,
  "ManagedByFirewallManager": false,
  "RetrofittedByFirewallManager": false,
  "LabelNamespace": "awswaf:111111111111:webacl:exampleWebACL:"
}
```

# CloudFront 오리진인 Application Load Balancer에 필요한 구성
<a name="waf-tokens-with-alb-and-cf"></a>

보호 팩(웹 ACL)을 Application Load Balancer에 연결하고 Application Load Balancer를 CloudFront 배포의 오리진으로 배포하는 경우 이 섹션을 참조하세요.

이 아키텍처를 사용하는 경우 토큰 정보가 올바르게 처리되도록 하려면 다음과 같은 추가 구성을 제공해야 합니다.
+ `aws-waf-token` 쿠키를 Application Load Balancer로 전달하도록 CloudFront를 구성합니다. 기본적으로 CloudFront는 오리진에 웹 요청을 전달하기 전에 웹 요청의 쿠키를 제거합니다. 토큰 쿠키를 웹 요청과 함께 유지하려면 토큰 쿠키만 포함하거나 모든 쿠키를 포함하도록 CloudFront 캐시 동작을 구성합니다. 그 방법에 대해 알아보려면 *Amazon CloudFront 개발자 안내서*의 [쿠키 기반의 콘텐츠 캐싱](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Cookies.html)을 참조하세요.
+ CloudFront 배포의 도메인을 유효한 토큰 도메인으로 인식 AWS WAF 하도록를 구성합니다. 기본적으로 CloudFront는 `Host` 헤더를 Application Load Balancer 오리진으로 설정하고 이를 보호된 리소스의 도메인으로 AWS WAF 사용합니다. 하지만 클라이언트 브라우저에서는 CloudFront 배포를 호스트 도메인으로 간주하며, 클라이언트용으로 생성된 토큰은 CloudFront 도메인을 토큰 도메인으로 사용합니다. 추가 구성이 없으면가 토큰 도메인에 대해 보호된 리소스 도메인을 AWS WAF 확인하면 불일치가 발생합니다. 이 문제를 해결하려면 CloudFront 배포 도메인 이름을 보호 팩(웹 ACL) 구성의 토큰 도메인 목록에 추가하십시오. 이를 위한 자세한 방법은 [AWS WAF 보호 팩(웹 ACL) 토큰 도메인 목록 구성](waf-tokens-domains.md#waf-tokens-domain-lists) 섹션을 참조하세요.