

AWS App Runner 는 더 이상 신규 고객에게 공개되지 않습니다. 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세한 내용은 [AWS App Runner 가용성 변경](https://docs.aws.amazon.com/apprunner/latest/dg/apprunner-availability-change.html)을 참조하세요.

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

# AWS WAF 웹 ACL을 서비스와 연결
<a name="waf"></a>

AWS WAF 는 App Runner 서비스를 보호하는 데 사용할 수 있는 웹 애플리케이션 방화벽입니다. AWS WAF 웹 액세스 제어 목록(웹 ACLs)을 사용하면 일반적인 웹 악용 및 원치 않는 봇으로부터 App Runner 서비스 엔드포인트를 보호할 수 있습니다.

웹 ACL을 사용하면 App Runner 서비스에 대한 모든 수신 웹 요청을 세밀하게 제어할 수 있습니다. 웹 ACL에서 웹 트래픽을 허용, 차단 또는 모니터링하는 규칙을 정의하여 승인되고 합법적인 요청만 웹 애플리케이션 및 APIs에 도달하도록 할 수 있습니다. 특정 비즈니스 및 보안 요구 사항에 따라 웹 ACL 규칙을 사용자 지정할 수 있습니다. 인프라 보안 및 네트워크 ACLs 적용 모범 사례에 대한 자세한 내용은 *Amazon VPC 사용 설명서*의 [네트워크 트래픽 제어를](https://docs.aws.amazon.com/vpc/latest/userguide/infrastructure-security.html#control-network-traffic) 참조하세요.

**중요**  
WAF 웹 ACLs과 연결된 App Runner 프라이빗 서비스에 대한 소스 IP 규칙은 *IP 기반 규칙을 준수하지 않습니다*. 이는 현재 요청 소스 IP 데이터를 WAF와 연결된 App Runner 프라이빗 서비스로 전달하는 것을 지원하지 않기 때문입니다. App Runner 애플리케이션에 소스 IP/CIDR 수신 트래픽 제어 규칙이 필요한 경우 WAF 웹 ACLs 대신 [프라이빗 엔드포인트에 대한 보안 그룹 규칙을](network-pl-manage.md) 사용해야 합니다.

## 수신 웹 요청 흐름
<a name="waf.flow"></a>

 AWS WAF 웹 ACL이 App Runner 서비스와 연결되면 수신 웹 요청은 다음 프로세스를 거칩니다.

1. App Runner는 오리진 요청의 내용을에 전달합니다 AWS WAF.

1. AWS WAF 는 요청을 검사하고 해당 내용을 웹 ACL에서 지정한 규칙과 비교합니다.

1. 검사를 기반으로 App Runner에 `allow` 또는 `block` 응답을 AWS WAF 반환합니다.
   + `allow` 응답이 반환되면 App Runner는 요청을 애플리케이션에 전달합니다.
   + `block` 응답이 반환되면 App Runner는 요청이 웹 애플리케이션에 도달하지 못하도록 차단합니다. 의 `block` 응답을 애플리케이션 AWS WAF 으로 전달합니다.
**참고**  
 기본적으로 App Runner는 응답이 반환되지 않는 경우 요청을 차단합니다 AWS WAF.

 AWS WAF 웹 ACLs에 대한 자세한 내용은 *AWS WAF 개발자 안내서*의 [웹 액세스 제어 목록(웹 ACLs)](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl.html)을 참조하세요.

**참고**  
표준 AWS WAF 요금을 지불합니다. App Runner 서비스에 AWS WAF 웹 ACLs 사용하는 데 따른 추가 비용은 발생하지 않습니다.  요금에 대한 자세한 내용은 [AWS WAF 요금을](https://aws.amazon.com/waf/pricing) 참조하세요.

## WAF 웹 ACLs App Runner 서비스에 연결
<a name="waf.associate-waf"></a>

 다음은 AWS WAF 웹 ACL을 App Runner 서비스와 연결하는 상위 수준 프로세스입니다.

1.  AWS WAF 콘솔에서 웹 ACL을 생성합니다. 자세한 내용은 *AWS WAF 개발자 안내서*의 [웹 ACL 생성을](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-creating.html) 참조하세요.

1. 에 대한 AWS Identity and Access Management (IAM) 권한을 업데이트합니다 AWS WAF. 자세한 내용은 [권한](#waf.permissions) 단원을 참조하십시오.

1. 다음 방법 중 하나를 사용하여 웹 ACL을 App Runner 서비스와 연결합니다.
   + **App Runner 콘솔**: App Runner 서비스를 [생성](manage-create.md)하거나 [업데이트할](manage-configure.md) 때 App Runner 콘솔을 사용하여 기존 웹 ACL을 연결합니다. 지침은 [AWS WAF 웹 ACLs](waf-manage.md).
   + **AWS WAF 콘솔**: 기존 App Runner 서비스의 AWS WAF 콘솔을 사용하여 웹 ACL을 연결합니다. 자세한 내용은 *AWS WAF 개발자 안내서*의 [웹 ACL과 AWS 리소스 연결 또는 연결 해제](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-associating-aws-resource.html)를 참조하십시오.
   + **AWS CLI**: AWS WAF 퍼블릭 APIs를 사용하여 웹 ACL을 연결합니다. AWS WAF 퍼블릭 APIs에 대한 자세한 내용은 *AWS WAF API 참조 안내서*의 [AssociateWebACL](https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html)을 참조하세요.

## 고려 사항
<a name="waf.considerations"></a>
+ WAF 웹 ACLs과 연결된 App Runner 프라이빗 서비스에 대한 소스 IP 규칙은 *IP 기반 규칙을 준수하지 않습니다*. 이는 현재 요청 소스 IP 데이터를 WAF와 연결된 App Runner 프라이빗 서비스로 전달하는 것을 지원하지 않기 때문입니다. App Runner 애플리케이션에 소스 IP/CIDR 수신 트래픽 제어 규칙이 필요한 경우 WAF 웹 ACLs 대신 [프라이빗 엔드포인트에 대한 보안 그룹 규칙을](network-pl-manage.md) 사용해야 합니다.
+ App Runner 서비스는 하나의 웹 ACL에만 연결할 수 있습니다. 그러나 하나의 웹 ACL을 여러 App Runner 서비스 및 여러 AWS 리소스와 연결할 수 있습니다. 예를 들어 Amazon Cognito 사용자 풀과 Application Load Balancer 리소스가 있습니다.
+ 웹 ACL을 생성하면 웹 ACL이 완전히 전파되고 App Runner에서 사용할 수 있을 때까지 약간의 시간이 걸립니다. 전파 시간은 몇 초에서 몇 분 사이일 수 있습니다. 웹 ACL이 완전히 전파되기 전에 연결을 시도`WAFUnavailableEntityException`하면가를 AWS WAF 반환합니다.

  웹 ACL이 완전히 전파되기 전에 브라우저를 새로 고치거나 App Runner 콘솔에서 다른 곳으로 이동하면 연결이 발생하지 않습니다. 그러나 App Runner 콘솔 내에서 탐색할 수 있습니다.
+ AWS WAF 는 잘못된 상태인 App Runner 서비스에 대해 다음 AWS WAF APIs 중 하나를 호출할 때 `WAFNonexistentItemException` 오류를 반환합니다.
  +  `AssociateWebACL` 
  +  `DisassociateWebACL` 
  +  `GetWebACLForResource` 

  App Runner 서비스의 잘못된 상태는 다음과 같습니다.
  +  `CREATE_FAILED` 
  +  `DELETE_FAILED` 
  +  `DELETED` 
  +  `OPERATION_IN_PROGRESS ` 
**참고**  
`OPERATION_IN_PROGRESS` 상태는 App Runner 서비스가 삭제되는 경우에만 유효하지 않습니다.
+ 요청으로 인해가 검사할 수 있는 한도보다 큰 페이로드가 발생할 AWS WAF 수 있습니다. 가 App Runner의 과대 요청을 AWS WAF 처리하는 방법에 대한 자세한 내용은 *AWS WAF 개발자 안내서*의 [과대 요청 구성 요소 처리를](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-oversize-handling.html) 참조하세요 AWS WAF .
+  적절한 규칙을 설정하지 않거나 트래픽 패턴이 변경되면 웹 ACL이 애플리케이션을 보호하는 데 효과적이지 않을 수 있습니다.

## 권한
<a name="waf.permissions"></a>

에서 웹 ACL을 사용하려면 AWS WAF다음 IAM 권한을 AWS App Runner추가합니다.
+  `apprunner:ListAssociatedServicesForWebAcl` 
+  `apprunner:DescribeWebAclForService` 
+  `apprunner:AssociateWebAcl` 
+  `apprunner:DisassociateWebAcl` 

IAM 권한에 대한 자세한 내용은 [IAM 사용 설명서의 IAM의 정책 및 권한을](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) 참조하세요. ** 

다음은에 대해 업데이트된 IAM 정책의 예입니다 AWS WAF. 이 IAM 정책에는 App Runner 서비스 작업에 필요한 권한이 포함되어 있습니다.

**Example**    
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "wafv2:ListResourcesForWebACL",
            "wafv2:GetWebACLForResource",
            "wafv2:AssociateWebACL",
            "wafv2:DisassociateWebACL",
            "apprunner:ListAssociatedServicesForWebAcl",
            "apprunner:DescribeWebAclForService",
            "apprunner:AssociateWebAcl",
            "apprunner:DisassociateWebAcl"
         ],
         "Resource":"*"
      }
   ]
}
```

**참고**  
IAM 권한을 부여해야 하지만 나열된 작업은 권한 전용이며 API 작업에 해당하지 않습니다.