

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

# 배포 계획
<a name="plan-your-deployment"></a>

이 섹션에서는 솔루션을 배포하기 전에 발생하는 [비용](cost.md), [보안](security.md), [할당량](quotas.md) 및 기타 고려 사항에 대해 설명합니다.

## 지원되는 AWS 리전
<a name="supported-aws-regions"></a>

정의한 템플릿 입력 파라미터 값에 따라이 솔루션에는 다양한 리소스가 필요합니다. 일부 AWS 리전에서는 이러한 리소스(다음 표에 나와 있음)를 사용하지 못할 수 있습니다. 따라서 이러한 서비스를 사용할 수 있는 AWS 리전에서이 솔루션을 시작해야 합니다. 리전별 AWS 서비스의 최신 가용성은 [AWS 리전 서비스 목록을](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/) 참조하세요.


|  | AWS WAF 웹 ACL | AWS Glue | Amazon Athena | Amazon Kinesis Data Firehose | 
| --- | --- | --- | --- | --- | 
|   [**엔드포인트 유형**]   |  |  |  |  | 
|  CloudFront  |  ✓  |  |  |  | 
|  Application Load Balancer(ALB)  |  ✓  |  |  |  | 
|   **HTTP 서비스 장애 방지 활성화**   |  |  |  |  | 
|  예 - AWS Lambda 로그 구문 분석기  |  |  |  |  ✓  | 
|  예 - Amazon Athena 로그 구문 분석기  |  |  ✓  |  ✓  |  ✓  | 
|   **스캐너 및 프로브 보호 활성화**   |  |  |  |  | 
|  예 - Amazon Athena 로그 구문 분석기  |  |  ✓  |  ✓  |  | 

**참고**  
**엔드포인트**`CloudFront`로를 선택하는 경우 미국 동부(버지니아 북부) 리전()에 솔루션을 배포해야 합니다.`us-east-1`

# 비용
<a name="cost"></a>

AWS WAF용 보안 자동화 솔루션을 실행하는 동안 사용되는 AWS 서비스의 비용은 사용자의 책임입니다. 이 솔루션을 실행하는 데 드는 총 비용은 활성화된 보호와 수집, 저장 및 처리된 데이터의 양에 따라 달라집니다.

비용 관리에 도움이 되도록 [AWS Cost Explorer](https://aws.amazon.com/aws-cost-management/aws-cost-explorer/)를 통해 [예산](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/budgets-create.html)을 생성하는 것이 좋습니다. 자세한 내용은이 솔루션에서 사용한 각 AWS 서비스의 요금 웹 페이지를 참조하세요.

다음 표는 미국 동부(버지니아 북부) 리전(AWS 프리 티어 제외)에서이 솔루션을 실행하기 위한 비용 분석의 예입니다. 요금은 변경될 수 있습니다.

 **예제 1: 평판 목록 보호 활성화, 잘못된 봇 보호, HTTP 플러드 보호를 위한 AWS Lambda 로그 파서, 스캐너 및 프로브 보호** 


| AWS 서비스 | 차원/월 | 비용[USD] | 
| --- | --- | --- | 
|  Amazon Data Firehose  |  100GB  |  \$1\$12.90  | 
|  Amazon S3  |  100GB  |  \$1\$12.30  | 
|  AWS Lambda  |  128MB: Lambda 실행당 3개의 함수, 1M 간접 호출 및 평균 500밀리초 기간 512MB: Lambda 실행당 2개의 함수, 1M 간접 호출 및 평균 500밀리초 기간  |  \$1\$15.40  | 
|  AWS WAF 웹 ACL  |  1  |  5.00 USD  | 
|  AWS WAF 규칙  |  4  |  4.00 USD  | 
|  AWS WAF 요청  |  100만  |  0.60 USD  | 
|   **합계**   |  |   **매월 \$1\$120.60**   | 

 **예제 2: 평판 목록 보호 활성화, 잘못된 봇 보호, HTTP 플러드 보호를 위한 Amazon Athena 로그 파서, 스캐너 및 프로브 보호** 


| AWS 서비스 | 차원/월 | 비용[USD] | 
| --- | --- | --- | 
|  Amazon Data Firehose  |  100GB  |  \$1\$12.90  | 
|  Amazon S3  |  100GB  |  \$1\$12.30  | 
|  AWS Lambda  |  128MB: Lambda 실행당 3개의 함수, 1M 호출 및 평균 500밀리초 기간 512MB: Lambda 실행당 2개의 함수, 7,560개의 호출 및 평균 500밀리초 기간  |  \$1\$11.26  | 
|  Amazon Athena  |  적중 또는 요청당 최대 500바이트 로그 레코드를 생성하는 일일 120만 개의 CloudFront 객체 적중 또는 120만 개의 ALB 요청  |  \$1\$14.32  | 
|  AWS WAF 웹 ACL  |  1  |  5.00 USD  | 
|  AWS WAF 규칙  |  4  |  4.00 USD  | 
|  AWS WAF 요청  |  100만  |  0.60 USD  | 
|   **합계**   |  |   **매월** **\$1\$120.38**   | 

 **예제 3: 허용 및 거부된 IP 세트에 대한 IP 보존 활성화** 


| AWS 서비스 | 차원/월 | 비용[USD] | 
| --- | --- | --- | 
|  Amazon DynamoDB  |  1K 쓰기 및 1MB 데이터 스토리지  |  \$1\$10.00  | 
|  AWS Lambda  |  128MB: Lambda 실행당 1개의 함수, 2K 호출 및 평균 500밀리초 기간 512MB: Lambda 실행당 함수 1개, 간접 호출 2K 및 평균 500밀리초 기간  |  \$1\$10.01  | 
|  Amazon CloudWatch  |  2K 이벤트  |  \$1\$10.00  | 
|  AWS WAF 웹 ACL  |  1  |  5.00 USD  | 
|  AWS WAF 규칙  |  2  |  2.00 USD  | 
|  WAS WAF 요청  |  100만  |  0.60 USD  | 
|   **합계**   |  |   **매월** **\$1\$17.61**   | 

## CloudWatch 로그의 비용 추정
<a name="cost-estimate-of-cloudwatch-logs"></a>

Lambda와 같이이 솔루션에 사용되는 일부 AWS 서비스는 CloudWatch 로그를 생성합니다. 이러한 로그에는 [요금이](https://aws.amazon.com/cloudwatch/pricing/) 부과됩니다. 비용을 줄이려면 로그를 삭제하거나 보관하는 것이 좋습니다. 로그 아카이브 세부 정보는 [ Amazon CloudWatch Logs 사용 설명서의 Amazon S3로 로그 데이터 내보내기](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/S3Export.html)*를 참조하세요 Amazon CloudWatch*.

설치 시 Athena 로그 파서를 사용하도록 선택한 경우이 솔루션은 구성된 대로 Amazon S3 버킷(들)의 AWS WAF 또는 애플리케이션 액세스 로그에 대해 실행되도록 쿼리를 예약합니다. 각 쿼리에서 스캔한 데이터의 양을 기준으로 요금이 부과됩니다. 이 솔루션은 로그 및 쿼리에 파티셔닝을 적용하여 비용을 최소화합니다. 기본적으로 솔루션은 애플리케이션 액세스 로그를 원래 Amazon S3 위치에서 분할된 폴더 구조로 이동합니다. 원본을 보존할 수도 있지만 중복된 로그 스토리지에 대한 요금이 부과됩니다. 이 솔루션은 [작업 그룹을 사용하여 워크로드](https://docs.aws.amazon.com/athena/latest/ug/manage-queries-control-costs-with-workgroups.html)를 분할하며 쿼리 액세스와 비용을 모두 관리하도록 구성할 수 있습니다. 샘플 [비용 견적 계산은 Athena의](#cost-estimate-of-athena) 비용 견적을 참조하세요. 자세한 내용은 [Amazon Athena 요금을](https://aws.amazon.com/athena/pricing/) 참조하세요.

## Athena의 예상 비용
<a name="cost-estimate-of-athena"></a>

**HTTP 서비스 장애 방지**, **스캐너 및 프로브 보호** 또는 **잘못된 봇** 보호 규칙을 실행하는 동안 Athena 로그 구문 분석기 옵션을 사용하는 경우 Athena 사용에 대한 요금이 부과됩니다. 기본적으로 각 Athena 쿼리는 5분마다 실행되며 지난 4시간 동안의 데이터를 스캔합니다. 이 솔루션은 로그 및 Athena 쿼리에 파티셔닝을 적용하여 비용을 최소화합니다. **WAF Block Period** 템플릿 파라미터의 값을 변경하여 쿼리가 스캔하는 데이터 시간을 구성할 수 있습니다. 그러나 스캔되는 데이터의 양을 늘리면 Athena 비용이 증가할 수 있습니다.

**작은 정보**  
다음은 CloudFront 로그 비용 계산의 예입니다.  
평균적으로 각 CloudFront 적중은 약 500바이트의 데이터를 생성할 수 있습니다.  
하루에 120만 개의 CloudFront 객체 적중이 있는 경우 데이터가 일관된 속도로 수집된다고 가정하면 4시간당 200K(120만/6) 적중이 발생합니다. 비용을 계산할 때 실제 트래픽 패턴을 고려하세요.  
 `[500 bytes of data] * [200K hits per four hours] = [an average 100 MB (0.0001TB) data scanned per query]`   
Athena는 스캔한 데이터의 TB당 5.00 USD를 청구합니다.  
 `[0.0001 TB] * [$5] = [$0.0005 per query scan]`   
Athena 쿼리는 5분마다 실행되며, 시간당 12회 실행됩니다.  
 `[12 runs] * [24 hours] = [288 runs per day]`   
 `[$0.0005 per query scan] * [288 runs per day] * [30 days] = [$4.32 per month]`   
실제 비용은 애플리케이션의 트래픽 패턴에 따라 달라집니다. 자세한 내용은 [Amazon Athena 요금을](https://aws.amazon.com/athena/pricing/) 참조하세요.

# 보안
<a name="security"></a>

AWS 인프라에 시스템을 빌드하면 보안 책임은 사용자와 AWS가 분담합니다. 이 [공동 책임 모델](https://aws.amazon.com/compliance/shared-responsibility-model/)은 운영 부담을 덜어줍니다. AWS가 호스트 운영 체제, 가상화 계층, 서비스 운영 시설의 물리적 보안을 포함한 구성 요소를 운영, 관리, 제어하기 때문입니다. AWS 보안에 대한 자세한 내용은 [AWS 클라우드 보안](https://aws.amazon.com/security/)을 참조하세요.

## IAM 역할
<a name="iam-roles"></a>

IAM 역할을 사용하면 AWS 클라우드의 서비스 및 사용자에게 세분화된 액세스, 정책 및 권한을 할당할 수 있습니다. 이 솔루션은 최소 권한을 가진 IAM 역할을 생성하며, 이러한 역할은 솔루션의 리소스에 필요한 권한을 부여합니다.

## 데이터
<a name="data"></a>

Amazon S3 버킷 및 DynamoDB 테이블에 저장된 모든 데이터는 저장 시 암호화를 사용합니다. Firehose를 통해 전송 중인 데이터도 암호화됩니다.

## 보호 기능
<a name="protection-capabilities"></a>

웹 애플리케이션은 다양한 공격에 취약합니다. 이러한 공격에는 취약성을 악용하거나 서버를 제어하도록 특별히 설계된 요청, 웹 사이트를 파괴하도록 설계된 볼륨 측정 공격, 웹 콘텐츠를 스크래핑하고 도용하도록 프로그래밍된 잘못된 봇 및 스크레이퍼가 포함됩니다.

이 솔루션은 CloudFormation을 사용하여 AWS 관리형 규칙 그룹 및 사용자 지정 규칙을 포함한 AWS WAF 규칙을 구성하여 다음과 같은 일반적인 공격을 차단합니다.
+  **AWS 관리형 규칙** -이 관리형 서비스는 일반적인 애플리케이션 취약성 또는 기타 원치 않는 트래픽에 대한 보호를 제공합니다. 이 솔루션에는 [AWS 관리형 IP 평판 규칙 그룹](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-ip-rep.html), [AWS 관리형 기준 규칙 그룹](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-baseline.html) 및 [AWS 관리형 사용 사례별 규칙 그룹이](https://docs.aws.amazon.com/waf/latest/developerguide/aws-managed-rule-groups-use-case.html) 포함됩니다. 최대 웹 ACL 용량 단위(WCU) 할당량까지 웹 ACL에 대해 하나 이상의 규칙 그룹을 선택할 수 있습니다.
+  **SQL 삽입** - 공격자는 악성 SQL 코드를 웹 요청에 삽입하여 데이터베이스에서 데이터를 추출합니다. 이 솔루션은 잠재적으로 악성 SQL 코드가 포함된 웹 요청을 차단하도록 설계되었습니다.
+  **XSS** - 공격자는 양성 웹 사이트의 취약성을 차량으로 사용하여 악의적인 클라이언트 사이트 스크립트를 합법적인 사용자의 웹 브라우저에 삽입합니다. 일반적으로 탐색되는 수신 요청 요소를 검사하여 XSS 공격을 식별하고 차단하도록 설계되었습니다.
+  **HTTP 플러**드 - 웹 서버 및 기타 백엔드 리소스는 HTTP 플러드와 같은 DDoS 공격의 위험이 있습니다. 이 솔루션은 클라이언트의 웹 요청이 구성 가능한 할당량을 초과할 때 속도 기반 규칙을 자동으로 호출합니다. 또는 Lambda 함수 또는 Athena 쿼리를 사용하여 AWS WAF 로그를 처리하여이 할당량을 적용할 수 있습니다.
+  **스캐너 및 프로브** - 악성 소스는 HTTP 4xx 오류 코드를 생성하는 일련의 요청을 전송하여 인터넷 경계 웹 애플리케이션의 취약성을 스캔하고 프로브합니다. 이 기록을 사용하여 악성 소스 IP 주소를 식별하고 차단할 수 있습니다. 이 솔루션은 CloudFront 또는 ALB 액세스 로그를 자동으로 구문 분석하고, 분당 고유한 소스 IP 주소의 잘못된 요청 수를 계산하고, 정의된 오류 할당량에 도달한 주소의 추가 스캔을 차단하도록 AWS WAF를 업데이트하는 Lambda 함수 또는 Athena 쿼리를 생성합니다.
+  **알려진 공격자 출처(IP 평판 목록)** - 많은 조직이 스팸 메일, 멀웨어 배포자, 봇넷 등 알려진 공격자가 운영하는 IP 주소의 평판 목록을 유지합니다. 이 솔루션은 이러한 평판 목록의 정보를 활용하여 악성 IP 주소의 요청을 차단하는 데 도움이 됩니다. 또한이 솔루션은 Amazon 내부 위협 인텔리전스를 기반으로 IP 평판 규칙 그룹으로 식별된 공격자를 차단합니다.
+  **봇 및 스크레이퍼** - 공개적으로 액세스할 수 있는 웹 애플리케이션의 운영자는 콘텐츠에 액세스하는 클라이언트가 자신을 정확하게 식별하고 의도한 대로 서비스를 사용한다고 신뢰해야 합니다. 그러나 콘텐츠 스크레이퍼 또는 잘못된 봇과 같은 일부 자동화된 클라이언트는 제한을 우회하도록 잘못 표현됩니다. 이 솔루션은 잘못된 봇과 스크레이퍼를 식별하고 차단하는 데 도움이 됩니다.

# 할당량
<a name="quotas"></a>

서비스 할당량(제한이라고도 함)은 AWS 계정의 최대 서비스 리소스 또는 작업 수입니다.

## 이 솔루션의 AWS 서비스에 대한 할당량
<a name="quotas-for-aws-services-in-this-solution"></a>

[이 솔루션에 구현된 각 서비스](architecture-details.md#aws-services-in-this-solution)의 할당량이 충분한지 확인하세요. 자세한 내용은 [AWS 서비스 할당량을 참조하세요](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html). 페이지를 전환하지 않고 설명서에서 모든 AWS 서비스에 대한 서비스 할당량을 보려면 대신 PDF의 [서비스 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/aws-general.pdf#aws-service-information) 페이지에서 정보를 확인합니다.

## AWS WAF 할당량
<a name="aws-waf-quotas"></a>

AWS WAF는 IP 일치 조건당 Classless Inter-Domain Routing(CIDR) 표기법으로 최대 10,000개의 IP 주소 범위를 차단할 수 있습니다. 이 솔루션이 생성하는 각 목록에는이 할당량이 적용됩니다. 자세한 내용은 [AWS WAF 할당량을 참조하세요](https://docs.aws.amazon.com/waf/latest/developerguide/limits.html). 버전 3.0부터이 솔루션은 각 규칙에 연결할 두 개의 IP 세트를 생성합니다. 하나는 IPv4용이고 다른 하나는 IPv6용입니다.

AWS WAF는 개별 , `Create` `Put`또는 `Update` 작업에 대한 API 호출에 대해 AWS 리전별로 계정당 초당 최대 1개의 요청을 허용합니다. 솔루션 외부에서 이러한 API를 호출하면 API 제한 문제가 발생할 수 있습니다. 문제를 방지하려면이 솔루션이 배포된 동일한 계정 및 리전에서 이러한 API 호출을 수행하는 다른 애플리케이션을 실행하지 않는 것이 좋습니다.

# 배포 고려 사항
<a name="deployment-considerations"></a>

다음 섹션에서는이 솔루션을 구현하기 위한 제약 조건과 고려 사항을 제공합니다.

## AWS WAF 규칙
<a name="aws-waf-rules"></a>

이 솔루션이 생성하는 웹 ACL은 웹 애플리케이션에 대한 포괄적인 보호를 제공하도록 설계되었습니다. 이 솔루션은 웹 ACL에 추가할 수 있는 AWS 관리형 규칙 및 사용자 지정 규칙 세트를 제공합니다. 규칙을 포함하려면 CloudFormation 스택을 시작할 때 관련 파라미터에 `yes` 대해를 선택합니다. [1단계를 참조하세요. 파라미터 목록에 대한 스택을 시작합니다](step-1.-launch-the-stack.md).

**참고**  
out-of-box 제공 솔루션은 [AWS Firewall Manager](https://aws.amazon.com/firewall-manager)를 지원하지 않습니다. Firewall Manager의 규칙을 사용하려면 [소스 코드](https://github.com/aws-solutions/aws-waf-security-automations)에 사용자 지정을 적용하는 것이 좋습니다.

## 웹 ACL 트래픽 로깅
<a name="web-acl-traffic-logging"></a>

미국 동부(버지니아 북부) 이외의 AWS 리전에서 스택을 생성하고 **엔드포인트**를 로 설정하는 경우 **HTTP 서비스 장애 방지 활성화**를 `no` 또는 로 설정해야 `CloudFront`합니다`yes - AWS WAF rate based rule`.

다른 두 옵션(`yes - AWS Lambda log parser` 및 `yes - Amazon Athena log parser`)은 모든 AWS 엣지 로케이션에서 실행되는 웹 ACL에서 AWS WAF 로그를 활성화해야 하며 미국 동부(버지니아 북부) 외부에서는 지원되지 않습니다. 웹 ACL 트래픽 로깅에 대한 자세한 내용은 [AWS WAF 개발자 안내서](https://docs.aws.amazon.com/waf/latest/developerguide/logging.html)를 참조하세요.

## 요청 구성 요소에 대한 과대 처리
<a name="oversize-handling-for-request-components"></a>

AWS WAF는 웹 요청 구성 요소의 본문, 헤더 또는 쿠키에 대한 크기 초과 콘텐츠 검사를 지원하지 않습니다. 이러한 요청 구성 요소 유형 중 하나를 검사하는 규칙 문을 작성할 때 다음 옵션 중 하나를 선택하여 AWS WAF에 이러한 요청으로 수행할 작업을 지시할 수 있습니다.
+  `yes` (계속) - 규칙 검사 기준에 따라 요청 구성 요소를 정상적으로 검사합니다. AWS WAF는 크기 제한 내에 있는 요청 구성 요소 콘텐츠를 검사합니다. 솔루션에 사용되는 기본 옵션입니다.
+  `yes - MATCH` - 웹 요청을 규칙 문과 일치하는 것으로 처리합니다. AWS WAF는 규칙의 검사 기준에 따라 평가하지 않고 요청에 규칙 작업을 적용합니다. `Block` 작업이 있는 규칙의 경우 과대 구성 요소로 요청을 차단합니다.
+  `yes - NO_MATCH` - 웹 요청을 규칙의 검사 기준에 따라 평가하지 않고 규칙 문과 일치하지 않는 것으로 취급합니다. AWS WAF는 일치하지 않는 규칙과 마찬가지로 웹 ACL의 나머지 규칙을 사용하여 웹 요청에 대한 검사를 계속합니다.

자세한 내용은 [ AWS WAF에서 과대 웹 요청 구성 요소 처리를](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-oversize-handling.html) 참조하세요.

## 여러 솔루션 배포
<a name="multiple-solution-deployments"></a>

솔루션을 동일한 계정 및 리전에 여러 번 배포할 수 있습니다. 각 배포에 고유한 CloudFormation 스택 이름과 Amazon S3 버킷 이름을 사용해야 합니다. 각 고유 배포에는 추가 요금이 발생하며 계정당, 리전당 [AWS WAF 할당량이](https://docs.aws.amazon.com/waf/latest/developerguide/limits.html) 적용됩니다.

## 배포를 위한 최소 역할 권한(선택 사항)
<a name="minimum-role-permissions"></a>

고객은 배포에 필요한 최소 권한으로 IAM 역할을 수동으로 생성할 수 있습니다.
+ WAF 권한

```
        {
            "Effect": "Allow",
            "Action": [
                "wafv2:CreateWebACL",
                "wafv2:UpdateWebACL",
                "wafv2:DeleteWebACL",
                "wafv2:GetWebACL",
                "wafv2:ListWebACLs",
                "wafv2:CreateIPSet",
                "wafv2:UpdateIPSet",
                "wafv2:DeleteIPSet",
                "wafv2:GetIPSet",
                "wafv2:AssociateWebACL",
                "wafv2:DisassociateWebACL",
                "wafv2:PutLoggingConfiguration",
                "wafv2:DeleteLoggingConfiguration",
                "wafv2:ListWebACLs",
                "wafv2:ListIPSets",
                "wafv2:ListTagsForResource"
            ],
            "Resource": [
                "arn:aws:wafv2:*:*:regional/webacl/*",
                "arn:aws:wafv2:*:*:regional/ipset/*",
                "arn:aws:wafv2:*:*:global/webacl/*",
                "arn:aws:wafv2:*:*:global/ipset/*"
            ]
        }
```
+ Lambda 권한

```
        {
            "Effect": "Allow",
            "Action": [
                "lambda:CreateFunction",
                "lambda:DeleteFunction",
                "lambda:GetFunction",
                "lambda:InvokeFunction",
                "lambda:UpdateFunctionCode",
                "lambda:UpdateFunctionConfiguration",
                "lambda:AddPermission",
                "lambda:RemovePermission"
            ],
            "Resource": "arn:aws:lambda:*:*:function:*"
        }
```
+ Firehose 권한

```
        {
            "Effect": "Allow",
            "Action": [
                "firehose:CreateDeliveryStream",
                "firehose:DeleteDeliveryStream",
                "firehose:DescribeDeliveryStream",
                "firehose:StartDeliveryStreamEncryption",
                "firehose:StopDeliveryStreamEncryption",
                "firehose:UpdateDestination"
            ],
            "Resource": "arn:aws:firehose:*:*:deliverystream/*"
        }
```
+ S3 권한

```
        {
            "Effect": "Allow",
            "Action": [
                "s3:CreateBucket",
                "s3:DeleteBucketPolicy",
                "s3:GetBucketAcl",
                "s3:GetBucketPolicy",
                "s3:GetObject",
                "s3:PutBucketAcl",
                "s3:PutBucketPolicy",
                "s3:PutBucketPublicAccessBlock",
                "s3:PutBucketVersioning",
                "s3:PutEncryptionConfiguration",
                "s3:PutObject",
                "s3:PutBucketTagging",
                "s3:PutLifecycleConfiguration",
                "s3:AbortMultipartUpload",
                "s3:GetBucketLocation",
                "s3:ListBucket",
                "s3:ListBucketMultipartUploads",
                "s3:ListMultipartUploadParts",
                "s3:PutBucketLogging",
                "s3:GetBucketLogging"
            ],
            "Resource": "arn:aws:s3:::*"
        }
```
+ Athena 권한

```
        {
            "Effect": "Allow",
            "Action": [
                "athena:CreateWorkGroup",
                "athena:DeleteWorkGroup",
                "athena:GetWorkGroup",
                "athena:UpdateWorkGroup",
                "athena:StartQueryExecution",
                "athena:GetQueryExecution",
                "athena:GetQueryResults",
                "athena:StopQueryExecution"
            ],
            "Resource": "arn:aws:athena:*:*:workgroup/WAF*"
        }
```
+ Glue 권한

```
        {
            "Effect": "Allow",
            "Action": [
                "glue:CreateDatabase",
                "glue:DeleteDatabase",
                "glue:GetDatabase",
                "glue:GetDatabases",
                "glue:UpdateDatabase",
                "glue:CreateTable",
                "glue:DeleteTable",
                "glue:GetTable",
                "glue:GetTables",
                "glue:UpdateTable"
            ],
            "Resource": [
                "arn:aws:glue:*:*:catalog",
                "arn:aws:glue:*:*:database/*",
                "arn:aws:glue:*:*:table/*/*",
                "arn:aws:glue:*:*:userDefinedFunction/*"
            ]
        }
```
+ CloudWatch Logs 권한

```
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "logs:DeleteLogGroup",
                "logs:DeleteLogStream",
                "logs:PutRetentionPolicy",
                "logs:DescribeLogGroups"
            ],
            "Resource": [
                "arn:aws:logs:*:*:log-group:/aws/lambda/*",
                "arn:aws:logs:*:*:log-group:*",
                "arn:aws:logs:*:*:log-group:/aws/kinesisfirehose/*"
            ]
        }
```
+ CloudWatch 권한

```
        {
            "Effect": "Allow",
            "Action": [
                "cloudwatch:DeleteDashboards",
                "cloudwatch:GetDashboard",
                "cloudwatch:ListDashboards",
                "cloudwatch:PutDashboard",
                "cloudwatch:PutMetricData"
            ],
            "Resource": "*"
        }
```
+ SNS 권한

```
        {
            "Effect": "Allow",
            "Action": [
                "sns:CreateTopic",
                "sns:DeleteTopic",
                "sns:Subscribe",
                "sns:Unsubscribe",
                "sns:SetTopicAttributes"
            ],
            "Resource": "arn:aws:sns:*:*:*"
        }
```
+ DynamoDB 권한

```
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:CreateTable",
                "dynamodb:DeleteTable",
                "dynamodb:DescribeTable",
                "dynamodb:PutItem",
                "dynamodb:GetItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/*"
        }
```
+ CloudFormation 권한

```
        {
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateStack",
                "cloudformation:DeleteStack",
                "cloudformation:DescribeStacks",
                "cloudformation:UpdateStack",
                "cloudformation:ListStacks"
            ],
            "Resource": "arn:aws:cloudformation:*:*:stack/*/*"
        }
```
+ Service Catalog 앱 레지스트리 권한

```
        {
            "Effect": "Allow",
            "Action": [
                "servicecatalog:CreateApplication",
                "servicecatalog:DeleteApplication",
                "servicecatalog:GetApplication",
                "servicecatalog:TagResource",
                "servicecatalog:CreateAttributeGroup",
                "servicecatalog:DeleteAttributeGroup",
                "servicecatalog:GetAttributeGroup",
                "servicecatalog:AssociateAttributeGroup",
                "servicecatalog:DisassociateAttributeGroup",
                "servicecatalog:AssociateResource",
                "servicecatalog:DisassociateResource"
            ],
            "Resource": "arn:aws:servicecatalog:*:*:*"
        }
```
+ X-Ray 권한

```
        {
            "Effect": "Allow",
            "Action": [
                "xray:PutTraceSegments",
                "xray:PutTelemetryRecords"
            ],
            "Resource": "*"
        }
```
+ IAM 권한

```
        {
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:CreatePolicy",
                "iam:CreateRole",
                "iam:DeleteRole",
                "iam:DeleteRolePolicy",
                "iam:DetachRolePolicy",
                "iam:GetRole",
                "iam:GetRolePolicy",
                "iam:ListRoles",
                "iam:PassRole",
                "iam:PutRolePolicy"
            ],
            "Resource": "arn:aws:iam::*:role/*"
        }
```
+ EventBridge 권한

```
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:RemoveTargets",
                "events:DescribeRule",
                "events:EnableRule",
                "events:ListRules",
                "events:PutRule",
                "events:DeleteRule",
                "events:ListEventSources",
                "events:DescribeEventSource",
                "events:ActivateEventSource",
                "events:DeactivateEventSource"
            ],
            "Resource": "arn:aws:events:*:*:rule/*"
        }
```