

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

# AWS WAF 웹 ACL을 사용자 풀과 연결
<a name="user-pool-waf"></a>

AWS WAF 는 웹 애플리케이션 방화벽입니다. AWS WAF 웹 ACL(웹 액세스 제어 목록)을 사용하면 클래식 호스팅 UI, 관리형 로그인 및 Amazon Cognito API 서비스 엔드포인트에 대한 원치 않는 요청으로부터 사용자 풀을 보호할 수 있습니다. 웹 ACL을 사용하면 사용자 풀이 응답하는 모든 HTTPS 웹 요청을 세부적으로 제어할 수 있습니다. AWS WAF 웹 ACL에 대한 자세한 내용은 *AWS WAF 개발자 안내서*의 [웹 액세스 제어 목록(웹 ACL) 관리 및 사용](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl.html)을 참조하세요.

사용자 풀과 연결된 AWS WAF 웹 ACL이 있는 경우 Amazon Cognito는 선택한 비기밀 헤더 및 사용자의 요청 내용을에 전달합니다 AWS WAF.는 요청 내용을 AWS WAF 검사하고 웹 ACL에 지정한 규칙과 비교하여 Amazon Cognito에 응답을 반환합니다.

## AWS WAF 웹 ACLs 및 Amazon Cognito에 대해 알아야 할 사항
<a name="user-pool-waf-things-to-know"></a>
+ 사용자 이름, 암호, 전화번호 또는 이메일 주소와 같은 사용자 풀 요청의 개인 식별 정보(PII)와 일치하도록 웹 ACL 규칙을 구성할 수 없습니다. 이 데이터는 사용할 수 없습니다 AWS WAF. 대신 IP 주소, 브라우저 에이전트 및 요청된 API 작업과 같은 헤더, 경로 및 본문의 세션 데이터와 일치하도록 웹 ACL 규칙을 구성합니다.
+ 웹 ACL 규칙 조건은 사용자의 **첫 번째** 요청에 대한 사용자 지정 블록 응답만 사용자 대화형 관리형 로그인 페이지에 반환할 수 있습니다. 후속 연결이 사용자 지정 블록 응답 조건과 일치하면 사용자 지정 상태 코드, 헤더 및 리디렉션 응답이 반환되지만 기본 블록 메시지가 반환됩니다.
+ 에서 차단한 요청은 모든 요청 유형에 대한 요청 속도 할당량에 포함되지 AWS WAF 않습니다. AWS WAF 핸들러는 API 수준 제한 핸들러보다 먼저 호출됩니다.
+ 웹 ACL을 생성할 때 웹 ACL이 완전히 전파되어 Amazon Cognito에서 사용할 수 있게 되기까지 약간의 시간이 걸립니다. 전파 시간은 몇 초에서 몇 분 사이일 수 있습니다. 웹 ACL이 완전히 전파되기 전에 연결을 시도[https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html#API_AssociateWebACL_Errors](https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html#API_AssociateWebACL_Errors)하면가를 AWS WAF 반환합니다.
+ 각 사용자 풀에 하나의 웹 ACL을 연결할 수 있습니다.
+ 요청으로 인해 AWS WAF 가 검사할 수 있는 한계보다 더 큰 페이로드가 발생할 수 있습니다. 가 Amazon Cognito의 [과대 요청을 처리하는 방법을 구성하는 방법은 개발자 안내서의 과대 요청 구성 요소 처리를](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-oversize-handling.html) 참조하세요. *AWS WAF * AWS WAF 
+  AWS WAF [Fraud Control 계정 탈취 방지(ATP)](https://docs.aws.amazon.com/waf/latest/developerguide/waf-atp.html)를 사용하는 웹 ACL을 Amazon Cognito 사용자 풀과 연결할 수 없습니다. ATP 기능은 `AWS-AWSManagedRulesATPRuleSet` 관리형 규칙 그룹에 있습니다. 웹 ACL을 사용자 풀과 연결하기 전에 해당 관리형 규칙 그룹을 사용하지 않는지 확인합니다.
+ 사용자 풀과 연결된 AWS WAF 웹 ACL이 있고 웹 ACL의 규칙에 CAPTCHA가 표시되는 경우 관리형 로그인 TOTP 등록에서 복구할 수 없는 오류가 발생할 수 있습니다. CAPTCHA 작업이 있고 관리형 로그인 TOTP에 영향을 주지 않는 규칙을 생성하려면 [관리형 로그인 TOTP MFA를 위한 AWS WAF 웹 ACL 구성](user-pool-settings-mfa-totp.md#totp-waf) 섹션을 참조하세요.

AWS WAF 는 다음 엔드포인트에 대한 요청을 검사합니다.

**관리형 로그인 및 클래식 호스팅 UI**  
[사용자 풀 엔드포인트 및 관리형 로그인 참조](cognito-userpools-server-contract-reference.md)의 모든 엔드포인트에 대한 요청입니다.

**퍼블릭 API 작업**  
 AWS 자격 증명을 사용하여 권한을 부여하지 않는 앱의 Amazon Cognito API에 대한 요청입니다. 여기에는 [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html), [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) 및 [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html)와 같은 API 작업이 포함됩니다. 범위가 인 API 작업은 AWS 자격 증명으로 인증 AWS WAF 할 필요가 없습니다. 인증되지 않았거나 세션 문자열 또는 액세스 토큰으로 권한이 부여되었습니다. 자세한 내용은 [권한 부여 모델별로 그룹화된 API 작업 목록](authentication-flows-public-server-side.md#user-pool-apis-auth-unauth) 단원을 참조하십시오.

**Count**(개수), **Allow**(허용), **Block**(차단) 또는 규칙과 일치하는 요청에 대한 응답으로 **CAPTCHA**를 표시하는 규칙 작업을 사용하여 웹 ACL에서 규칙을 구성할 수 있습니다. 자세한 내용은 *AWS WAF 개발자 안내서*의 [AWS WAF 규칙](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rules.html)을 참조하세요. 규칙 작업에 따라 Amazon Cognito가 사용자에게 반환하는 응답을 사용자 지정할 수 있습니다.

**중요**  
오류 응답을 사용자 지정하는 옵션은 API 요청을 수행하는 방식에 따라 달라집니다.  
관리형 로그인 요청의 오류 코드와 응답 본문을 사용자 지정할 수 있습니다. 관리형 로그인에서는 사용자가 해결할 수 있는 CAPTCHA만 제시할 수 있습니다.
Amazon Cognito[ 사용자 풀 API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html)로 요청하는 경우 **차단** 응답을 수신하는 요청의 응답 본문을 사용자 지정할 수 있습니다. 400\~499 범위의 사용자 지정 오류 코드를 지정할 수도 있습니다.
 AWS Command Line Interface (AWS CLI) 및 AWS SDKs 반환합니다. `ForbiddenException` **** **** 

## 웹 ACL을 사용자 풀과 연결
<a name="user-pool-waf-setting-up"></a>

사용자 풀에서 웹 ACL을 사용하려면 AWS Identity and Access Management (IAM) 보안 주체에 다음과 같은 Amazon Cognito 및 AWS WAF 권한이 있어야 합니다. AWS WAF 권한에 대한 자세한 내용은 *AWS WAF 개발자 안내서*의 [AWS WAF API 권한을](https://docs.aws.amazon.com/waf/latest/developerguide/waf-api-permissions-ref.html) 참조하세요.

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

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Sid": "AllowWebACLUserPool",
			"Effect": "Allow",
			"Action": [
				"cognito-idp:ListResourcesForWebACL",
				"cognito-idp:GetWebACLForResource",
				"cognito-idp:AssociateWebACL"
			],
			"Resource": [
				"arn:aws:cognito-idp:*:{{123456789012}}:userpool/*"
			]
		},
		{
			"Sid": "AllowWebACLUserPoolWAFv2",
			"Effect": "Allow",
			"Action": [
				"wafv2:ListResourcesForWebACL",
				"wafv2:AssociateWebACL",
				"wafv2:DisassociateWebACL",
				"wafv2:GetWebACLForResource"
			],
			"Resource": "arn:aws:wafv2:*:{{123456789012}}:*/webacl/*/*"
		},
		{
			"Sid": "DisassociateWebACL1",
			"Effect": "Allow",
			"Action": "wafv2:DisassociateWebACL",
			"Resource": "*"
		},
		{
			"Sid": "DisassociateWebACL2",
			"Effect": "Allow",
			"Action": [
				"cognito-idp:DisassociateWebACL"
			],
			"Resource": [
				"arn:aws:cognito-idp:*:{{123456789012}}:userpool/*"
			]
		}
	]
}
```

------

IAM 권한을 부여해야 하지만 나열된 작업은 권한 전용이며 [API 작업](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html)에 해당하지 않습니다.

**사용자 풀 AWS WAF 에 대해를 활성화하고 웹 ACL을 연결하려면**

1. [Amazon Cognito 콘솔](https://console.aws.amazon.com/cognito/home)에 로그인합니다.

1. 탐색 창에서 [**사용자 풀(User Pools)**]을 선택한 다음 편집할 사용자 풀을 선택합니다.

1. **보안** 섹션에서 **AWS WAF** 탭을 선택합니다.

1. **편집**을 선택합니다.

1. **사용자 풀 AWS WAF 과 함께 사용을** 선택합니다.  
![사용자 풀과 AWS WAF 함께 사용을 선택한 AWS WAF 대화 상자의 스크린샷입니다.](http://docs.aws.amazon.com/ko_kr/cognito/latest/developerguide/images/cup-WAF-console.png)

1. 이미 생성한 **AWS WAF 웹 ACL**을 선택하거나 **에서 웹 ACL 생성을 선택하여의 새 세션에 웹 ACL AWS WAF**을 생성합니다 AWS Management Console. AWS WAF 

1. **변경 사항 저장**을 선택합니다.

웹 ACL을 AWS Command Line Interface 또는 SDK의 사용자 풀과 프로그래밍 방식으로 연결하려면 AWS WAF API의 [AssociateWebACL](https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html)을 사용합니다. Amazon Cognito에는 웹 ACL을 연결하는 별도의 API 작업이 없습니다.

## AWS WAF 웹 ACLs 테스트 및 로깅
<a name="user-pool-waf-evaluating-and-logging"></a>

웹 ACL에서 규칙 작업을 **개수**로 설정하면가 규칙과 일치하는 요청 수에 요청을 AWS WAF 추가합니다. 사용자 풀로 웹 ACL을 테스트하려면 규칙 작업을 **Count**(개수)로 설정하고 각 규칙과 일치하는 요청 볼륨을 고려합니다. 예를 들어 **Block**(차단) 작업으로 설정하려는 규칙이 일반 사용자 트래픽으로 판단되는 많은 수의 요청과 일치하는 경우 규칙을 재구성해야 할 수 있습니다. 자세한 내용은 *AWS WAF 개발자 안내서*의 [AWS WAF 보호 기능 테스트 및 조정](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-testing.html)을 참조하세요.

Amazon CloudWatch Logs 로그 그룹, Amazon Simple Storage Service(Amazon S3) 버킷 또는 Amazon Data Firehose에 요청 헤더를 로깅 AWS WAF 하도록를 구성할 수도 있습니다. `x-amzn-cognito-client-id` 및 `x-amzn-cognito-operation-name`을 통해 사용자 풀 API로 수행한 Amazon Cognito 요청을 식별할 수 있습니다. 관리형 로그인 요청에는 `x-amzn-cognito-client-id` 헤더만 포함됩니다. 자세한 내용은 *AWS WAF 개발자 안내서*의 [웹 ACL 트래픽 로깅](https://docs.aws.amazon.com/waf/latest/developerguide/logging.html)을 참조하세요.

AWS WAF 웹 ACLs은 모든 사용자 풀 [기능 플랜](cognito-sign-in-feature-plans.md)에서 사용할 수 있습니다. AWS WAF 의 보안 기능은 Amazon Cognito 위협 방지를 보완합니다. 사용자 풀에서 두 기능을 모두 활성화할 수 있습니다. AWS WAF 는 사용자 풀 요청 검사에 대해 별도로 요금을 청구합니다. 자세한 내용은 [AWS WAF 요금](https://aws.amazon.com/waf/pricing)을 참조하세요.

로깅 AWS WAF 요청 데이터에는 로그를 대상으로 하는 서비스의 추가 요금이 부과됩니다. 자세한 내용은 *AWS WAF 개발자 안내서*의 [웹 ACL 트래픽 정보 로깅 요금](https://docs.aws.amazon.com/waf/latest/developerguide/logging.html#logging-pricing)을 참조하세요.