

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

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

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

# Amazon CloudFront AWS WAF 에서 사용
<a name="cloudfront-features"></a>

Amazon CloudFront 기능과 AWS WAF 함께를 사용하는 방법을 알아봅니다.

보호 팩(웹 ACL)을 생성할 때 AWS WAF 에서 검사할 CloudFront 배포를 하나 이상 지정할 수 있습니다. CloudFront는 두 가지 유형의 배포, 즉 개별 테넌트를 보호하는 표준 배포와 단일 공유 구성 템플릿을 통해 여러 테넌트를 보호하는 다중 테넌트 배포를 지원합니다. AWS WAF 는 보호 팩(웹 ACL)에 정의한 규칙에 따라 두 배포 유형에 대한 웹 요청을 검사하며, 각 유형에 대해 구현 패턴이 다릅니다.

**Topics**
+ [가 다양한 배포 유형에서 AWS WAF 작동하는 방식](#cloudfront-features-distribution-types)
+ [CloudFront 정액 요금제 AWS WAF 와 함께 사용](#waf-cf-pricing-plans)
+ [를 사용하여 CloudFront 배포를 보호하기 위한 일반적인 사용 사례 AWS WAF](cloudfront-waf-use-cases.md)

## 가 다양한 배포 유형에서 AWS WAF 작동하는 방식
<a name="cloudfront-features-distribution-types"></a>

### 배포 유형
<a name="distribution-types-overview"></a>

AWS WAF 는 표준 및 다중 테넌트 배포 CloudFront 배포 모두에 웹 애플리케이션 방화벽 기능을 제공합니다.

#### 표준 배포
<a name="standard-distribution-overview"></a>

표준 배포의 경우 각 배포에 대해 단일 보호 팩(웹 ACL)을 사용하여 보호를 AWS WAF 추가합니다. 기존 보호 팩(웹 ACL)을 CloudFront 배포와 연결하거나 CloudFront 콘솔에서 원클릭 보호를 사용하여 이 보호를 활성화할 수 있습니다. 이렇게 하면 보호 팩(웹 ACL)을 변경하면 연결된 배포에만 영향을 미치므로 각 배포에 대한 보안 제어를 독립적으로 관리할 수 있습니다.

CloudFront 배포를 보호하는 이 간단한 방법은 단일 보호 팩(웹 ACL)에서 특정 보호를 개별 도메인에 제공하는 데 최적입니다.

##### 표준 배포 고려 사항
<a name="standard-waf-considerations"></a>
+ 보호 팩(웹 ACL)에 대한 변경 사항은 연결된 배포에만 영향을 미칩니다.
+ 각 배포에는 독립적인 보호 팩(웹 ACL) 구성이 필요합니다.
+ 규칙과 규칙 그룹은 각 배포에 대해 별도로 관리됩니다

#### 다중 테넌트 배포
<a name="tenant-distribution-overview"></a>

다중 테넌트 배포의 경우 단일 보호 팩(웹 ACL)을 사용하여 여러 도메인에서 보호를 AWS WAF 추가합니다. 다중 테넌트 배포로 관리되는 도메인을 배포 테넌트라고 합니다. 다중 테넌트 배포 생성 프로세스 도중 또는 이후에 CloudFront 콘솔에서만 다중 테넌트 배포에 대한 AWS WAF 보호를 활성화할 수 있습니다. 그러나 보호 팩(웹 ACL)에 대한 변경 사항은 AWS WAF 콘솔 또는 API를 통해 계속 관리됩니다.

다중 테넌트 배포는 두 가지 수준에서 AWS WAF 보호를 활성화할 수 있는 유연성을 제공합니다.
+ **다중 테넌트 배포 수준** - 연결된 보호 팩(웹 ACL)은 배포를 공유하는 모든 애플리케이션에 적용되는 기본 보안 제어를 제공합니다.
+ **배포 테넌트 수준** - 다중 테넌트 배포 내의 개별 테넌트에는 추가 보안 제어를 구현하거나 다중 테넌트 배포 설정을 재정의하기 위한 자체 보호 팩(웹 ACL)이 있을 수 있습니다.

이 두 계층은 개별 배포에 대한 보안을 사용자 지정하는 기능을 상실하지 않고 여러 도메인에서 AWS WAF 보호를 공유하는 데 다중 테넌트 배포를 최적으로 만듭니다.

#### 다중 테넌트 배포 고려 사항
<a name="tenant-waf-considerations"></a>
+ 개별 배포 테넌트는 관련 다중 테넌트 배포와 연결된 보호 팩(웹 ACL)에 대한 변경 사항을 상속합니다.
+ 특정 배포 테넌트와 연결된 보호 팩(웹 ACL)은 다중 테넌트 보호 팩(웹 ACL) 수준에서 구성된 설정을 재정의할 수 있습니다.
+ 배포 및 배포 테넌트 수준 모두에서 관리형 규칙 그룹을 구현할 수 있습니다.
+ 애플리케이션 식별자를 로그에 배치하여 배포별로 보안 이벤트를 추적할 수 있습니다.

### AWS WAF 배포 유형별 기능
<a name="distribution-types-comparison"></a>


**보호 팩(웹 ACL) 구현 비교**  

| AWS WAF 기능 | 표준 배포 | 다중 테넌트 배포 | 
| --- | --- | --- | 
| 보호 팩(웹 ACL) 연결 | 배포당 하나의 보호 팩(웹 ACL) | 선택적 테넌트별 보호 팩(웹 ACL)을 사용하여 테넌트 간에 보호 팩(웹 ACL)을 공유할 수 있습니다. | 
| 규칙 관리 | 규칙은 단일 배포에 영향을 미칩니다. | 다중 테넌트 배포 규칙은 연결된 모든 테넌트에 영향을 미치며, 배포 테넌트별 규칙은 해당 테넌트에만 영향을 미칩니다. | 
| 관리형 규칙 그룹 | 개별 배포에 적용됨 | 모든 테넌트의 다중 테넌트 배포 수준 또는 특정 애플리케이션의 테넌트 수준에서 적용할 수 있습니다. | 
| 로깅 | 표준 AWS WAF 로그 | 로그에는 보안 이벤트 어트리뷰션을 위한 테넌트 식별자가 포함됩니다. | 

## CloudFront 정액 요금제 AWS WAF 와 함께 사용
<a name="waf-cf-pricing-plans"></a>

CloudFront 정액 요금제는 트래픽 급증이나 공격에 관계없이 Amazon CloudFront 글로벌 콘텐츠 전송 네트워크(CDN)를 여러 AWS 서비스 및 기능과 결합하여 초과 요금 없이 월별 가격으로 제공합니다.

정액 요금제에는 간단한 월별 가격 대비 다음과 같은 AWS 서비스 및 기능이 포함됩니다.
+ CloudFront CDN
+ AWS WAF 및 DDoS 보호
+ 봇 관리 및 분석
+ Amazon Route 53 DNS
+ Amazon CloudWatch Logs 수집
+ TLS 인증서
+ 서버리스 엣지 컴퓨팅
+ 매월 Amazon S3 스토리지 크레딧

플랜은 애플리케이션의 요구 사항에 맞게 Free, Pro, Business 및 Premium 티어에서 사용할 수 있습니다. 플랜은 이용 가능한 최상의 요금을 얻기 위해 연간 약정이 필요하지 않습니다. Free 플랜으로 시작하고 업그레이드하여 더 많은 기능과 더 많은 사용 허용량에 액세스하세요.

자세한 내용과 플랜 및 기능의 전체 목록은 Amazon [CloudFront 개발자 안내서의 CloudFront 고정 요금제를](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/flat-rate-pricing-plan.html) 참조하세요. *Amazon CloudFront *

**중요**  
요금제를 사용할 때는 유효한 AWS WAF 보호 팩(웹 ACL)이 CloudFront 배포와 연결되어 있어야 합니다. pay-as-you-go 다시 전환하지 않는 한 보호 팩(웹 ACL) 연결을 제거할 수 없습니다.  
 AWS WAF 웹 ACL은 배포와 연결된 상태로 유지되어야 하지만 보안 구성을 완전히 제어할 수 있습니다. 웹 ACL에서 활성화 또는 비활성화되는 규칙을 조정하여 보호를 사용자 지정하고 보안 요구 사항에 맞게 규칙 설정을 수정할 수 있습니다. 웹 ACL 규칙 관리에 대한 자세한 내용은 [AWS WAF 규칙을](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rules.html) 참조하세요.

# 를 사용하여 CloudFront 배포를 보호하기 위한 일반적인 사용 사례 AWS WAF
<a name="cloudfront-waf-use-cases"></a>

다음 AWS WAF 기능은 모든 CloudFront 배포에서 동일한 방식으로 작동합니다. 다중 테넌트 배포에 대한 고려 사항은 각 기능 시나리오 다음에 나열되어 있습니다.

## CloudFront 사용자 지정 오류 페이지 AWS WAF 와 함께 사용
<a name="cloudfront-features-custom-error-pages"></a>

기본적으로는 지정한 기준에 따라 웹 요청을 AWS WAF 차단하면 HTTP 상태 코드를 CloudFront`403 (Forbidden)`에 반환하고 CloudFront는 해당 상태 코드를 최종 사용자에게 반환합니다. 최종 사용자에게는 다음과 유사한 짧고 불완전한 형식의 기본 메시지가 표시됩니다.

```
Forbidden: You don't have permission to access /myfilename.html on this server.
```

사용자 지정 응답을 정의하여 AWS WAF 보호 팩(웹 ACL) 규칙에서이 동작을 재정의할 수 있습니다. AWS WAF 규칙을 사용하여 응답 동작을 사용자 지정하는 방법에 대한 자세한 내용은 섹션을 참조하세요[Block 작업에 대한 사용자 지정 응답 전송](customizing-the-response-for-blocked-requests.md).

**참고**  
 AWS WAF 규칙을 사용하여 사용자 지정하는 응답은 CloudFront 사용자 지정 오류 페이지에서 정의하는 모든 응답 사양보다 우선합니다.

나머지 웹 사이트에서와 같은 형식을 사용하여 CloudFront를 통한 사용자 지정 오류 메시지를 표시하려는 경우 최종 사용자에게 사용자 지정 오류 메시지가 포함된 HTML 파일 등의 객체를 반환하도록 CloudFront를 구성할 수 있습니다.

**참고**  
CloudFront는 오리진에서 반환되는 HTTP 상태 코드 403과 요청이 차단될 AWS WAF 때에서 반환되는 HTTP 상태 코드 403을 구별할 수 없습니다. 따라서 HTTP 상태 코드 403의 다른 원인을 기반으로 다른 사용자 지정 오류 페이지를 반환할 수 없습니다.

CloudFront 사용자 지정 오류 페이지에 대한 자세한 내용을 알아보려면 *Amazon CloudFront 개발자 안내서*의 [사용자 지정 오류 응답 생성](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/GeneratingCustomErrorResponses.html)을 참조하세요.

### 다중 테넌트 배포의 사용자 지정 오류 페이지
<a name="custom-error-pages-template-distributions"></a>

CloudFront 다중 테넌트 배포의 경우 다음과 같은 방법으로 사용자 지정 오류 페이지를 구성할 수 있습니다.
+ 다중 테넌트 수준에서 - 이 설정은 다중 테넌트 배포 템플릿을 사용하는 모든 테넌트 배포에 적용됩니다.
+  AWS WAF 규칙을 통해 - 보호 팩(웹 ACLs)에 정의된 사용자 지정 응답이 다중 테넌트 배포 및 테넌트 수준 사용자 지정 오류 페이지보다 우선합니다.

## 자체 HTTP 서버에서 실행되는 애플리케이션에 CloudFront와 AWS WAF 함께 사용
<a name="cloudfront-features-your-own-http-server"></a>

CloudFront와 AWS WAF 함께를 사용하면 Amazon Elastic Compute Cloud(Amazon EC2)에서 실행되는 웹 서버든 비공개로 관리하는 웹 서버든 관계없이 모든 HTTP 웹 서버에서 실행되는 애플리케이션을 보호할 수 있습니다. 또한 CloudFront와 자체 웹 서버 간 및 최종 사용자와 CloudFront 간에 HTTPS를 요구하도록 CloudFront를 구성할 수 있습니다.

**CloudFront와 자체 웹 서버 간에 HTTPS 요구**  
CloudFront와 자체 웹 서버 간에 HTTPS를 요구하려면, CloudFront 사용자 지정 오리진 기능을 사용하고 특정 오리진에 대한 **오리진 프로토콜 정책** 및 **오리진 도메인 이름 **설정을 구성할 수 있습니다. CloudFront 구성에서 CloudFront가 오리진에서 객체를 가져올 때 사용할 포트 및 프로토콜과 함께 서버의 DNS 이름을 지정할 수 있습니다. 또한 사용자 지정 오리진 서버의 SSL/TLS 인증서가 구성한 원본 도메인 이름과 일치하는지 확인해야 합니다. 외부에서 자체 HTTP 웹 서버를 사용하는 경우 Comodo AWS, DigiCert 또는 Symantec과 같은 신뢰할 수 있는 타사 인증 기관(CA)에서 서명한 인증서를 사용해야 합니다. CloudFront와 자체 웹 서버 간의 통신을 위해 HTTPS를 요구하는 방법에 대한 자세한 내용은 *Amazon CloudFront 개발자 안내서*의 [CloudFront와 사용자 지정 오리진 간의 통신에 HTTPS 요구](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-cloudfront-to-custom-origin.html) 항목을 참조하세요.

**최종 사용자와 CloudFront 간의 HTTPS 요구**  
최종 사용자와 CloudFront 간의 HTTPS를 요구하려면, CloudFront 배포의 하나 이상의 동작에 대해 **최종 사용자 프로토콜 정책**을 변경할 수 있습니다. 최종 사용자와 CloudFront 간의 HTTPS 사용에 대한 자세한 내용은 *Amazon CloudFront 개발자 안내서*의 [최종 사용자와 CloudFront 간의 통신에 대한 HTTPS 요구](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-viewers-to-cloudfront.html) 항을 참조하세요. 또한 최종 사용자가 자체 도메인 이름(예: *https://www.mysite.com*)을 사용하여 HTTPS를 통해 CloudFront 배포에 연결할 수 있도록 자체 SSL 인증서를 가져올 수 있습니다. 자세한 내용은 *Amazon CloudFront 개발자 안내서*의 [대체 도메인 이름 및 HTTPS 구성](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cnames-and-https-procedures.html) 항을 참조하세요.

다중 테넌트 배포의 경우 HTTP 메서드 구성은 다음 계층 구조를 따릅니다.
+ 템플릿 수준 설정은 모든 테넌트 배포에 허용되는 기본 HTTP 메서드를 정의합니다.
+ 테넌트 배포는 이러한 설정을 다음과 같이 재정의할 수 있습니다.
  + 다중 테넌트 배포보다 더 적은 메서드 허용( AWS WAF 규칙을 사용하여 추가 메서드 차단)
  + 다중 테넌트 배포가 지원하도록 구성된 경우 더 많은 메서드 허용
+ AWS WAF 다중 테넌트 배포 및 테넌트 수준 모두의 규칙은 CloudFront 구성에 관계없이 HTTP 메서드를 추가로 제한할 수 있습니다.

## CloudFront가 응답하는 HTTP 메서드 선택
<a name="cloudfront-features-allowed-http-methods"></a>

Amazon CloudFront 웹 배포를 생성할 때 CloudFront에서 처리하여 오리진으로 전달할 HTTP 메서드를 선택합니다. 다음 옵션 중에서 선택할 수 있습니다.
+ **`GET`, `HEAD`** - 오리진에서 객체를 가져오거나 객체 헤더를 가져오기 위해서만 CloudFront를 사용할 수 있습니다.
+ **`GET`, `HEAD`, `OPTIONS`** - 오리진에서 객체를 가져오거나 객체 헤더를 가져오기 위해, 또는 오리진 서버에서 지원되는 옵션 목록을 가져오기 위해서만 CloudFront를 사용할 수 있습니다.
+ **`GET`, `HEAD`, `OPTIONS`, `PUT`, `POST`, `PATCH`, `DELETE`** – CloudFront를 사용하여 객체를 가져오기, 추가, 업데이트 및 삭제하고 객체 헤더를 가져올 수 있습니다. 또한 웹 양식에서 데이터를 제출하는 등의 기타 `POST` 작업을 수행할 수 있습니다.

에 설명된 대로 AWS WAF 바이트 일치 규칙 문을 사용하여 HTTP 메서드를 기반으로 요청을 허용하거나 차단할 수도 있습니다[문자열 일치 규칙 문](waf-rule-statement-type-string-match.md). `GET` 및와 같이 CloudFront에서 지원하는 메서드의 조합을 사용하려면 다른 메서드를 사용하는 요청을 차단 AWS WAF 하도록를 구성할 필요가 `HEAD`없습니다. , `HEAD`및와 같이 CloudFront에서 지원하지 않는 메서드의 조합을 허용하려면 모든 메서드에 응답하도록 CloudFront를 구성한 다음 `GET`를 사용하여 다른 메서드를 사용하는 요청을 차단 AWS WAF 할 `POST`수 있습니다.

CloudFront에서 응답하는 메서드를 선택하는 방법에 대한 자세한 내용은 *Amazon CloudFront 개발자 안내서*의 [웹 배포의 생성 또는 업데이트 시 지정하는 값](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html) 항목에 있는 [허용되는 HTTP 메서드](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesAllowedHTTPMethods)를 참조하세요.

**다중 테넌트 배포에서 허용되는 HTTP 메서드 구성**  
다중 테넌트 배포의 경우 다중 테넌트 배포 수준에서 설정된 HTTP 메서드 구성은 기본적으로 모든 테넌트 배포에 적용됩니다. 테넌트 배포는 필요한 경우 이러한 설정을 재정의할 수 있습니다.
+ `GET` 및와 같이 CloudFront에서 지원하는 메서드 조합을 사용하려면 다른 메서드를 사용하는 요청을 차단 AWS WAF 하도록를 구성할 필요가 `HEAD`없습니다.
+ , `HEAD`및와 같이 CloudFront에서 기본적으로 지원하지 않는 메서드의 조합을 허용하려면 모든 메서드에 응답하도록 CloudFront를 구성한 다음 `GET`를 사용하여 다른 메서드를 사용하는 요청을 차단 AWS WAF 할 `POST`수 있습니다.

다중 테넌트 배포에서 보안 헤더를 구현할 때는 다음 사항을 고려하세요.
+ 템플릿 수준 보안 헤더는 모든 테넌트 배포에서 기준 보호를 제공합니다
+ 테넌트 배포는 다음을 수행할 수 있습니다.
  + 다중 테넌트 배포에 정의되지 않은 새 보안 헤더 추가
  + 테넌트별 헤더의 값 수정
  + 다중 테넌트 배포 수준에서 설정된 보안 헤더를 제거하거나 재정의할 수 없음
+ 모든 테넌트에 적용해야 하는 중요한 보안 제어에 다중 테넌트 배포 수준 헤더를 사용하는 것이 좋습니다

## 로깅 고려 사항
<a name="cloudfront-features-logging"></a>

표준 배포와 다중 테넌트 배포 모두 AWS WAF 로깅을 지원하지만 로그가 구조화되고 관리되는 방식에는 중요한 차이가 있습니다.


**로깅 비교**  

| 표준 배포 | 다중 테넌트 배포 | 
| --- | --- | 
| 배포당 로그 구성 1개 | 템플릿 및 테넌트 수준 로깅 옵션 | 
| 표준 로그 필드 | 추가 테넌트 식별자 필드 | 
| 배포당 단일 대상 | 다중 테넌트 배포 및 테넌트 로그에 사용할 수 있는 별도의 대상 | 

## 추가 리소스
<a name="cloudfront-saas-additional-resources"></a>
+ 다중 테넌트 배포에 대한 자세한 내용은 *Amazon CloudFront 개발자 안내서*의 [배포 구성](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-working-with.html)을 참조하세요.
+ CloudFront AWS WAF 에서를 사용하는 방법에 대한 자세한 내용은 *Amazon CloudFront 개발자 안내서*의 [AWS WAF 보호 사용을](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-awswaf.html) 참조하세요.
+  AWS WAF 로그에 대한 자세한 내용은 섹션을 참조하세요[보호 팩(웹 ACL) 트래픽에 대한 로그 필드](logging-fields.md).