

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

# 에서 Elastic Beanstalk 사용 AWS Identity and Access Management
<a name="AWSHowTo.iam"></a>

AWS Identity and Access Management (IAM)를 사용하면 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있습니다. 이 섹션에는 IAM 정책, 인스턴스 프로파일, 서비스 역할을 사용하기 위한 참조 자료가 포함되어 있습니다.

권한 개요는 [Elastic Beanstalk 서비스 역할, 인스턴스 프로파일, 사용자 정책](concepts-roles.md) 단원을 참조하세요. 대부분의 환경에서 환경을 처음 시작할 때 Elastic Beanstalk 콘솔에서 만들라고 요청하는 서비스 역할과 인스턴스 프로파일에 필요한 권한이 모두 있습니다. 마찬가지로 모든 액세스 및 읽기 전용 액세스에 대해 Elastic Beanstalk가 제공하는 [관리형 정책](AWSHowTo.iam.managed-policies.md)에 일상적 사용에 필요한 사용자 권한이 모두 포함되어 있습니다.

[IAM 사용 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMGettingStarted.html)는 AWS 권한에 대한 자세한 내용을 제공합니다.

**Topics**
+ [Elastic Beanstalk 인스턴스 프로파일 관리](iam-instanceprofile.md)
+ [Elastic Beanstalk 서비스 역할 관리](iam-servicerole.md)
+ [Elastic Beanstalk에 서비스 연결 역할 사용](using-service-linked-roles.md)
+ [Elastic Beanstalk 사용자 정책 관리](AWSHowTo.iam.managed-policies.md)
+ [Elastic Beanstalk의 Amazon 리소스 이름 형식](AWSHowTo.iam.policies.arn.md)
+ [Elastic Beanstalk 작업에 사용되는 리소스 및 조건](AWSHowTo.iam.policies.actions.md)
+ [태그를 사용하여 Elastic Beanstalk 리소스에 대한 액세스 제어](AWSHowTo.iam.policies.access-tags.md)
+ [관리형 정책에 기반한 정책 예제](ExamplePolicies_AEB.md)
+ [리소스 권한에 기반한 정책 예제](AWSHowTo.iam.example.resource.md)
+ [환경 간 Amazon S3 버킷 액세스 방지](AWSHowTo.iam.cross-env-s3-access.md)

# Elastic Beanstalk 인스턴스 프로파일 관리
<a name="iam-instanceprofile"></a>

인스턴스 프로파일은 인스턴스가 시작될 때 Amazon EC2 인스턴스에 역할 정보를 전달하는 데 사용할 수 있는 AWS Identity and Access Management (IAM) 역할의 컨테이너입니다.

 AWS 계정에 EC2 인스턴스 프로파일이 없는 경우 IAM 서비스를 사용하여 프로파일을 생성해야 합니다. 그런 다음 생성한 새 환경에 EC2 인스턴스 프로파일을 할당할 수 있습니다. Elastic Beanstalk 콘솔의 **환경 생성** 단계에서는 IAM 콘솔에 대한 액세스 권한을 제공하므로 필요한 권한이 포함된 EC2 인스턴스 프로파일을 생성할 수 있습니다.

**참고**  
이전에 Elastic Beanstalk는 AWS 계정이 환경을 `aws-elasticbeanstalk-ec2-role` 처음 생성할 때 라는 기본 EC2 인스턴스 프로파일을 생성했습니다. 이 인스턴스 프로파일에는 기본 관리형 정책이 포함되었습니다. 계정에 이미 이 인스턴스 프로파일이 있는 경우 사용자 환경에 계속 할당할 수 있습니다.  
그러나 최근 AWS 보안 지침에서는 AWS 서비스가 다른 AWS 서비스인 EC2에 대한 신뢰 정책이 있는 역할을 자동으로 생성하는 것을 허용하지 않습니다. 이러한 보안 지침 때문에 Elastic Beanstalk는 더 이상 기본 `aws-elasticbeanstalk-ec2-role` 인스턴스 프로파일을 생성하지 않습니다.



**관리형 정책**  
Elastic Beanstalk는 사용자 환경이 다양한 사용 사례를 충족할 수 있도록 여러 관리형 정책을 제공합니다. 환경의 기본 사용 사례를 충족하려면 이러한 정책을 EC2 인스턴스 프로파일의 역할에 연결해야 합니다.
+ **AWSElasticBeanstalkWebTier** – 애플리케이션에서 Amazon S3에 로그를 업로드하고 AWS X-Ray에 디버깅 정보를 업로드할 수 있는 권한을 부여합니다. 관리형 정책 콘텐츠를 확인하려면 *AWS  관리형 정책 참조 안내서*의 [AWSElasticBeanstalkWebTier](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkWebTier.html) 페이지를 참조하세요.
+ **AWSElasticBeanstalkWorkerTier** – 대기열 관리, 리더 선출, 정기적 작업을 비롯하여 로그 업로드, 디버깅, 측정치 게시, 작업자 인스턴스 작업 등에 대한 권한을 부여합니다. 관리형 정책 콘텐츠를 확인하려면 *AWS  관리형 정책 참조 안내서*의 [AWSElasticBeanstalkWorkerTier](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkWorkerTier.html) 페이지를 참조하세요.
+ **AWSElasticBeanstalkMulticontainerDocker** – Amazon Elastic Container Service에서 Docker 환경의 클러스터 작업을 조정할 수 있는 권한을 부여합니다. 관리형 정책 콘텐츠를 확인하려면 *AWS  관리형 정책 참조 안내서*의 [AWSElasticBeanstalkMulticontainerDocker](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkMulticontainerDocker.html) 페이지를 참조하세요.



**중요**  
Elastic Beanstalk 관리형 정책은 세부 권한을 부여하지 않으며, Elastic Beanstalk 애플리케이션 작업에 잠재적으로 필요할 수 있는 모든 권한을 부여합니다. 경우에 따라 관리형 정책의 권한을 추가로 제한할 수 있습니다. 한 사용 사례의 예제는 [환경 간 Amazon S3 버킷 액세스 방지](AWSHowTo.iam.cross-env-s3-access.md) 단원을 참조하세요.  
관리형 정책은 사용자가 솔루션에 추가하여 Elastic Beanstalk가 관리하지 않는 사용자 지정 리소스에 대한 권한도 다루지 않습니다. 사용 권한, 최소 필수 권한 또는 사용자 지정 리소스 권한을 세부적으로 설정하려면 [사용자 지정 정책](AWSHowTo.iam.managed-policies.md#AWSHowTo.iam.policies)을 사용합니다.

**EC2에 대한 신뢰 관계 정책**  
환경의 EC2 인스턴스에서 필수적인 역할을 수임하도록 허용하려면 다음과 같이 인스턴스 프로파일에서 Amazon EC2를 신뢰 관계 정책의 신뢰할 수 있는 엔터티로 지정해야 합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

권한을 사용자 지정하려면 정책을 기본 인스턴스 프로파일에 연결된 역할에 추가하거나 제한된 권한 세트를 보유한 인스턴스 프로파일을 직접 생성합니다.

[AI 기반 환경 분석](health-ai-analysis.md) 기능을 사용하려면 인스턴스 프로파일에 `bedrock:InvokeModel`, `bedrock:ListFoundationModels``elasticbeanstalk:DescribeEvents`, 및 `elasticbeanstalk:DescribeEnvironmentHealth` 권한을 추가합니다. 이러한 권한을 통해 Elastic Beanstalk는 Amazon Bedrock을 사용하고 환경 데이터에 액세스하여 로그, 이벤트 및 인스턴스 상태를 분석할 수 있습니다.

**Topics**
+ [인스턴스 프로파일 생성](#iam-instanceprofile-create)
+ [기본 인스턴스 프로파일에 권한 추가](#iam-instanceprofile-addperms)
+ [사용자 인스턴스 프로파일에 할당된 권한 확인](#iam-instanceprofile-verify)
+ [만료된 기본 인스턴스 프로파일 업데이트](#iam-instanceprofile-update)

## 인스턴스 프로파일 생성
<a name="iam-instanceprofile-create"></a>

인스턴스 프로파일은 표준 IAM 역할을 둘러싼 래퍼로서 EC2 인스턴스에서 역할을 수임하도록 허용합니다. 기본 Elastic Beanstalk 관리형 정책이 포함된 인스턴스 프로파일을 생성할 수 있습니다. 추가 인스턴스 프로파일을 만들어 다양한 애플리케이션에 대한 권한을 사용자 지정할 수도 있습니다. 또는 해당 기능을 사용하지 않는 경우 작업자 계층 또는 ECS 관리형 Docker 환경에 대한 권한을 부여하는 두 개의 관리형 정책이 포함되지 않은 인스턴스 프로파일을 만들 수 있습니다.

**기본 관리형 정책이 포함된 인스턴스 프로파일을 생성하려면**

1. IAM 콘솔에서 [**역할(Roles)** 페이지](https://console.aws.amazon.com/iam/home#roles)를 엽니다.

1. **역할 생성(Create role)**을 선택합니다.

1. **신뢰할 수 있는 엔터티 유형**에서 **AWS 서비스**를 선택합니다.

1. **서비스 또는 사용 사례**에서 **Elastic Beanstalk**를 선택하세요.

1. **사용 사례**에서 **Elastic Beanstalk – 컴퓨팅**을 선택합니다.

1. **다음**을 선택합니다.

1. **역할 이름**을 입력합니다.

   Elastic Beanstalk 콘솔이 제안하는 기본 역할 이름 `aws-elasticbeanstalk-ec2-role`을 입력할 수 있습니다.

1. **권한 정책**에 다음이 포함되어 있는지 확인한 후 **다음**을 선택합니다.
   + `AWSElasticBeanstalkWebTier`
   + `AWSElasticBeanstalkWorkerTier`
   + `AWSElasticBeanstalkMulticontainerDocker`

1. **역할 생성**을 선택합니다.

**선택한 관리형 정책이 포함된 인스턴스 프로파일을 생성하려면**

1. IAM 콘솔에서 [**역할(Roles)** 페이지](https://console.aws.amazon.com/iam/home#roles)를 엽니다.

1. **역할 생성**을 선택합니다.

1. **신뢰할 수 있는 엔터티 유형**에서 **AWS 서비스**를 선택합니다.

1. **사용 사례**에서 **EC2**를 선택합니다.

1. **다음**을 선택합니다.

1. Elastic Beanstalk에서 제공되는 적절한 관리형 정책과 애플리케이션에 필요한 권한을 제공하는 추가 정책을 연결합니다.

1. **다음**을 선택합니다.

1. 역할 이름을 입력합니다.

1. (선택 사항) 태그를 역할에 추가합니다.

1. **역할 생성**을 선택합니다.

## 기본 인스턴스 프로파일에 권한 추가
<a name="iam-instanceprofile-addperms"></a>

애플리케이션이 기본 인스턴스 프로파일에서 권한이 부여되지 않은 AWS APIs 또는 리소스에 액세스하는 경우 IAM 콘솔에서 권한을 부여하는 정책을 추가합니다.

**기본 인스턴스 프로파일에 연결된 역할에 정책을 추가하려면**

1. IAM 콘솔에서 [역할(Roles)](https://console.aws.amazon.com/iam/home#roles) 페이지를 엽니다.

1. EC2 인스턴스 프로파일로 할당된 역할을 선택합니다.

1. **권한** 탭에서 **정책 연결**을 선택합니다.

1. 애플리케이션이 사용하는 추가 서비스의 관리형 정책을 선택합니다. 예: `AmazonS3FullAccess` 또는 `AmazonDynamoDBFullAccess`.

1. **정책 연결(Attach policies)**을 선택합니다.

## 사용자 인스턴스 프로파일에 할당된 권한 확인
<a name="iam-instanceprofile-verify"></a>

기본 인스턴스 프로파일에 할당된 권한은 만들어진 시기, 환경을 마지막으로 시작한 시간, 사용한 클라이언트 등에 따라 다를 수 있습니다. IAM 콘솔에서 기본 인스턴스 프로파일의 권한을 확인할 수 있습니다.

**기본 인스턴스 프로파일의 권한을 확인하려면**

1. IAM 콘솔에서 [**역할(Roles)** 페이지](https://console.aws.amazon.com/iam/home#roles)를 엽니다.

1. EC2 인스턴스 프로파일로 할당된 역할을 선택합니다.

1. **권한** 탭에서 역할에 연결된 정책 목록을 검토합니다.

1. 정책이 부여하는 권한을 보려면 해당 정책을 선택합니다.

## 만료된 기본 인스턴스 프로파일 업데이트
<a name="iam-instanceprofile-update"></a>

기본 인스턴스 프로파일에 필요한 권한이 없는 경우 EC2 인스턴스 프로파일에 할당된 역할에 관리형 정책을 수동으로 추가할 수 있습니다.

**기본 인스턴스 프로파일에 연결된 역할에 관리형 정책을 추가하려면**

1. IAM 콘솔에서 [**역할(Roles)** 페이지](https://console.aws.amazon.com/iam/home#roles)를 엽니다.

1. EC2 인스턴스 프로파일로 할당된 역할을 선택합니다.

1. **권한** 탭에서 **정책 연결**을 선택합니다.

1. **AWSElasticBeanstalk**를 입력하여 정책을 필터링합니다.

1. 다음 정책을 선택한 후 **정책 연결**을 선택합니다.
   + `AWSElasticBeanstalkWebTier`
   + `AWSElasticBeanstalkWorkerTier`
   + `AWSElasticBeanstalkMulticontainerDocker`

# Elastic Beanstalk 서비스 역할 관리
<a name="iam-servicerole"></a>

환경을 관리하고 모니터링하기 위해는 사용자를 대신하여 환경 리소스에 대한 작업을 AWS Elastic Beanstalk 수행합니다. Elastic Beanstalk는 이러한 작업을 수행하기 위해 특정 권한이 필요하며 이러한 권한을 얻기 위해 AWS Identity and Access Management (IAM) 서비스 역할을 수임합니다.

Elastic Beanstalk가 서비스 역할을 수행할 때마다 임시 보안 인증 증명을 사용해야 합니다. 이 보안 인증을 받기 위해 Elastic Beanstalk는 리전별 엔드포인트의 AWS Security Token Service (AWS STS)에 요청을 전송합니다. 자세한 내용은 *IAM 사용 설명서*의 [임시 보안 자격 증명](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)을 참조하세요.

**참고**  
환경이 위치한 리전의 AWS STS 엔드포인트가 비활성화된 경우 Elastic Beanstalk는 비활성화할 수 없는 대체 엔드포인트에 요청을 보냅니다. 해당 엔드포인트는 다른 리전과 연결되어 있습니다. 따라서 교차 리전 요청을 형성합니다. 자세한 내용은 *IAM 사용 설명서*의 [AWS 리전 AWS STS 에서 활성화 및 비활성화](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html)를 참조하세요.

## Elastic Beanstalk 콘솔 및 EB CLI를 통한 서비스 역할 관리
<a name="iam-servicerole-console"></a>

Elastic Beanstalk 콘솔 및 EB CLI를 통해 충분한 권한을 가진 환경 서비스 역할을 설정할 수 있습니다. 기본 서비스 역할을 생성하고 이 역할의 관리형 정책을 적용합니다.

### 관리형 서비스 역할 정책
<a name="iam-servicerole-policy"></a>

Elastic Beanstalk는 [개선 상태 모니터링](health-enhanced.md)을 위한 관리형 정책과 [관리형 플랫폼 업데이트](environment-platform-update-managed.md)에 필요하며 추가 권한을 보유한 또 다른 관리형 정책을 제공합니다. 콘솔 및 EB CLI는 사용자를 대신하여 생성한 기본 서비스 역할에 이 두 정책을 모두 할당합니다. 이러한 정책은 이 기본 서비스 역할에만 사용해야 합니다. 계정의 다른 사용자와 또는 역할과 함께 사용해서는 안 됩니다.

#### `AWSElasticBeanstalkEnhancedHealth`
<a name="iam-servicerole-policy.health"></a>

이 정책은 Elastic Beanstalk에 인스턴스 및 환경 상태를 모니터링할 권한을 부여합니다. 여기에는 Elastic Beanstalk에서 작업자 환경의 대기열 활동을 모니터링할 수 있도록 하는 Amazon SQS 작업도 포함되어 있습니다. 관리형 정책 콘텐츠를 확인하려면 관리형 *AWS 정책 참조 가이드*의 [ AWSElasticBeanstalkEnhancedHealth](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkEnhancedHealth.html) 페이지를 참조하세요.

#### `AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy`
<a name="iam-servicerole-policy.service"></a>

이 정책은 Elastic Beanstalk에 관리형 플랫폼 업데이트를 수행하도록 사용자를 대신해 환경을 업데이트할 권한을 부여합니다. 관리형 정책 콘텐츠를 확인하려면 관리형 *AWS 정책 참조 가이드*의 [AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy.html) 페이지를 참조하세요.

**서비스 수준 사용 권한 그룹화**

이 정책은 제공된 권한에 따라 명령문으로 그룹화됩니다.
+ *`ElasticBeanstalkPermissions`* – 이 권한 그룹은 Elastic Beanstalk 서비스 작업(Elastic Beanstalk API)을 호출하는 데 사용됩니다.
+ *`AllowPassRoleToElasticBeanstalkAndDownstreamServices`* – 이 권한 그룹을 사용하면 Elastic Beanstalk 및 CloudFormation같은 다른 다운스트림 서비스로 역할을 전달할 수 있습니다.
+ *`ReadOnlyPermissions`* – 이 권한 그룹은 실행 중인 환경 정보를 수집하는 데 사용됩니다.
+ *`*OperationPermissions`* – 이 이름 지정 패턴을 사용하는 그룹은 플랫폼 업데이트를 수행하기 위해 필요한 작업을 호출하는 데 사용됩니다.
+ *`*BroadOperationPermissions`* – 이 이름 지정 패턴을 사용하는 그룹은 플랫폼 업데이트를 수행하기 위해 필요한 작업을 호출하는 데 사용됩니다. 또한, 레거시 환경을 지원하기 위한 광범위한 권한도 포함합니다.
+ *`*TagResource`* – 이 이름 지정 패턴을 사용하는 그룹은 Tag-on-create API를 사용하여 Elastic Beanstalk 환경에서 생성되는 리소스에 태그를 첨부하는 호출을 하는 데 사용됩니다.

관리형 정책의 내용을 보려면 IAM 콘솔에서 [**정책** 페이지](https://console.aws.amazon.com/iam/home#policies)를 확인할 수도 있습니다.

**중요**  
Elastic Beanstalk 관리형 정책은 세부 권한을 부여하지 않으며, Elastic Beanstalk 애플리케이션 작업에 잠재적으로 필요할 수 있는 모든 권한을 부여합니다. 경우에 따라 관리형 정책의 권한을 추가로 제한할 수 있습니다. 한 사용 사례의 예제는 [환경 간 Amazon S3 버킷 액세스 방지](AWSHowTo.iam.cross-env-s3-access.md) 단원을 참조하세요.  
관리형 정책은 사용자가 솔루션에 추가하여 Elastic Beanstalk가 관리하지 않는 사용자 지정 리소스에 대한 권한도 다루지 않습니다. 사용 권한, 최소 필수 권한 또는 사용자 지정 리소스 권한을 세부적으로 설정하려면 [사용자 지정 정책](AWSHowTo.iam.managed-policies.md#AWSHowTo.iam.policies)을 사용합니다.

**사용되지 않는 관리형 정책**  
이전에는 Elastic Beanstalk가 **AWSElasticBeanstalkService** 관리형 서비스 역할 정책을 지원했습니다. 이 정책은 **AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy**로 대체되었습니다. IAM 콘솔에서 이전 정책을 계속하여 확인하거나 사용할 수 있습니다.

관리형 정책 콘텐츠를 확인하려면 *AWS  관리형 정책 참조 안내서*의 [AWSElasticBeanstalkService](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkService.html) 페이지를 참조하세요.

그러나 새 관리형 정책(**AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy**)으로 전환하여 사용하는 것이 좋습니다. 사용자 지정 리소스가 있는 경우 해당 리소스에 권한을 부여한 사용자가 지정 정책을 추가합니다.

### Elastic Beanstalk 콘솔 사용
<a name="iam-servicerole-console"></a>

Elastic Beanstalk 콘솔에서 환경을 시작하면 콘솔이 `aws-elasticbeanstalk-service-role`이라는 기본 서비스 역할을 생성하며, 이 서비스 역할에 기본 권한이 있는 관리형 정책을 연결합니다.

서비스 역할은 Elastic Beanstalk가 `aws-elasticbeanstalk-service-role` 역할을 수행할 수 있도록 Elastic Beanstalk를 신뢰 관계 정책의 신뢰할 수 있는 엔터티로 지정합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Sid": "",
        "Effect": "Allow",
        "Principal": {
          "Service": "elasticbeanstalk.amazonaws.com"
        },
        "Action": "sts:AssumeRole",
        "Condition": {
          "StringEquals": {
            "sts:ExternalId": "elasticbeanstalk"
          }
        }
      }
    ]
}
```

------

환경에 [관리형 플랫폼 업데이트](environment-platform-update-managed.md)를 활성화하면 Elastic Beanstalk는 관리형 업데이트를 수행하기 위해 별도의 관리형 업데이트 서비스 역할을 수임합니다. 기본적으로 Elastic Beanstalk 콘솔은 동일하게 생성된 서비스 역할인 `aws-elasticbeanstalk-service-role`을 관리형 업데이트 서비스 역할으로 사용합니다. 기본 서비스 역할을 변경하면 콘솔은 관리형 업데이트 서비스 역할을 설정하여 관리형 업데이트 서비스 연결 역할인 `AWSServiceRoleForElasticBeanstalkManagedUpdates`를 사용합니다. 서비스 연결 역할에 대한 자세한 내용은 [서비스 연결 역할 사용](#iam-servicerole-slr)을 참조하세요.

**참고**  
Elastic Beanstalk 서비스는 권한 문제로 인해 이러한 서비스로의 자동 연결 및 생성을 실패할 수도 있습니다. 이로 인해 콘솔은 이러한 역할을 명시적으로 생성하려고 시도합니다. 계정에 해당 서비스 연결 역할이 있는지 확인하려면 콘솔을 사용하여 한 번 이상 환경을 생성하고, 또한 환경을 생성하기 전 관리형 업데이트가 활성화되도록 구성합니다.

### EB CLI 사용
<a name="iam-servicerole-ebcli"></a>

Elastic Beanstalk 명령줄 인터페이스(EB CLI)의 [**eb create**](eb3-create.md) 명령을 통해 환경을 시작할 때 `--service-role` 옵션으로 서비스 역할을 지정하지 않을 경우 Elastic Beanstalk는 기본 서비스 역할(`aws-elasticbeanstalk-service-role`)을 생성합니다. 기본 서비스 역할이 이미 존재하는 경우 Elastic Beanstalk에서는 새 환경에 기본 서비스 역할을 사용합니다. 이러한 상황에서 Elastic Beanstalk 콘솔 또한 유사한 작업을 수행합니다.

콘솔과 달리, EB CLI 명령 옵션을 사용하는 경우 관리형 업데이트 서비스 역할을 지정할 수는 없습니다. 환경 관리형 업데이트를 활성화하는 경우 구성 옵션으로 관리형 업데이트 서비스 역할을 설정합니다. 다음 예제는 관리형 업데이트를 활성화하고 기본 서비스 역할을 관리형 업데이트 서비스 역할로 사용합니다.

**Example .ebextensions/managed-platform-update.config**  

```
option_settings:
  aws:elasticbeanstalk:managedactions:
    ManagedActionsEnabled: true
    PreferredStartTime: "Tue:09:00"
    ServiceRoleForManagedUpdates: "aws-elasticbeanstalk-service-role"
  aws:elasticbeanstalk:managedactions:platformupdate:
    UpdateLevel: patch
    InstanceRefreshEnabled: true
```

## Elastic Beanstalk API를 사용한 서비스 역할 관리
<a name="iam-servicerole-api"></a>

Elastic Beanstalk API의 `CreateEnvironment` 작업으로 환경을 생성하는 경우 `aws:elasticbeanstalk:environment` 네임스페이스의 `ServiceRole` 구성 옵션을 통해 서비스 역할을 지정합니다. Elastic Beanstalk API의 개선 상태 모니터링 사용법에 대한 자세한 내용은 [Elastic Beanstalk API로 확장 상태 보고 사용](health-enhanced-api.md)을 참조하세요.

또한 환경에 [관리형 플랫폼 업데이트](environment-platform-update-managed.md)를 활성화하는 경우 `aws:elasticbeanstalk:managedactions` 네임스페이스의 `ServiceRoleForManagedUpdates` 옵션을 통해 관리형 업데이트 서비스 역할을 지정할 수 있습니다.

## 서비스 연결 역할 사용
<a name="iam-servicerole-slr"></a>

서비스 연결 역할은 서비스가 사용자를 대신하여 다른 서비스를 호출하는 데 필요한 모든 권한을 포함하도록 Elastic Beanstalk에서 사전 정의한 고유한 유형의 AWS 서비스 역할입니다. 서비스 연결 역할은 계정에 연결됩니다. Elastic Beanstalk는 이 역할을 일 회 생성한 후, 추가 환경을 생성할 때 재사용합니다. Elastic Beanstalk 환경에서의 서비스 연결 역할 사용법에 대한 자세한 내용은 [Elastic Beanstalk에 서비스 연결 역할 사용](using-service-linked-roles.md)을 참조하세요.

Elastic Beanstalk API으로 환경을 생성하고 서비스 역할을 지정하지 않은 경우, Elastic Beanstalk는 계정에 대한 [모니터링 서비스 연결 역할](using-service-linked-roles-monitoring.md)(아직 없는 경우)을 생성합니다. Elastic Beanstalk는 새 환경에 이 역할을 사용합니다. 또한, IAM을 사용하여 계정으로의 모니터링 서비스 연결 역할을 사전 생성할 수도 있습니다. 계정에 이 역할이 있으면 이 역할을 통해 Elastic Beanstalk API, Elastic Beanstalk 콘솔 또는 EB CLI를 사용하여 환경을 생성할 수 있습니다.

환경에 대한 [관리형 플랫폼 업데이트](environment-platform-update-managed.md)를 활성화하고 `aws:elasticbeanstalk:managedactions` 네임스페이스의 `ServiceRoleForManagedUpdates` 옵션 값으로 `AWSServiceRoleForElasticBeanstalkManagedUpdates`을 지정하는 경우 Elastic Beanstalk는 계정의 [관리형 업데이트 서비스 연결 역할](using-service-linked-roles-managedupdates.md)(아직 없는 경우)을 생성합니다. Elastic Beanstalk는 이 역할을 통해 새 환경의 관리형 업데이트를 수행합니다.

**참고**  
환경 생성 과정 중 Elastic Beanstalk가 계정에 모니터링 및 관리형 업데이트 서비스 역할을 생성하려고 할 때 사용자는 `iam:CreateServiceLinkedRole` 권한이 있어야 합니다. 이 권한이 없으면 환경을 생성하지 못하며 이 문제를 설명하는 메시지가 표시됩니다.  
또는 서비스 연결 역할을 생성할 수 있는 권한을 가진 다른 사용자가 IAM을 통해 서비스 연결 역할을 사전에 생성할 수 있습니다. 이 방법을 사용할 경우 환경 생성의 `iam:CreateServiceLinkedRole` 권한이 필요하지 않습니다.

## 기본 서비스 역할 권한 확인
<a name="iam-servicerole-verify"></a>

기본 서비스 역할이 부여하는 권한은 생성 시점, 환경을 마지막으로 시작한 시간 및 사용한 클라이언트에 따라 다를 수 있습니다. IAM 콘솔에서 기본 서비스 역할이 부여하는 권한을 확인할 수 있습니다.

**기본 서비스 역할의 권한을 확인하려면**

1. IAM 콘솔에서 [**역할** 페이지](https://console.aws.amazon.com/iam/home#roles)를 엽니다.

1. **aws-elasticbeanstalk-service-role**을 선택합니다.

1. **권한** 탭에서 역할에 연결된 정책 목록을 검토합니다.

1. 정책이 부여하는 권한을 보려면 해당 정책을 선택합니다.

## 만료된 기본 서비스 역할 업데이트
<a name="iam-servicerole-update"></a>

기본 서비스 역할에 필요한 권한이 없는 경우 Elastic Beanstalk 환경 관리 콘솔에서 [새 환경을 생성](using-features.environments.md)하여 이를 업데이트할 수 있습니다.

또는 수동으로 기본 서비스 역할에 관리형 정책을 추가할 수도 있습니다.

**기본 서비스 역할에 관리형 정책을 추가하려면**

1. IAM 콘솔에서 [**역할** 페이지](https://console.aws.amazon.com/iam/home#roles)를 엽니다.

1. **aws-elasticbeanstalk-service-role**을 선택합니다.

1. **권한** 탭에서 **정책 연결**을 선택합니다.

1. **AWSElasticBeanstalk**를 입력하여 정책을 필터링합니다.

1. 다음 정책을 선택한 후 **정책 연결**을 선택합니다.
   + `AWSElasticBeanstalkEnhancedHealth`
   + `AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy`

## 기본 서비스 역할에 권한 추가
<a name="iam-servicerole-addperms"></a>

애플리케이션에 권한이 기본 서비스 역할에 포함되지 않은 AWS 리소스를 참조하는 구성 파일이 포함된 경우 Elastic Beanstalk에 추가 권한이 필요할 수 있습니다. 이러한 추가 권한은 관리형 업데이트를 수행하는 동안 구성 파일을 처리하고 그러한 참조를 해결하는 데 필요합니다. 권한이 없는 경우 업데이트를 할 수 없으며 Elastic Beanstalk는 필요한 권한을 나타내는 메시지를 반환합니다. 다음 단계에 따라 IAM 콘솔에서 기본 서비스 역할에 추가 서비스에 대한 권한을 추가합니다.

**기본 서비스 역할에 정책을 추가하려면**

1. IAM 콘솔에서 [**역할** 페이지](https://console.aws.amazon.com/iam/home#roles)를 엽니다.

1. **aws-elasticbeanstalk-service-role**을 선택합니다.

1. **권한** 탭에서 **정책 연결**을 선택합니다.

1. 애플리케이션이 사용하는 추가 서비스의 관리형 정책을 선택합니다. 예: `AmazonAPIGatewayAdministrator` 또는 `AmazonElasticFileSystemFullAccess`.

1. **정책 연결(Attach policies)**을 선택합니다.

## 서비스 역할 생성
<a name="iam-servicerole-create"></a>

기본 서비스 역할을 사용할 수 없는 경우 서비스 역할을 생성합니다.

**서비스 역할을 생성하려면**

1. IAM 콘솔에서 [**역할** 페이지](https://console.aws.amazon.com/iam/home#roles)를 엽니다.

1. **역할 생성**을 선택합니다.

1. **AWS 서비스**에서 **AWS Elastic Beanstalk**을(를) 선택한 후 사용 사례를 선택합니다.

1. **Next: Permissions(다음: 권한)**를 선택합니다.

1. `AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy` 및 `AWSElasticBeanstalkEnhancedHealth` 관리형 정책과 애플리케이션에 필요한 권한을 제공하는 모든 추가 정책을 연결합니다.

1. **다음: 태그**를 선택합니다.

1. (선택 사항) 태그를 역할에 추가합니다.

1. **다음: 검토**를 선택합니다.

1. 역할 이름을 입력합니다.

1. **역할 생성**을 선택합니다.

[환경 생성 마법사](environments-create-wizard.md) 또는 `eb create` 명령의 `--service-role` 옵션을 설정하여 환경을 생성할 때 사용자 지정 서비스 역할을 적용합니다.

# Elastic Beanstalk에 서비스 연결 역할 사용
<a name="using-service-linked-roles"></a>

AWS Elastic Beanstalk 는 AWS Identity and Access Management (IAM)[ 서비스 연결 역할을](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) 사용합니다. 서비스 연결 역할은 Elastic Beanstalk에 직접 연결된 고유한 유형의 IAM 역할입니다. 서비스 연결 역할은 Elastic Beanstalk에서 사전 정의하며 서비스가 사용자를 대신하여 다른 AWS 서비스를 호출하는 데 필요한 모든 권한을 포함합니다.

Elastic Beanstalk는 다음 몇 가지 유형의 서비스 연결 역할을 정의합니다.
+ *모니터링 서비스 연결 역할* – Elastic Beanstalk에서 실행 중인 환경의 상태를 모니터링하고 상태 이벤트 알림을 게시할 수 있습니다.
+ *유지 관리 서비스 연결 역할* – Elastic Beanstalk에서 실행 중인 환경에 대해 정기적인 유지 관리 작업을 수행할 수 있습니다.
+ *관리형 업데이트 서비스 연결 역할* – Elastic Beanstalk에서 실행 중인 환경의 예약된 플랫폼 업데이트를 수행할 수 있습니다.

**Topics**
+ [모니터링 서비스 연결 역할](using-service-linked-roles-monitoring.md)
+ [유지 관리 서비스 연결 역할](using-service-linked-roles-maintenance.md)
+ [관리형 업데이트 서비스 연결 역할](using-service-linked-roles-managedupdates.md)

# 모니터링 서비스 연결 역할
<a name="using-service-linked-roles-monitoring"></a>

AWS Elastic Beanstalk 는 AWS Identity and Access Management (IAM)[ 서비스 연결 역할을](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) 사용합니다. 서비스 연결 역할은 Elastic Beanstalk에 직접 연결된 고유한 유형의 IAM 역할입니다. 서비스 연결 역할은 Elastic Beanstalk에서 사전 정의하며 서비스가 사용자를 대신하여 다른 AWS 서비스를 호출하는 데 필요한 모든 권한을 포함합니다.

서비스 연결 역할을 사용하면 필요한 권한을 수동으로 추가할 필요가 없으므로 Elastic Beanstalk를 더 쉽게 설정할 수 있습니다. Elastic Beanstalk는 서비스 연결 역할의 권한을 정의하며, 달리 정의되지 않는 한 Elastic Beanstalk만 역할을 수임할 수 있습니다. 정의된 권한에는 신뢰 정책과 권한 정책이 포함되며 이 권한 정책은 다른 IAM 엔터티에 연결할 수 없습니다.

먼저 관련 리소스를 삭제한 후에만 서비스 연결 역할을 삭제할 수 있습니다. 이렇게 하면 Elastic Beanstalk 리소스에 대한 액세스 권한을 부주의로 삭제할 수 없기 때문에 리소스가 보호됩니다.

서비스 연결 역할을 지원하는 기타 서비스에 대한 자세한 내용은 [IAM으로 작업하는AWS 서비스](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)를 참조해 **서비스 연결 역할(Service-Linked Role)** 열이 **예(Yes)**인 서비스를 찾으세요. 해당 서비스에 대한 서비스 연결 역할 설명서를 보려면 **예** 링크를 선택합니다.

## Elastic Beanstalk에 대한 서비스 연결 역할 권한
<a name="service-linked-role-permissions-monitoring"></a>

Elastic Beanstalk가 **AWSServiceRoleForElasticBeanstalk**라는 서비스 연결 역할(Elastic Beanstalk에서 실행 중인 환경의 상태를 모니터링하고 상태 이벤트 알림을 게시할 수 있음)을 사용합니다.

AWSServiceRoleForElasticBeanstalk 서비스 연결 역할은 역할을 수임하기 위해 다음 서비스를 신뢰합니다.
+ `elasticbeanstalk.amazonaws.com`

AWSServiceRoleForElasticBeanstalk 서비스 연결 역할의 권한 정책에는 Elastic Beanstalk에서 사용자를 대신해 작업을 완료하는 데 필요한 모든 권한이 포함되어 있습니다.

### AllowCloudformationReadOperationsOnElasticBeanstalkStacks
<a name="service-linked-role-permissions-monitoringmonitoring.policy-source"></a>

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCloudformationReadOperationsOnElasticBeanstalkStacks",
            "Effect": "Allow",
            "Action": [
                "cloudformation:DescribeStackResource",
                "cloudformation:DescribeStackResources",
                "cloudformation:DescribeStacks"
            ],
            "Resource": [
                "arn:aws:cloudformation:*:*:stack/awseb-*",
                "arn:aws:cloudformation:*:*:stack/eb-*"
            ]
        },
        {
            "Sid": "AllowOperations",
            "Effect": "Allow",
            "Action": [
                "autoscaling:DescribeAutoScalingGroups",
                "autoscaling:DescribeAutoScalingInstances",
                "autoscaling:DescribeNotificationConfigurations",
                "autoscaling:DescribeScalingActivities",
                "autoscaling:PutNotificationConfiguration",
                "ec2:DescribeInstanceStatus",
                "ec2:AssociateAddress",
                "ec2:DescribeAddresses",
                "ec2:DescribeInstances",
                "ec2:DescribeSecurityGroups",
                "elasticloadbalancing:DescribeInstanceHealth",
                "elasticloadbalancing:DescribeLoadBalancers",
                "elasticloadbalancing:DescribeTargetHealth",
                "elasticloadbalancing:DescribeTargetGroups",
                "sqs:GetQueueAttributes",
                "sqs:GetQueueUrl",
                "sns:Publish"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

IAM 엔터티(사용자, 그룹, 역할 등)가 서비스 연결 역할을 생성하고 편집하거나 삭제할 수 있도록 권한을 구성할 수 있습니다. 자세한 내용은 IAM 사용 설명서**의 [서비스 연결 역할 권한](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions) 섹션을 참조하세요.

또는 AWS 관리형 정책을 사용하여 Elastic Beanstalk에 대한 [전체 액세스를 제공할](AWSHowTo.iam.managed-policies.md) 수 있습니다.

## Elastic Beanstalk에 대한 서비스 연결 역할 생성
<a name="create-service-linked-role-monitoring"></a>

서비스 연결 역할은 수동으로 생성할 필요가 없습니다. Elastic Beanstalk API를 사용하여 Elastic Beanstalk 환경을 생성한 후 서비스 역할을 지정하지 않으면 Elastic Beanstalk에서 서비스 연결 역할이 생성됩니다.

**중요**  
 AWSServiceRoleForElasticBeanstalk 서비스 연결 역할을 지원하기 시작한 2017년 9월 27일 이전에 Elastic Beanstalk 서비스를 사용 중이었고 계정에서 이 서비스가 필요했다면 Elastic Beanstalk가 계정에 AWSServiceRoleForElasticBeanstalk 역할을 생성했습니다. 자세한 내용은 [내 IAM 계정에 표시되는 새 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared)을 참조하세요.

환경 생성 시 Elastic Beanstalk가 계정에 대한 AWSServiceRoleForElasticBeanstalk 서비스 역할을 생성하려고 할 때 사용자에게 `iam:CreateServiceLinkedRole` 권한이 있어야 합니다. 이 권한이 없으면 환경 생성이 실패하며 이 문제에 대한 메시지가 표시됩니다.

또는 서비스 연결 역할을 생성할 수 있는 권한을 가진 다른 사용자가 IAM을 사용하여 사전에 서비스 연결 역할을 미리 생성할 수 있습니다. 그러면 `iam:CreateServiceLinkedRole` 권한이 없어도 환경을 생성할 수 있습니다.

사용자(또는 다른 사용자)가 IAM 콘솔을 사용하여 **Elastic Beanstalk** 사용 사례로 서비스 연결 역할을 생성할 수 있습니다. IAM CLI 또는 IAM API에서 `elasticbeanstalk.amazonaws.com` 서비스 이름의 서비스 연결 역할을 생성합니다. 자세한 내용은 *IAM 사용 설명서*의 [서비스 연결 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#create-service-linked-role) 섹션을 참조하세요. 이 서비스 연결 역할을 삭제하면 동일한 프로세스를 사용하여 역할을 다시 생성할 수 있습니다.

이 서비스 연결 역할을 삭제했다가 다시 생성해야 하는 경우 동일한 프로세스를 사용하여 계정에서 역할을 다시 생성할 수 있습니다. Elastic Beanstalk API를 사용하여 Elastic Beanstalk 환경을 생성한 후 서비스 역할을 지정하지 않으면 Elastic Beanstalk에서 서비스 연결 역할이 다시 생성됩니다.

## Elastic Beanstalk에 대한 서비스 연결 역할 편집
<a name="edit-service-linked-role-monitoring"></a>

Elastic Beanstalk에서는 AWSServiceRoleForElasticBeanstalk 서비스 연결 역할을 편집할 수 없습니다. 서비스 연결 역할을 생성한 후에는 다양한 개체가 역할을 참조할 수 있기 때문에 역할 이름을 변경할 수 없습니다. 하지만 IAM을 사용하여 역할의 설명을 편집할 수 있습니다. 자세한 내용은 *IAM 사용 설명서*의 [서비스 연결 역할 편집](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)을 참조하세요.

## Elastic Beanstalk에 대한 서비스 연결 역할 삭제
<a name="delete-service-linked-role-monitoring"></a>

서비스 연결 역할이 필요한 기능 또는 서비스가 더 이상 필요 없는 경우에는 해당 역할을 삭제하는 것이 좋습니다. 따라서 적극적으로 모니터링하거나 유지하지 않는 미사용 엔터티가 없도록 합니다. 단, 서비스 연결 역할에 대한 리소스를 먼저 정리해야 수동으로 삭제할 수 있습니다.

### 서비스 연결 역할을 정리
<a name="service-linked-role-review-before-delete-monitoring"></a>

IAM을 사용하여 서비스 연결 역할을 삭제하려면 먼저 모든 Elastic Beanstalk 환경에서 다른 서비스 역할을 사용하고 있거나 종료되었는지 확인해야 합니다.

**참고**  
환경을 종료하려 할 때 Elastic Beanstalk 서비스가 서비스 연결 역할을 사용 중이면 종료에 실패할 수 있습니다. 이 문제가 발생하면 몇 분 기다렸다가 작업을 다시 시도하세요.

**AWSServiceRoleForElasticBeanstalk를 사용하는 Elastic Beanstalk 환경을 종료하려면(콘솔)**

1. [Elastic Beanstalk 콘솔](https://console.aws.amazon.com/elasticbeanstalk)을 열고 **리전** 목록에서를 선택합니다 AWS 리전.

1. 탐색 창에서 **환경**을 선택한 다음 목록에서 환경의 이름을 선택합니다.

1. **작업(Actions)**을 선택한 후 **환경 종료(Terminate Environment)**를 선택합니다.

1. 화면에 표시되는 대화 상자를 사용하여 환경 종료를 확인합니다.

EB CLI를 사용하여 Elastic Beanstalk 환경을 종료하는 방법에 대한 자세한 내용은 [**eb terminate**](eb3-terminate.md) 단원을 참조하세요.

API를 사용하여 Elastic Beanstalk 환경을 종료하는 방법에 대한 자세한 내용은 [TerminateEnvironment](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_TerminateEnvironment.html)를 참조하세요.

### 수동으로 서비스 연결 역할 삭제
<a name="slr-manual-delete-monitoring"></a>

IAM 콘솔, IAM CLI 또는 IAM API를 사용하여 AWSServiceRoleForElasticBeanstalk 서비스 연결 역할을 삭제합니다. 자세한 내용은 *IAM 사용 설명서*의 [서비스 연결 역할 삭제](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)를 참조하세요.

## Elastic Beanstalk 서비스 연결 역할을 지원하는 리전
<a name="slr-regions-monitoring"></a>

Elastic Beanstalk에서는 서비스가 제공되는 모든 리전에서 서비스 연결 역할을 사용하도록 지원합니다. 자세한 내용은 [AWS Elastic Beanstalk 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/elasticbeanstalk.html)을 참조하세요.

# 유지 관리 서비스 연결 역할
<a name="using-service-linked-roles-maintenance"></a>

AWS Elastic Beanstalk 는 AWS Identity and Access Management (IAM)[ 서비스 연결 역할을](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) 사용합니다. 서비스 연결 역할은 Elastic Beanstalk에 직접 연결된 고유한 유형의 IAM 역할입니다. 서비스 연결 역할은 Elastic Beanstalk에서 사전 정의하며 서비스가 사용자를 대신하여 다른 AWS 서비스를 호출하는 데 필요한 모든 권한을 포함합니다.

서비스 연결 역할을 사용하면 필요한 권한을 수동으로 추가할 필요가 없으므로 Elastic Beanstalk를 더 쉽게 설정할 수 있습니다. Elastic Beanstalk는 서비스 연결 역할의 권한을 정의하며, 달리 정의되지 않는 한 Elastic Beanstalk만 역할을 수임할 수 있습니다. 정의된 권한에는 신뢰 정책과 권한 정책이 포함되며 이 권한 정책은 다른 IAM 엔터티에 연결할 수 없습니다.

먼저 관련 리소스를 삭제한 후에만 서비스 연결 역할을 삭제할 수 있습니다. 이렇게 하면 Elastic Beanstalk 리소스에 대한 액세스 권한을 부주의로 삭제할 수 없기 때문에 리소스가 보호됩니다.

서비스 연결 역할을 지원하는 기타 서비스에 대한 자세한 내용은 [IAM으로 작업하는AWS 서비스](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)를 참조해 **서비스 연결 역할(Service-Linked Role)** 열이 **예(Yes)**인 서비스를 찾으세요. 해당 서비스에 대한 서비스 연결 역할 설명서를 보려면 **예** 링크를 선택합니다.

## Elastic Beanstalk에 대한 서비스 연결 역할 권한
<a name="service-linked-role-permissions-maintenance"></a>

Elastic Beanstalk가 **AWSServiceRoleForElasticBeanstalkMaintenance**라는 서비스 연결 역할(Elastic Beanstalk에서 실행 중인 환경에 대한 정기적인 유지 관리 활동을 수행할 수 있음)을 사용합니다.

AWSServiceRoleForElasticBeanstalkMaintenance 서비스 연결 역할은 역할을 수임하기 위해 다음 서비스를 신뢰합니다.
+ `maintenance.elasticbeanstalk.amazonaws.com`

AWSServiceRoleForElasticBeanstalkMaintenance 서비스 연결 역할의 권한 정책에는 Elastic Beanstalk에서 사용자를 대신해 작업을 완료하는 데 필요한 모든 권한이 포함되어 있습니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":
        {
            "Sid": "AllowCloudformationChangeSetOperationsOnElasticBeanstalkStacks",
            "Effect": "Allow",
            "Action": [
                "cloudformation:CreateChangeSet",
                "cloudformation:DescribeChangeSet",
                "cloudformation:ExecuteChangeSet",
                "cloudformation:DeleteChangeSet",
                "cloudformation:ListChangeSets",
                "cloudformation:DescribeStacks"
            ],
            "Resource": [
                "arn:aws:cloudformation:*:*:stack/awseb-*",
                "arn:aws:cloudformation:*:*:stack/eb-*"
            ]
        }
}
```

------

IAM 엔터티(사용자, 그룹, 역할 등)가 서비스 연결 역할을 생성하고 편집하거나 삭제할 수 있도록 권한을 구성할 수 있습니다. 자세한 내용은 IAM 사용 설명서**의 [서비스 연결 역할 권한](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions) 섹션을 참조하세요.

또는 AWS 관리형 정책을 사용하여 Elastic Beanstalk에 대한 [전체 액세스를 제공할](AWSHowTo.iam.managed-policies.md) 수 있습니다.

## Elastic Beanstalk에 대한 서비스 연결 역할 생성
<a name="create-service-linked-role-maintenance"></a>

서비스 연결 역할은 수동으로 생성할 필요가 없습니다. Elastic Beanstalk API를 사용하여 Elastic Beanstalk 환경을 생성하고 인스턴스 프로파일을 지정하지 않으면 Elastic Beanstalk에서 서비스 연결 역할을 생성합니다.

**중요**  
 이러한 서비스 연결 역할은 해당 역할이 지원하는 기능을 사용하는 다른 서비스에서 작업을 완료했을 경우 계정에 나타날 수 있습니다. AWSServiceRoleForElasticBeanstalkMaintenance 서비스 연결 역할을 지원하기 시작한 2019년 4월 18일 이전에 Elastic Beanstalk 서비스를 사용 중이었고 계정에서 이 서비스가 필요했다면 Elastic Beanstalk가 계정에 AWSServiceRoleForElasticBeanstalkMaintenance 역할을 생성했습니다. 자세한 내용은 [내 IAM 계정에 표시되는 새 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared)을 참조하세요.

이 서비스 연결 역할을 삭제했다가 다시 생성해야 하는 경우 동일한 프로세스를 사용하여 계정에서 역할을 다시 생성할 수 있습니다. Elastic Beanstalk API를 사용하여 Elastic Beanstalk 환경을 생성하고 인스턴스 프로파일을 지정하지 않으면 Elastic Beanstalk에서 서비스 연결 역할이 다시 생성됩니다.

## Elastic Beanstalk에 대한 서비스 연결 역할 편집
<a name="edit-service-linked-role-maintenance"></a>

Elastic Beanstalk에서는 AWSServiceRoleForElasticBeanstalkMaintenance 서비스 연결 역할을 편집할 수 없습니다. 서비스 연결 역할을 생성한 후에는 다양한 개체가 역할을 참조할 수 있기 때문에 역할 이름을 변경할 수 없습니다. 하지만 IAM을 사용하여 역할의 설명을 편집할 수 있습니다. 자세한 내용은 *IAM 사용 설명서*의 [서비스 연결 역할 편집](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)을 참조하세요.

## Elastic Beanstalk에 대한 서비스 연결 역할 삭제
<a name="delete-service-linked-role-maintenance"></a>

서비스 연결 역할이 필요한 기능 또는 서비스가 더 이상 필요 없는 경우에는 해당 역할을 삭제하는 것이 좋습니다. 따라서 적극적으로 모니터링하거나 유지하지 않는 미사용 엔터티가 없도록 합니다. 단, 서비스 연결 역할에 대한 리소스를 먼저 정리해야 수동으로 삭제할 수 있습니다.

### 서비스 연결 역할을 정리
<a name="service-linked-role-review-before-delete-maintenance"></a>

IAM을 사용하여 서비스 연결 역할을 삭제하기 전에 먼저 해당 역할을 사용하는 모든 Elastic Beanstalk 환경을 종료해야 합니다.

**참고**  
환경을 종료하려 할 때 Elastic Beanstalk 서비스가 서비스 연결 역할을 사용 중이면 종료에 실패할 수 있습니다. 이 문제가 발생하면 몇 분 기다렸다가 작업을 다시 시도하세요.

**AWSServiceRoleForElasticBeanstalkMaintenance를 사용하는 Elastic Beanstalk 환경을 종료하려면(콘솔)**

1. [Elastic Beanstalk 콘솔](https://console.aws.amazon.com/elasticbeanstalk)을 열고 **리전** 목록에서를 선택합니다 AWS 리전.

1. 탐색 창에서 **환경**을 선택한 다음 목록에서 환경의 이름을 선택합니다.

1. **작업(Actions)**을 선택한 후 **환경 종료(Terminate Environment)**를 선택합니다.

1. 화면에 표시되는 대화 상자를 사용하여 환경 종료를 확인합니다.

EB CLI를 사용하여 Elastic Beanstalk 환경을 종료하는 방법에 대한 자세한 내용은 [**eb terminate**](eb3-terminate.md) 단원을 참조하세요.

API를 사용하여 Elastic Beanstalk 환경을 종료하는 방법에 대한 자세한 내용은 [TerminateEnvironment](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_TerminateEnvironment.html)를 참조하세요.

### 수동으로 서비스 연결 역할 삭제
<a name="slr-manual-delete-maintenance"></a>

IAM 콘솔, IAM CLI 또는 IAM API를 사용하여 AWSServiceRoleForElasticBeanstalkMaintenance 서비스 연결 역할을 삭제합니다. 자세한 내용은 *IAM 사용 설명서*의 [서비스 연결 역할 삭제](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)를 참조하세요.

## Elastic Beanstalk 서비스 연결 역할을 지원하는 리전
<a name="slr-regions-maintenance"></a>

Elastic Beanstalk에서는 서비스가 제공되는 모든 리전에서 서비스 연결 역할을 사용하도록 지원합니다. 자세한 내용은 [AWS Elastic Beanstalk 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/elasticbeanstalk.html)을 참조하세요.

# 관리형 업데이트 서비스 연결 역할
<a name="using-service-linked-roles-managedupdates"></a>

AWS Elastic Beanstalk 는 AWS Identity and Access Management (IAM)[ 서비스 연결 역할을](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role) 사용합니다. 서비스 연결 역할은 Elastic Beanstalk에 직접 연결된 고유한 유형의 IAM 역할입니다. 서비스 연결 역할은 Elastic Beanstalk에서 사전 정의하며 서비스가 사용자를 대신하여 다른 AWS 서비스를 호출하는 데 필요한 모든 권한을 포함합니다.

서비스 연결 역할을 사용하면 필요한 권한을 수동으로 추가할 필요가 없으므로 Elastic Beanstalk를 더 쉽게 설정할 수 있습니다. Elastic Beanstalk는 서비스 연결 역할의 권한을 정의하며, 달리 정의되지 않는 한 Elastic Beanstalk만 역할을 수임할 수 있습니다. 정의된 권한에는 신뢰 정책과 권한 정책이 포함되며 이 권한 정책은 다른 IAM 엔터티에 연결할 수 없습니다.

먼저 관련 리소스를 삭제한 후에만 서비스 연결 역할을 삭제할 수 있습니다. 이렇게 하면 Elastic Beanstalk 리소스에 대한 액세스 권한을 부주의로 삭제할 수 없기 때문에 리소스가 보호됩니다.

서비스 연결 역할을 지원하는 기타 서비스에 대한 자세한 내용은 [IAM으로 작업하는AWS 서비스](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)를 참조해 **서비스 연결 역할(Service-Linked Role)** 열이 **예(Yes)**인 서비스를 찾으세요. 해당 서비스에 대한 서비스 연결 역할 설명서를 보려면 **예** 링크를 선택합니다.

## Elastic Beanstalk에 대한 서비스 연결 역할 권한
<a name="service-linked-role-permissions-managedupdates"></a>

Elastic Beanstalk가 **AWSServiceRoleForElasticBeanstalkManagedUpdates**라는 서비스 연결 역할(Elastic Beanstalk에서 실행 중인 환경의 예약된 플랫폼 업데이트를 수행할 수 있음)을 사용합니다.

AWSServiceRoleForElasticBeanstalkManagedUpdates 서비스 연결 역할은 역할을 수임하기 위해 다음 서비스를 신뢰합니다.
+ `managedupdates.elasticbeanstalk.amazonaws.com`

**AWSElasticBeanstalkManagedUpdatesServiceRolePolicy** 관리형 정책은 AWSServiceRoleForElasticBeanstalkManagedUpdates 서비스 연결 역할에 Elastic Beanstalk가 사용자를 대신하여 관리형 업데이트 작업을 완료하는 데 필요한 모든 권한을 허용합니다. 관리형 정책 콘텐츠를 확인하려면 관리형 *AWS 정책 참조 가이드*의 [AWSElasticBeanstalkManagedUpdatesServiceRolePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkManagedUpdatesServiceRolePolicy.html) 페이지를 참조하세요.

IAM 엔터티(사용자, 그룹, 역할 등)가 서비스 연결 역할을 생성하고 편집하거나 삭제할 수 있도록 권한을 구성할 수 있습니다. 자세한 내용은 IAM 사용 설명서**의 [서비스 연결 역할 권한](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions) 섹션을 참조하세요.

또는 AWS 관리형 정책을 사용하여 Elastic Beanstalk에 대한 [전체 액세스를 제공할](AWSHowTo.iam.managed-policies.md) 수 있습니다.

## Elastic Beanstalk에 대한 서비스 연결 역할 생성
<a name="create-service-linked-role-managedupdates"></a>

서비스 연결 역할은 수동으로 생성할 필요가 없습니다. Elastic Beanstalk API를 사용하여 Elastic Beanstalk 환경을 생성하고, 관리형 업데이트를 활성화하고, `aws:elasticbeanstalk:managedactions` 네임스페이스의 `ServiceRoleForManagedUpdates` 옵션 값으로 `AWSServiceRoleForElasticBeanstalkManagedUpdates`를 지정하면 Elastic Beanstalk에서 서비스 연결 역할이 생성됩니다.

환경 생성 시 Elastic Beanstalk가 계정에 대한 AWSServiceRoleForElasticBeanstalkManagedUpdates 서비스 역할을 생성하려고 할 때 사용자에게 `iam:CreateServiceLinkedRole` 권한이 있어야 합니다. 이 권한이 없으면 환경 생성이 실패하며 이 문제에 대한 메시지가 표시됩니다.

또는 서비스 연결 역할을 생성할 수 있는 권한을 가진 다른 사용자가 IAM을 사용하여 사전에 서비스 연결 역할을 미리 생성할 수 있습니다. 그러면 `iam:CreateServiceLinkedRole` 권한이 없어도 환경을 생성할 수 있습니다.

사용자(또는 다른 사용자)가 IAM 콘솔을 사용하여 **Elastic Beanstalk 관리형 업데이트** 사용 사례로 서비스 연결 역할을 생성할 수 있습니다. IAM CLI 또는 IAM API에서 `managedupdates.elasticbeanstalk.amazonaws.com` 서비스 이름의 서비스 연결 역할을 생성합니다. 자세한 내용은 *IAM 사용 설명서*의 [서비스 연결 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#create-service-linked-role) 섹션을 참조하세요. 이 서비스 연결 역할을 삭제하면 동일한 프로세스를 사용하여 역할을 다시 생성할 수 있습니다.

이 서비스 연결 역할을 삭제했다가 다시 생성해야 하는 경우 동일한 프로세스를 사용하여 계정에서 역할을 다시 생성할 수 있습니다. Elastic Beanstalk API를 사용하여 Elastic Beanstalk 환경을 생성하고, 관리형 업데이트를 활성화하고, `aws:elasticbeanstalk:managedactions` 네임스페이스의 `ServiceRoleForManagedUpdates` 옵션 값으로 `AWSServiceRoleForElasticBeanstalkManagedUpdates`를 지정하면 Elastic Beanstalk에서 서비스 연결 역할이 다시 생성됩니다.

## Elastic Beanstalk에 대한 서비스 연결 역할 편집
<a name="edit-service-linked-role-managedupdates"></a>

Elastic Beanstalk에서는 AWSServiceRoleForElasticBeanstalkManagedUpdates 서비스 연결 역할을 편집할 수 없습니다. 서비스 연결 역할을 생성한 후에는 다양한 개체가 역할을 참조할 수 있기 때문에 역할 이름을 변경할 수 없습니다. 하지만 IAM을 사용하여 역할의 설명을 편집할 수 있습니다. 자세한 내용은 *IAM 사용 설명서*의 [서비스 연결 역할 편집](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)을 참조하세요.

## Elastic Beanstalk에 대한 서비스 연결 역할 삭제
<a name="delete-service-linked-role-managedupdates"></a>

서비스 연결 역할이 필요한 기능 또는 서비스가 더 이상 필요 없는 경우에는 해당 역할을 삭제하는 것이 좋습니다. 따라서 적극적으로 모니터링하거나 유지하지 않는 미사용 엔터티가 없도록 합니다. 단, 서비스 연결 역할에 대한 리소스를 먼저 정리해야 수동으로 삭제할 수 있습니다.

### 서비스 연결 역할을 정리
<a name="service-linked-role-review-before-delete-managedupdates"></a>

IAM을 사용하여 서비스 연결 역할을 삭제하려면 먼저 관리형 업데이트가 활성화된 Elastic Beanstalk 환경에서 다른 서비스 역할을 사용하고 있거나 종료되었는지 확인해야 합니다.

**참고**  
환경을 종료하려 할 때 Elastic Beanstalk 서비스가 서비스 연결 역할을 사용 중이면 종료에 실패할 수 있습니다. 이 문제가 발생하면 몇 분 기다렸다가 작업을 다시 시도하세요.

**AWSServiceRoleForElasticBeanstalkManagedUpdates를 사용하는 Elastic Beanstalk 환경을 종료하려면(콘솔)**

1. [Elastic Beanstalk 콘솔](https://console.aws.amazon.com/elasticbeanstalk)을 열고 **리전** 목록에서를 선택합니다 AWS 리전.

1. 탐색 창에서 **환경**을 선택한 다음 목록에서 환경의 이름을 선택합니다.

1. **작업**을 선택한 후 **환경 종료**를 선택합니다.

1. 화면에 표시되는 대화 상자를 사용하여 환경 종료를 확인합니다.

EB CLI를 사용하여 Elastic Beanstalk 환경을 종료하는 방법에 대한 자세한 내용은 [**eb terminate**](eb3-terminate.md) 단원을 참조하세요.

API를 사용하여 Elastic Beanstalk 환경을 종료하는 방법에 대한 자세한 내용은 [TerminateEnvironment](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_TerminateEnvironment.html)를 참조하세요.

### 수동으로 서비스 연결 역할 삭제
<a name="slr-manual-delete-managedupdates"></a>

IAM 콘솔, IAM CLI 또는 IAM API를 사용하여 AWSServiceRoleForElasticBeanstalkManagedUpdates 서비스 연결 역할을 삭제합니다. 자세한 내용은 *IAM 사용 설명서*의 [서비스 연결 역할 삭제](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)를 참조하세요.

## Elastic Beanstalk 서비스 연결 역할을 지원하는 리전
<a name="slr-regions-managedupdates"></a>

Elastic Beanstalk에서는 서비스가 제공되는 모든 리전에서 서비스 연결 역할을 사용하도록 지원합니다. 자세한 내용은 [AWS Elastic Beanstalk 엔드포인트 및 할당량](https://docs.aws.amazon.com/general/latest/gr/elasticbeanstalk.html)을 참조하세요.

# Elastic Beanstalk 사용자 정책 관리
<a name="AWSHowTo.iam.managed-policies"></a>

AWS Elastic Beanstalk 는 Elastic Beanstalk가 관리하는 모든 리소스에 전체 액세스 또는 읽기 전용 액세스를 할당할 수 있는 두 가지 관리형 정책을 제공합니다. 정책을 AWS Identity and Access Management (IAM) 사용자 또는 그룹 또는 사용자가 맡은 역할에 연결할 수 있습니다.

**관리형 사용자 정책**
+ **AdministratorAccess-AWSElasticBeanstalk** — Elastic Beanstalk 애플리케이션, 애플리케이션 버전, 구성 설정, 환경, 환경의 기본 리소스를 생성, 수정 및 삭제할 수 있는 모든 관리 권한을 사용자에게 부여합니다. 관리형 정책 콘텐츠를 확인하려면 관리형 *정책 참조 안내서의* [AdministratorAccess-AWSElasticBeanstalk](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess-AWSElasticBeanstalk.html) 페이지를 참조하십시오.AWS 
+ **AWSElasticBeanstalkReadOnly** – 사용자가 애플리케이션과 환경을 확인할 수는 있지만 수정하는 작업은 금지 합니다. 모든 Elastic Beanstalk 리소스와 Elastic Beanstalk 콘솔이 검색하는 다른 AWS 리소스에 대한 읽기 전용 액세스를 제공합니다. 읽기 전용 액세스는 Elastic Beanstalk 로그를 읽을 수 있도록 하며, 로그 다운로드 등의 작업은 허용하지 않습니다. 이는 Elastic Beanstalk가 쓰기 권한을 필요로 하는 Amazon S3 버킷에서 로그가 준비되기 때문입니다. Elastic Beanstalk 로그 액세스를 허용하는 방법에 대한 자세한 내용은 본 설명 마지막 부분의 예제를 참조하세요. 관리형 정책 콘텐츠를 확인하려면 관리형 *정책 참조 안내서의* [AWSElasticBeanstalkReadOnly](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkReadOnly.html) 페이지를 참조하세요.AWS 

**중요**  
Elastic Beanstalk 관리형 정책은 세부 권한을 부여하지 않으며, Elastic Beanstalk 애플리케이션 작업에 잠재적으로 필요할 수 있는 모든 권한을 부여합니다. 경우에 따라 관리형 정책의 권한을 추가로 제한할 수 있습니다. 한 사용 사례의 예제는 [환경 간 Amazon S3 버킷 액세스 방지](AWSHowTo.iam.cross-env-s3-access.md) 단원을 참조하세요.  
관리형 정책은 사용자가 솔루션에 추가하여 Elastic Beanstalk가 관리하지 않는 사용자 지정 리소스에 대한 권한도 다루지 않습니다. 사용 권한, 최소 필수 권한 또는 사용자 지정 리소스 권한을 세부적으로 설정하려면 [사용자 지정 정책](#AWSHowTo.iam.policies)을 사용합니다.

**사용되지 않는 관리형 정책**  
이전에는 Elastic Beanstalk가 두 가지 다른 관리형 사용자 정책인 **AWSElasticBeanstalkFullAccess** 와 **AWSElasticBeanstalkReadOnlyAccess**를 지원했습니다. 이러한 이전 정책은 사용 중지될 것입니다. 하지만 IAM 콘솔에서 해당 정책을 계속하여 확인하고 사용할 수 있습니다. 새 관리형 사용자 정책으로 전환하여 사용하고 사용자 지정 리소스에 권한을 부여하는 사용자 지정 정책을 추가하는 것이 좋습니다(있는 경우).

## 다른 서비스와의 통합 정책
<a name="iam-userpolicies-managed-other-services"></a>

또한 원하는 경우 다른 서비스와 환경을 통합할 수 있도록 보다 세분화된 정책을 제공합니다.
+ **AWSElasticBeanstalkRoleCWL** - 환경에서 Amazon CloudWatch Logs 로그 그룹을 관리할 수 있도록 허용합니다.
+ **AWSElasticBeanstalkRoleRDS** - 환경에서 Amazon RDS 인스턴스를 통합할 수 있도록 허용합니다.
+ **AWSElasticBeanstalkRoleWorkerTier** - 작업자 환경 티어에서 Amazon DynamoDB 테이블과 Amazon SQS 대기열을 생성할 수 있도록 허용합니다.
+ **AWSElasticBeanstalkRoleECS** - 멀티컨테이너 Docker 환경에서 Amazon ECS 클러스터를 관리할 수 있도록 허용합니다.
+ **AWSElasticBeanstalkRoleCore** - 웹 서비스 환경의 코어 작업을 허용합니다.
+ **AWSElasticBeanstalkRoleSNS** - 환경에서 Amazon SNS 주제 통합을 활성화할 수 있도록 허용합니다.

특정 관리형 정책에 대한 JSON 소스를 보려면 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/about-managed-policy-reference.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/about-managed-policy-reference.html)를 참조하세요.

## 관리형 정책을 통한 액세스 제어
<a name="iam-userpolicies-managed"></a>

관리형 정책을 통해 Elastic Beanstalk에 모든 액세스 또는 읽기 전용 액세스를 부여할 수 있습니다. 새 기능으로 액세스하는 데 추가 권한이 필요한 경우 Elastic Beanstalk는 이러한 정책을 자동으로 업데이트합니다.

**IAM 사용자나 그룹에 관리형 정책을 적용하려면**

1. IAM 콘솔에서 [**정책** 페이지](https://console.aws.amazon.com/iam/home#policies)를 엽니다.

1. 검색 상자에 **AWSElasticBeanstalk**을 입력하여 정책을 필터링합니다.

1. 정책 목록에서 **AWSElasticBeanstalkReadOnly** 또는 **AdministratorAccess-AWSElasticBeanstalk** 옆의 확인란을 선택합니다.

1. **정책 조치**를 선택한 후 **연결**을 선택합니다.

1. 정책을 연결할 사용자나 그룹을 하나 이상 선택합니다. **필터** 메뉴와 검색 상자를 사용하면 보안 주체 개체 목록을 필터링할 수 있습니다.

1. **정책 연결(Attach policies)**을 선택합니다.

## 맞춤형 사용자 지정 정책 생성
<a name="AWSHowTo.iam.policies"></a>

고유한 IAM 정책을 생성하여 특정 Elastic Beanstalk 리소스에 대한 특정 Elastic Beanstalk API 작업을 허용 또는 거부하고, Elastic Beanstalk이 관리하지 않는 사용자 지정 리소스에 대한 액세스를 제어할 수 있습니다. 사용자 또는 그룹에 정책을 연결하는 방법에 대한 자세한 내용은 *IAM 사용 설명서*의 [정책 작업](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html)을 참조하세요. 사용자 지정 정책 생성에 대한 자세한 내용은 *IAM 사용 설명서*의 [IAM 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)을 참조하세요.

**참고**  
사용자가 Elastic Beanstalk API와 상호 작용하는 방법을 제한할 수는 있지만, 현재로서는 필요한 기본 리소스를 생성할 권한이 있는 사용자가 Amazon EC2 및 기타 서비스의 다른 리소스를 생성하지 못하도록 하는 효과적인 방법이 없습니다.  
따라서 정책을 모든 기본 리소스를 보호하기 위한 방법이 아닌 Elastic Beanstalk 책임을 분담하기 위한 효과적인 방법으로 사용해보시기 바랍니다.

**중요**  
Elastic Beanstalk 서비스 역할에 사용자 지정 정책을 할당한 경우, 시작 템플릿과 관련된 적절한 권한을 해당 역할에 부여하는 것이 중요합니다. 그렇지 않으면 환경을 업데이트하거나 새로 시작할 수 있는 권한이 없을 수 있습니다. 자세한 내용은 [시작 템플릿에 필요한 권한](environments-cfg-autoscaling-launch-templates.md#environments-cfg-autoscaling-launch-templates-permissions) 단원을 참조하십시오.

IAM 정책에는 부여 권한을 설명하는 정책이 포함되어 있습니다. Elastic Beanstalk의 정책 설명을 생성하고자 하는 경우 정책 설명의 다음 네 가지 부분의 사용법을 이해해야 합니다:
+ **효과**는 설명에서 작업 허용 여부를 지정합니다.
+ **작업**은 제어할 [API 작업](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_Operations.html)을 지정합니다. 예를 들어 `elasticbeanstalk:CreateEnvironment`를 사용하여 `CreateEnvironment` 작업을 지정합니다. 환경 생성 등의 특정 작업에는 그러한 작업을 수행할 추가 권한이 필요합니다. 자세한 내용은 [Elastic Beanstalk 작업에 사용되는 리소스 및 조건](AWSHowTo.iam.policies.actions.md)을(를) 참조하세요.
**참고**  
[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html) API 작업을 사용하려면 API 작업 이름 대신 다음의 두 가지 가상 작업 중 하나(또는 둘 다)를 지정해야 합니다:  

`elasticbeanstalk:AddTags`  
`UpdateTagsForResource`를 호출하며 추가할 태그 목록을 `TagsToAdd` 파라미터에서 전달할 권한을 제어합니다.

`elasticbeanstalk:RemoveTags`  
`UpdateTagsForResource`를 호출하며 제거할 태그 키 목록을 `TagsToRemove` 파라미터에서 전달할 권한을 제어합니다.
+ **리소스**는 액세스를 제어할 리소스를 지정합니다. Elastic Beanstalk 리소스를 지정하려면 각 리소스의 [Amazon 리소스 이름](AWSHowTo.iam.policies.arn.md)(ARN)을 나열합니다.
+ (선택 사항) **조건**은 설명에서 부여한 권한의 제한을 지정합니다. 자세한 내용은 [Elastic Beanstalk 작업에 사용되는 리소스 및 조건](AWSHowTo.iam.policies.actions.md)을(를) 참조하세요.

다음 섹션에서는 사용자 지정 사용자 정책을 사용하기 위해 고려해야 할 몇 가지 경우를 설명합니다.

### 제한된 Elastic Beanstalk 환경 생성 활성화
<a name="AWSHowTo.iam.policy.env-creation"></a>

다음 예제의 정책을 통해 사용자는 지정된 애플리케이션 및 애플리케이션 버전을 사용하여 `CreateEnvironment` 작업을 호출함으로써 이름이 **Test**로 시작하는 환경을 생성할 수 있습니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid":"CreateEnvironmentPerm",
      "Action": [
        "elasticbeanstalk:CreateEnvironment"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My First Elastic Beanstalk Application/Test*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My First Elastic Beanstalk Application"],
          "elasticbeanstalk:FromApplicationVersion": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/My First Elastic Beanstalk Application/First Release"]
        }
      }
    },
    {
      "Sid":"AllNonResourceCalls",
      "Action":[
        "elasticbeanstalk:CheckDNSAvailability",
        "elasticbeanstalk:CreateStorageLocation"
      ],
      "Effect":"Allow",
      "Resource":[
        "*"
      ]
    }
  ]
}
```

------

위 정책은 Elastic Beanstalk 작업에 제한된 액세스를 부여하는 방법을 보여줍니다. 실제로 환경을 시작하려면 사용자에게 환경을 구동하는 AWS 리소스를 생성할 수 있는 권한이 있어야 합니다. 예를 들어 다음 정책은 웹 서버 환경의 기본 리소스 세트로의 액세스를 부여합니다:

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:*",
        "ecs:*",
        "elasticloadbalancing:*",
        "autoscaling:*",
        "cloudwatch:*",
        "s3:*",
        "sns:*",
        "cloudformation:*",
        "sqs:*"
        ],
      "Resource": "*"
    }
  ]
}
```

------

### Amazon S3에 저장된 Elastic Beanstalk 로그로의 액세스 활성화
<a name="AWSHowTo.iam.policy.view-s3-logs"></a>

다음 예제의 정책을 통해 사용자는 Elastic Beanstalk 로그를 가져오고, Amazon S3에서 스테이징하며, 검색할 수 있습니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "s3:DeleteObject",
        "s3:GetObjectAcl",
        "s3:PutObjectAcl"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::elasticbeanstalk-*"
    }
  ]
}
```

------

**참고**  
이러한 권한을 로그 경로로만 제한하려면 다음의 리소스 형식을 사용하십시오.  

```
"arn:aws:s3:::elasticbeanstalk-us-east-2-123456789012/resources/environments/logs/*"
```

### 특정 Elastic Beanstalk 애플리케이션 관리 활성화
<a name="AWSHowTo.iam.policy.manage-app"></a>

다음 예제의 정책을 통해 사용자는 하나의 특정 Elastic Beanstalk 애플리케이션에서 환경 및 기타 리소스를 관리할 수 있습니다. 이 정책은 다른 애플리케이션 리소스에 대한 Elastic Beanstalk 작업을 허용하지 않으며, Elastic Beanstalk 애플리케이션의 생성 및 삭제 또한 허용하지 않습니다.

**참고**  
이 정책은 다른 서비스를 통해 리소스로 액세스하는 것을 허용합니다. 이는 기본 리소스 보호법이 아닌 Elastic Beanstalk 애플리케이션 관리를 위해 여러 사용자에게 책임을 분담하는 효율적인 방법을 제시합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "elasticbeanstalk:CreateApplication",
        "elasticbeanstalk:DeleteApplication"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Deny",
      "Action": [
        "elasticbeanstalk:CreateApplicationVersion",
        "elasticbeanstalk:CreateConfigurationTemplate",
        "elasticbeanstalk:CreateEnvironment",
        "elasticbeanstalk:DeleteApplicationVersion",
        "elasticbeanstalk:DeleteConfigurationTemplate",
        "elasticbeanstalk:DeleteEnvironmentConfiguration",
        "elasticbeanstalk:DescribeApplicationVersions",
        "elasticbeanstalk:DescribeConfigurationOptions",
        "elasticbeanstalk:DescribeConfigurationSettings",
        "elasticbeanstalk:DescribeEnvironmentResources",
        "elasticbeanstalk:DescribeEnvironments",
        "elasticbeanstalk:DescribeEvents",
        "elasticbeanstalk:DeleteEnvironmentConfiguration",
        "elasticbeanstalk:RebuildEnvironment",
        "elasticbeanstalk:RequestEnvironmentInfo",
        "elasticbeanstalk:RestartAppServer",
        "elasticbeanstalk:RetrieveEnvironmentInfo",
        "elasticbeanstalk:SwapEnvironmentCNAMEs",
        "elasticbeanstalk:TerminateEnvironment",
        "elasticbeanstalk:UpdateApplicationVersion",
        "elasticbeanstalk:UpdateConfigurationTemplate",
        "elasticbeanstalk:UpdateEnvironment",
        "elasticbeanstalk:RetrieveEnvironmentInfo",
        "elasticbeanstalk:ValidateConfigurationSettings"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringNotEquals": {
          "elasticbeanstalk:InApplication": [
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/myapplication"
          ]
        }
      }
    }
  ]
}
```

------

# Elastic Beanstalk의 Amazon 리소스 이름 형식
<a name="AWSHowTo.iam.policies.arn"></a>

리소스의 Amazon 리소스 이름(ARN)을 사용하여 IAM 정책의 리소스를 지정합니다. Elastic Beanstalk의 경우 ARN의 형식은 다음과 같습니다.

```
arn:aws:elasticbeanstalk:region:account-id:resource-type/resource-path
```

위치:
+ `region`은 리소스가 상주하는 리전입니다(예: **us-west-2**).
+ `account-id`는 하이픈이 없는 AWS 계정 ID입니다(예: **123456789012**).
+ `resource-type`은 Elastic Beanstalk 리소스의 유형을 식별합니다(예: `environment`). 모든 Elastic Beanstalk 리소스 유형 목록은 아래 표를 참조하세요.
+ `resource-path`는 특정 리소스를 식별하는 부분입니다. Elastic Beanstalk 리소스에는 해당 리소스를 고유하게 식별하는 경로가 있습니다. 각 리소스 유형의 리소스 경로 형식은 아래 표를 참조하십시오. 예를 들어 환경은 항상 애플리케이션과 연결되어 있습니다. 애플리케이션 **myApp**의 환경 **myEnvironment**에 대한 리소스 경로는 다음과 같습니다.

  ```
  myApp/myEnvironment
  ```

Elastic Beanstalk에는 정책에서 지정할 수 있는 여러 리소스 유형이 있습니다. 다음 표는 각 리소스 유형에 대한 ARN 형식과 예시를 보여 줍니다.


****  

| 리소스 유형 | ARN의 형식 | 
| --- | --- | 
|  `application`  |  `arn:aws:elasticbeanstalk:region:account-id:application/application-name` 예시: **arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App**   | 
|  `applicationversion`  |  `arn:aws:elasticbeanstalk:region:account-id:applicationversion/application-name/version-label` 예시: **arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/My App/My Version**   | 
|  `configurationtemplate`  |  `arn:aws:elasticbeanstalk:region:account-id:configurationtemplate/application-name/template-name` 예시: **arn:aws:elasticbeanstalk:us-east-2:123456789012:configurationtemplate/My App/My Template**   | 
|  `environment`  |  `arn:aws:elasticbeanstalk:region:account-id:environment/application-name/environment-name` 예시: **arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/MyEnvironment**   | 
|  `platform`  |  `arn:aws:elasticbeanstalk:region:account-id:platform/platform-name/platform-version` 예시: **arn:aws:elasticbeanstalk:us-east-2:123456789012:platform/MyPlatform/1.0**   | 
|  `solutionstack`  |  `arn:aws:elasticbeanstalk:region::solutionstack/solutionstack-name` 예시: **arn:aws:elasticbeanstalk:us-east-2::solutionstack/32bit Amazon Linux running Tomcat 7**   | 

환경, 애플리케이션 버전, 구성 템플릿은 항상 특정 애플리케이션 안에 포함되어 있습니다. 리소스가 각 리소스 이름과 포함된 애플리케이션으로 고유하게 식별되도록 이러한 리소스는 모두 각 리소스 경로에 애플리케이션 이름이 있습니다. 솔루션 스택은 구성 템플릿 및 환경에서 사용되지만 솔루션 스택은 애플리케이션 또는 AWS 계정에만 국한되지 않으며 애플리케이션 또는 AWS 계정이 ARNs에 없습니다.

# Elastic Beanstalk 작업에 사용되는 리소스 및 조건
<a name="AWSHowTo.iam.policies.actions"></a>

이 단원에서는 특정 Elastic Beanstalk 작업이 특정 Elastic Beanstalk 리소스에서 수행되도록 허용하는 권한을 부여하도록 정책 설명에서 사용할 수 있는 리소스와 조건을 설명합니다.

조건을 사용하여 작업이 완료해야 하는 리소스에 대한 권한을 지정할 수 있습니다. 예를 들어 `CreateEnvironment` 작업을 호출할 수 있는 경우, 배포할 애플리케이션 버전은 물론 해당 애플리케이션 이름이 포함된 애플리케이션도 지정해야 합니다. `CreateEnvironment` 작업에 대한 권한을 설정할 때, `InApplication` 및 `FromApplicationVersion` 조건을 사용하여 작업이 수행하도록 할 애플리케이션과 애플리케이션 버전을 지정합니다.

또한 솔루션 스택(`FromSolutionStack`) 또는 구성 템플릿(`FromConfigurationTemplate`)으로 환경 구성을 지정할 수 있습니다. 다음 정책 설명은 `CreateEnvironment` 작업이 **32bit Amazon Linux running Tomcat 7** 구성(`FromSolutionStack`)을 사용하는 애플리케이션 버전 **My Version**(`FromApplicationVersion`)을 사용하여 애플리케이션 **My App**(`InApplication` 조건으로 지정됨)에 이름이 **myenv**(`Resource`로 지정됨)인 환경을 생성할 수 있도록 허용합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticbeanstalk:CreateEnvironment"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/myenv"
      ],
      "Condition": {
        "StringEquals": {
          "elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App"],
          "elasticbeanstalk:FromApplicationVersion": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/My App/My Version"],
          "elasticbeanstalk:FromSolutionStack": ["arn:aws:elasticbeanstalk:us-east-2::solutionstack/32bit Amazon Linux running Tomcat 7"]
        }
      }
    }
  ]
}
```

------

**참고**  
이 주제에 언급된 대부분의 조건 키는 `elasticbeanstalk:`에 고유하며, 그 이름에는 Elastic Beanstalk 접두사가 포함되어 있습니다. 간결하게 하기 위해 다음 단원에서 조건 키를 언급할 때 이 접두사를 생략합니다. 예를 들어 전체 이름인 `elasticbeanstalk:InApplication` 대신에 `InApplication`을 사용합니다.  
반대로 AWS 서비스 전체에서 사용되는 몇 가지 조건 키를 언급하고 예외를 강조 표시하기 위해 `aws:` 접두사를 포함합니다.  
정책 예제에서는 항상 접두사를 포함한 전체 조건 키 이름을 표시합니다.

**Topics**
+ [Elastic Beanstalk 작업에 대한 정책 정보](#AWSHowTo.iam.policies.actions.table)
+ [Elastic Beanstalk 작업에 사용되는 조건 키](#AWSHowTo.iam.policies.conditions)

## Elastic Beanstalk 작업에 대한 정책 정보
<a name="AWSHowTo.iam.policies.actions.table"></a>

다음 표에는 모든 Elastic Beanstalk 작업, 각 작업이 수행하는 리소스, 조건을 사용하여 제공할 수 있는 추가 컨텍스트 정보가 나와 있습니다.


**리소스, 조건, 예제, 종속 항목을 비롯한 Elastic Beanstalk 작업에 대한 정책 정보**  

| Resource | 조건 | 문 예제 | 
| --- | --- | --- | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_AbortEnvironmentUpdate.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_AbortEnvironmentUpdate.html) | 
|  `application` `environment`  |  `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 사용자가 `My App`이라는 애플리케이션의 환경에 대한 환경 업데이트 작업을 중단할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CheckDNSAvailability.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CheckDNSAvailability.html) | 
|  `"*"`  |  해당 사항 없음  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ComposeEnvironments.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ComposeEnvironments.html) | 
|  `application`  |  `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 사용자가 `My App`이라는 애플리케이션에 속한 환경을 구성할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateApplication.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateApplication.html) | 
|  `application`  |  `aws:RequestTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 예에서는 `CreateApplication` 작업이 이름이 **DivA**로 시작하는 애플리케이션을 생성할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateApplicationVersion.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateApplicationVersion.html) | 
|  `applicationversion`  |  `InApplication` `aws:RequestTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  이 예에서는 `CreateApplicationVersion` 작업이 애플리케이션 **My App**에서 모든 이름(**\$1**)으로 애플리케이션 버전을 생성할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateConfigurationTemplate.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateConfigurationTemplate.html) | 
|  `configurationtemplate`  |  `InApplication` `FromApplication` `FromApplicationVersion` `FromConfigurationTemplate` `FromEnvironment` `FromSolutionStack` `aws:RequestTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `CreateConfigurationTemplate` 작업이 애플리케이션 **My App**에서 이름이 **My Template**(`My Template*`)으로 시작하는 구성 템플릿을 생성할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateEnvironment.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateEnvironment.html) | 
|  `environment`  |  `InApplication` `FromApplicationVersion` `FromConfigurationTemplate` `FromSolutionStack` `aws:RequestTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `CreateEnvironment` 작업이 솔루션 스택 **32bit Amazon Linux running Tomcat 7**을 사용하여 애플리케이션 **My App**에 이름이 **myenv**인 환경을 생성할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreatePlatformVersion.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreatePlatformVersion.html) | 
|  `platform`  |  `aws:RequestTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  이 예에서는 `CreatePlatformVersion` 작업이 이름이 **us-east-2\$1**로 시작하는 `us-east-2` 리전을 대상으로 지정하는 플랫폼 버전을 생성할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateStorageLocation.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_CreateStorageLocation.html) | 
|  `"*"`  |  해당 사항 없음  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DeleteApplication.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DeleteApplication.html) | 
|  `application`  |  `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `DeleteApplication` 작업이 애플리케이션 **My App**을 삭제할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DeleteApplicationVersion.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DeleteApplicationVersion.html) | 
|  `applicationversion`  |  `InApplication` `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `DeleteApplicationVersion` 작업이 애플리케이션 **My App**에서 이름이 **My Version**인 애플리케이션 버전을 삭제할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DeleteConfigurationTemplate.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DeleteConfigurationTemplate.html) | 
|  `configurationtemplate`  |  `InApplication` (선택 사항) `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `DeleteConfigurationTemplate` 작업이 애플리케이션 **My App**의 이름이 **My Template**인 구성 템플릿을 삭제할 수 있도록 허용합니다. 애플리케이션 이름을 조건으로 지정하는 것은 선택 사항입니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DeleteEnvironmentConfiguration.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DeleteEnvironmentConfiguration.html) | 
|  `environment`  |  `InApplication` (선택 사항)  |  다음 정책은 `DeleteEnvironmentConfiguration` 작업이 애플리케이션 **My App**의 환경 **myenv**에 대한 초안 구성을 삭제할 수 있도록 허용합니다. 애플리케이션 이름을 조건으로 지정하는 것은 선택 사항입니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DeletePlatformVersion.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DeletePlatformVersion.html) | 
|  `platform`  |  `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책에서는 `DeletePlatformVersion` 작업이 이름이 **us-east-2\$1**로 시작하는 `us-east-2` 리전을 대상으로 지정하는 플랫폼 버전을 삭제할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeApplications.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeApplications.html) | 
|  `application`  |  `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `DescribeApplications` 작업이 애플리케이션 My App을 설명할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeApplicationVersions.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeApplicationVersions.html) | 
|  `applicationversion`  |  `InApplication` (선택 사항) `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `DescribeApplicationVersions` 작업이 애플리케이션 **My App**의 애플리케이션 버전 **My Version**을 설명할 수 있도록 허용합니다. 애플리케이션 이름을 조건으로 지정하는 것은 선택 사항입니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeConfigurationOptions.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeConfigurationOptions.html) | 
|  `environment` `configurationtemplate` `solutionstack`  |  `InApplication` (선택 사항) `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `DescribeConfigurationOptions` 작업이 애플리케이션 **My App**의 환경 **myenv**에 대한 구성 옵션을 설명할 수 있도록 허용합니다. 애플리케이션 이름을 조건으로 지정하는 것은 선택 사항입니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeConfigurationSettings.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeConfigurationSettings.html) | 
|  `environment` `configurationtemplate`  |  `InApplication` (선택 사항) `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `DescribeConfigurationSettings` 작업이 애플리케이션 **My App**의 환경 **myenv**에 대한 구성 설정을 설명할 수 있도록 허용합니다. 애플리케이션 이름을 조건으로 지정하는 것은 선택 사항입니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeEnvironmentHealth.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeEnvironmentHealth.html) | 
|  `environment`  |  `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `DescribeEnvironmentHealth`를 사용하여 **myenv**라는 환경의 상태 정보를 검색할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeEnvironmentResources.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeEnvironmentResources.html) | 
|  `environment`  |  `InApplication` (선택 사항) `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `DescribeEnvironmentResources` 작업이 **myenv** 애플리케이션의 환경에 대한 AWS 리소스 목록을 반환하도록 허용합니다**My App**. 애플리케이션 이름을 조건으로 지정하는 것은 선택 사항입니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeEnvironments.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeEnvironments.html) | 
|  `environment`  |  `InApplication` (선택 사항) `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `DescribeEnvironments` 작업이 애플리케이션 **My App**의 환경 **myenv** 및 **myotherenv**를 설명할 수 있도록 허용합니다. 애플리케이션 이름을 조건으로 지정하는 것은 선택 사항입니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeEvents.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeEvents.html) | 
|  `application` `applicationversion` `configurationtemplate` `environment`  |  `InApplication` `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `DescribeEvents` 작업이 애플리케이션 **My App**의 환경 **myenv** 및 애플리케이션 버전 **My Version**에 대한 이벤트 설명을 나열할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeInstancesHealth.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribeInstancesHealth.html) | 
|  `environment`  |  해당 사항 없음  |  다음 정책은 `DescribeInstancesHealth`를 사용하여 **myenv**라는 환경의 인스턴스에 대한 상태 정보를 검색할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribePlatformVersion.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_DescribePlatformVersion.html) | 
|  `platform`  |  `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책에서는 `DescribePlatformVersion` 작업이 이름이 **us-east-2\$1**로 시작하는 `us-east-2` 리전을 대상으로 지정하는 플랫폼 버전을 설명할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ListAvailableSolutionStacks.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ListAvailableSolutionStacks.html) | 
|  `solutionstack`  |  해당 사항 없음  |  다음 정책은 `ListAvailableSolutionStacks` 작업이 솔루션 스택 **32bit Amazon Linux running Tomcat 7**만 반환할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ListPlatformVersions.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ListPlatformVersions.html) | 
|  `platform`  |  `aws:RequestTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  이 예에서는 `CreatePlatformVersion` 작업이 이름이 **us-east-2\$1**로 시작하는 `us-east-2` 리전을 대상으로 지정하는 플랫폼 버전을 생성할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ListTagsForResource.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ListTagsForResource.html) | 
|  `application` `applicationversion` `configurationtemplate` `environment` `platform`  |  `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 기존 리소스가 `test` 값과 함께 `stage`라는 태그를 포함하는 경우에만 `ListTagsForResource` 작업이 해당 기존 리소스의 태그를 나열할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RebuildEnvironment.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RebuildEnvironment.html) | 
|  `environment`  |  `InApplication` `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `RebuildEnvironment` 작업이 애플리케이션 **My App**의 환경 **myenv**를 다시 빌드할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RequestEnvironmentInfo.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RequestEnvironmentInfo.html) | 
|  `environment`  |  `InApplication` `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `RequestEnvironmentInfo` 작업이 애플리케이션 **My App**의 환경 **myenv**에 대한 정보를 컴파일할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RestartAppServer.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RestartAppServer.html) | 
|  `environment`  |  `InApplication`  |  다음 정책은 `RestartAppServer` 작업이 애플리케이션 **My App**의 환경 **myenv**에 대한 애플리케이션 컨테이너 서버를 다시 시작할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RetrieveEnvironmentInfo.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_RetrieveEnvironmentInfo.html) | 
|  `environment`  |  `InApplication` `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `RetrieveEnvironmentInfo` 작업이 애플리케이션 **My App**의 환경 **myenv**에 대한 컴파일된 정보를 검색할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_SwapEnvironmentCNAMEs.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_SwapEnvironmentCNAMEs.html) | 
|  `environment`  |  `InApplication` (선택 사항) `FromEnvironment` (선택 사항)  |  다음 정책은 `SwapEnvironmentCNAMEs` 작업이 환경 **mydestenv** 및 **mysrcenv**의 CNAME을 전환할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_TerminateEnvironment.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_TerminateEnvironment.html) | 
|  `environment`  |  `InApplication` `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `TerminateEnvironment` 작업이 애플리케이션 **My App**의 환경 **myenv**를 종료할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[UpdateApplication](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateApplication.html) | 
|  `application`  |  `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `UpdateApplication` 작업이 애플리케이션 **My App**의 속성을 업데이트할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[UpdateApplicationResourceLifecycle](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateApplicationResourceLifecycle.html) | 
|  `application`  |  `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `UpdateApplicationResourceLifecycle` 작업이 애플리케이션 **My App**의 수명 주기 설정을 업데이트할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateApplicationVersion.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateApplicationVersion.html) | 
|  `applicationversion`  |  `InApplication` `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `UpdateApplicationVersion` 작업이 애플리케이션 **My App**에 있는 애플리케이션 버전 **My Version**의 속성을 업데이트할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateConfigurationTemplate.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateConfigurationTemplate.html) | 
|  `configurationtemplate`  |  `InApplication` `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `UpdateConfigurationTemplate` 작업이 애플리케이션 **My App**에 있는 구성 템플릿 **My Template**의 속성 또는 옵션을 업데이트할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateEnvironment.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateEnvironment.html) | 
|  `environment`  |  `InApplication` `FromApplicationVersion` `FromConfigurationTemplate` `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `UpdateEnvironment` 작업이 애플리케이션 버전 **My Version**을 배포하여 애플리케이션 **My App**의 환경 **myenv**를 업데이트할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html) – `AddTags` | 
|  `application` `applicationversion` `configurationtemplate` `environment` `platform`  |  `aws:ResourceTag/key-name` (선택 사항) `aws:RequestTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  `AddTags` 작업은 [https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html) API와 연결된 두 가지 가상 작업 중 하나입니다. 다음 정책은 기존 리소스가 `test` 값과 함께 `stage`라는 태그를 포함하는 경우에만 `AddTags` 작업이 해당 기존 리소스의 태그를 수정할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html) – `RemoveTags` | 
|  `application` `applicationversion` `configurationtemplate` `environment` `platform`  |  `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  `RemoveTags` 작업은 [https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_UpdateTagsForResource.html) API와 연결된 두 가지 가상 작업 중 하나입니다. 다음 정책은 `RemoveTags` 작업이 기존 리소스에서 `stage`라는 태그 제거를 요청하는 작업을 거부합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 
| **작업: **[https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ValidateConfigurationSettings.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/API_ValidateConfigurationSettings.html) | 
|  `template` `environment`  |  `InApplication` `aws:ResourceTag/key-name` (선택 사항) `aws:TagKeys` (선택 사항)  |  다음 정책은 `ValidateConfigurationSettings` 작업이 애플리케이션 **My App**의 환경 **myenv**에 대한 구성 설정의 유효성을 검사할 수 있도록 허용합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/AWSHowTo.iam.policies.actions.html)  | 

## Elastic Beanstalk 작업에 사용되는 조건 키
<a name="AWSHowTo.iam.policies.conditions"></a>

키를 사용하여 종속성을 표현하거나, 권한을 제한하거나, 작업에 대한 입력 파라미터의 제약 조건을 지정하는 조건을 지정할 수 있습니다. Elastic Beanstalk는 다음과 같은 키를 지원합니다.

`InApplication`  
작업이 작동하는 리소스가 포함된 애플리케이션을 지정합니다.  
다음 예제에서는 `UpdateApplicationVersion` 작업이 애플리케이션 버전 **My Version**의 속성을 업데이트할 수 있도록 허용합니다. `InApplication` 조건은 **My App**을 **My Version**의 컨테이너로 지정합니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticbeanstalk:UpdateApplicationVersion"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/My App/My Version"
      ],
      "Condition": {
        "StringEquals": {
          "elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App"]
        }
      }
    }
  ]
}
```

`FromApplicationVersion`  
애플리케이션 버전을 입력 파라미터의 제약 조건 또는 종속성으로 지정합니다.  
다음 예제는 `UpdateEnvironment` 작업이 애플리케이션 **My App**의 환경 **myenv**를 업데이트할 수 있도록 허용합니다. `FromApplicationVersion` 조건은 애플리케이션 버전 **My Version**만 환경을 업데이트할 수 있도록 `VersionLabel` 파라미터를 제한합니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticbeanstalk:UpdateEnvironment"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/myenv"
      ],
      "Condition": {
        "StringEquals": {
          "elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App"],
          "elasticbeanstalk:FromApplicationVersion": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/My App/My Version"]
        }
      }
    }
  ]
}
```

`FromConfigurationTemplate`  
구성 템플릿을 입력 파라미터의 제약 조건 또는 종속성으로 지정합니다.  
다음 예제는 `UpdateEnvironment` 작업이 애플리케이션 **My App**의 환경 **myenv**를 업데이트할 수 있도록 허용합니다. `FromConfigurationTemplate` 조건은 구성 템플릿 **My Template**만 환경을 업데이트할 수 있도록 `TemplateName` 파라미터를 제한합니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticbeanstalk:UpdateEnvironment"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/myenv"
      ],
      "Condition": {
        "StringEquals": {
          "elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App"],
          "elasticbeanstalk:FromConfigurationTemplate": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:configurationtemplate/My App/My Template"]
        }
      }
    }
  ]
}
```

`FromEnvironment`  
환경을 입력 파라미터의 제약 조건 또는 종속성으로 지정합니다.  
다음 예제에서는 `SwapEnvironmentCNAMEs` 작업이 **mysrcenvPROD\$1** 및 **mydestenvPROD\$1**로 시작하는 이름의 환경을 제외하고, **mysrcenv** 및 **mydestenv**로 시작하는 이름의 모든 환경에 대해 **My App**의 CNAME을 스왑할 수 있도록 허용합니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticbeanstalk:SwapEnvironmentCNAMEs"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/mysrcenv*",
        "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/mydestenv*"
      ],
      "Condition": {
        "ArnNotLike": {
          "elasticbeanstalk:FromEnvironment": [
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/mysrcenvPROD*",
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/My App/mydestenvPROD*"
          ]
        }
      }
    }
  ]
}
```

`FromSolutionStack`  
솔루션 스택을 입력 파라미터의 제약 조건 또는 종속성으로 지정합니다.  
다음 정책은 `CreateConfigurationTemplate` 작업이 애플리케이션 **My App**에서 **My Template**(`My Template*`)으로 시작하는 이름의 구성 템플릿을 생성할 수 있도록 허용합니다. `FromSolutionStack` 조건은 솔루션 스택 **32bit Amazon Linux running Tomcat 7**만 `solutionstack` 파라미터의 입력 값으로 허용하도록 이 파라미터를 제한합니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Action": [
        "elasticbeanstalk:CreateConfigurationTemplate"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:elasticbeanstalk:us-east-2:123456789012:configurationtemplate/My App/My Template*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticbeanstalk:InApplication": ["arn:aws:elasticbeanstalk:us-east-2:123456789012:application/My App"],
          "elasticbeanstalk:FromSolutionStack": ["arn:aws:elasticbeanstalk:us-east-2::solutionstack/32bit Amazon Linux running Tomcat 7"]
        }
      }
    }
  ]
}
```

`aws:ResourceTag/key-name``aws:RequestTag/key-name``aws:TagKeys`  
태그 기반 조건을 지정합니다. 자세한 내용은 [태그를 사용하여 Elastic Beanstalk 리소스에 대한 액세스 제어정책의 태그 조건 예제](AWSHowTo.iam.policies.access-tags.md) 섹션을 참조하십시오.

# 태그를 사용하여 Elastic Beanstalk 리소스에 대한 액세스 제어
<a name="AWSHowTo.iam.policies.access-tags"></a>

이 주제에서는 태그 기반 액세스 제어를 통해 IAM 정책을 생성하고 관리하는 방법을 설명합니다.

IAM 정책 설명의 조건을 사용하여 Elastic Beanstalk에서 리소스에 액세스할 수 있는 권한을 구성할 수 있습니다. 정책 설명 조건에 대한 자세한 내용은 [Elastic Beanstalk 작업에 사용되는 리소스 및 조건](AWSHowTo.iam.policies.actions.md) 단원을 참조하세요. 조건에 태그를 사용하는 것은 리소스 및 요청에 대한 액세스를 제어하는 하나의 방법입니다. Elastic Beanstalk 리소스 태깅에 대한 자세한 내용은 [Elastic Beanstalk 애플리케이션 리소스 태그 지정](applications-tagging-resources.md) 단원을 참조하세요.

IAM 정책을 설계할 때 특정 리소스에 대한 액세스 권한을 부여하여 세부적인 권한을 설정할 수 있습니다. 관리하는 리소스의 개수가 늘어날수록 이 작업은 더 어려워집니다. 리소스에 태그를 지정하고 정책 문 조건에서 태그를 사용하면 이러한 작업이 더 간단해질 수 있습니다. 특정 태그를 사용하여 리소스에 대량으로 액세스 권한을 부여합니다. 그런 다음, 생성 중 또는 나중에 이 태그를 관련 리소스에 반복해서 적용합니다.

리소스에 태그가 연결되거나 태그 지정을 지원하는 서비스에 대한 요청에서 전달될 수 있습니다. Elastic Beanstalk에서는 리소스에 태그가 있을 수 있고 일부 작업에 태그가 포함될 수 있습니다. IAM 정책을 생성하면 태그 조건 키를 사용하여 다음 조건을 제어할 수 있습니다.
+ 이미 가지고 있는 태그를 기반으로 어떤 사용자가 환경에 대해 작업을 수행할 수 있는지 제어합니다.
+ 어떤 태그가 작업의 요청에서 전달될 수 있는지 통제합니다.
+ 요청에서 특정 키를 사용할 수 있는지 여부를 통제합니다.

태그 조건 키의 전체 구문 및 의미는 *IAM* 사용 설명서의 [태그를 사용한 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)를 참조하십시오.

## 정책의 태그 조건 예제
<a name="AWSHowTo.iam.policies.access-tags.examples"></a>

다음 예에서는 Elastic Beanstalk 사용자에 정책의 태그 조건을 지정하는 방법을 설명합니다.

**Example 1: 요청의 태그 기반 작업 제한**  <a name="example_policy_tags.deny_by_request_tag"></a>
Elastic Beanstalk **AdministratorAccess-AWSElasticBeanstalk** 관리형 사용자 정책이 사용자에게 모든 Elastic Beanstalk 관리형 리소스에 대해 모든 Elastic Beanstalk 작업을 수행할 수 있는 무제한적인 권한을 제공합니다.  
다음 정책은 이러한 기능을 제한하고 권한이 없는 사용자의 Elastic Beanstalk 프로덕션 환경 생성 권한을 거부합니다. 이와 관련하여 정책은 요청이 `gamma` 또는 `prod` 값 중 하나와 함께 `stage`라는 태그를 지정하는 경우 `CreateEnvironment` 작업을 거부합니다. 또한 정책은 이러한 동일한 태그 값을 포함하거나 `stage` 태그를 완전하게 제거하기 위한 태그 수정 작업을 허용하지 않음으로써 이러한 권한이 없는 사용자가 프로덕션 환경의 단계를 변경하지 못하도록 합니다. 고객의 관리자는 권한이 없는 IAM 사용자에게 관리형 사용자 정책 이외에 이 IAM 정책도 연결해야 합니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "elasticbeanstalk:CreateEnvironment",
        "elasticbeanstalk:AddTags"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/stage": ["gamma", "prod"]
        }
      }
    },
    {
      "Effect": "Deny",
      "Action": [
        "elasticbeanstalk:RemoveTags"
      ],
      "Resource": "*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "aws:TagKeys": ["stage"]
        }
      }
    }
  ]
}
```

**Example 2: 리소스 태그 기반 작업 제한**  <a name="example_policy_tags.deny_by_resource_tag"></a>
Elastic Beanstalk **AdministratorAccess-AWSElasticBeanstalk** 관리형 사용자 정책이 사용자에게 모든 Elastic Beanstalk 관리형 리소스에 대해 모든 Elastic Beanstalk 작업을 수행할 수 있는 무제한적인 권한을 제공합니다.  
다음 정책은 이러한 기능을 제한하고 권한이 없는 사용자의 Elastic Beanstalk 프로덕션 환경에 대한 작업 수행 권한을 거부합니다. 이와 관련하여 정책은 환경이 `gamma` 또는 `prod` 값 중 하나와 함께 `stage`라는 태그를 포함하는 경우 특정 작업을 거부합니다. 고객의 관리자는 권한이 없는 IAM 사용자에게 관리형 사용자 정책 이외에 이 IAM 정책도 연결해야 합니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "elasticbeanstalk:AddTags",
        "elasticbeanstalk:RemoveTags",
        "elasticbeanstalk:DescribeEnvironments",
        "elasticbeanstalk:TerminateEnvironment",
        "elasticbeanstalk:UpdateEnvironment",
        "elasticbeanstalk:ListTagsForResource"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/stage": ["gamma", "prod"]
        }
      }
    }
  ]
}
```

**Example 3: 요청의 태그 기반 작업 허용**  <a name="example_policy_tags.allow_by_request_tag"></a>
다음 정책은 사용자에게 Elastic Beanstalk 개발 애플리케이션을 생성할 수 있는 권한을 부여합니다.  
이와 관련하여 정책은 요청이 `development` 값과 함께 `stage`라는 태그를 지정하는 경우 `CreateApplication` 및 `AddTags` 작업을 허용합니다. `aws:TagKeys` 조건은 사용자가 다른 태그 키를 추가할 수 없도록 합니다. 특히 이 조건은 `stage` 태그 키의 대소문자를 구분합니다. 이 정책은 Elastic Beanstalk **AdministratorAccess-AWSElasticBeanstalk** 관리형 사용자 정책이 연결되지 않은 IAM 사용자에 유용합니다. 이 관리형 정책은 사용자에게 모든 Elastic Beanstalk 관리형 리소스에 대해 모든 Elastic Beanstalk 작업을 수행할 수 있는 무제한적인 권한을 제공합니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticbeanstalk:CreateApplication",
        "elasticbeanstalk:AddTags"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/stage": "development"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": ["stage"]
        }
      }
    }
  ]
}
```

**Example 4: 리소스 태그 기반 작업 허용**  <a name="example_policy_tags.allow_by_resource_tag"></a>
다음 정책은 사용자에게 Elastic Beanstalk 개발 애플리케이션에서 작업을 수행하고 관련 정보를 가져올 수 있는 권한을 부여합니다.  
이와 관련하여 정책은 애플리케이션이 `development` 값과 함께 `stage`라는 태그를 포함하는 경우 특정 작업을 허용합니다. `aws:TagKeys` 조건은 사용자가 다른 태그 키를 추가할 수 없도록 합니다. 특히 이 조건은 `stage` 태그 키의 대소문자를 구분합니다. 이 정책은 Elastic Beanstalk **AdministratorAccess-AWSElasticBeanstalk** 관리형 사용자 정책이 연결되지 않은 IAM 사용자에 유용합니다. 이 관리형 정책은 사용자에게 모든 Elastic Beanstalk 관리형 리소스에 대해 모든 Elastic Beanstalk 작업을 수행할 수 있는 무제한적인 권한을 제공합니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticbeanstalk:UpdateApplication",
        "elasticbeanstalk:DeleteApplication",
        "elasticbeanstalk:DescribeApplications"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/stage": "development"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": ["stage"]
        }
      }
    }
  ]
}
```

# 관리형 정책에 기반한 정책 예제
<a name="ExamplePolicies_AEB"></a>

이 섹션에서는에 대한 사용자 액세스를 제어하는 방법을 설명하고 일반적인 시나리오에 필요한 액세스를 제공하는 예제 정책을 AWS Elastic Beanstalk 포함합니다. 이 정책은 Elastic Beanstalk 관리형 정책에서 파생되었습니다. 관리형 정책을 사용자 및 그룹에 연결하는 자세한 내용은 [Elastic Beanstalk 사용자 정책 관리](AWSHowTo.iam.managed-policies.md)을 참조하십시오.

이 시나리오에서 Example Corp.은 회사 웹 사이트를 담당하는 세 팀(인프라를 관리하는 관리자, 웹사이트용 소프트웨어를 구축하는 개발자, 웹 사이트를 테스트하는 QA 팀)으로 구성된 소프트웨어 회사입니다. Elastic Beanstalk 리소스에 대한 권한 관리를 지원하기 위해 Example Corp.은 해당되는 각 팀(관리자, 개발자, 테스터)의 구성원이 소속된 세 그룹을 만듭니다. Example Corp.의 바람은 Admins 그룹이 모든 애플리케이션, 환경 및 기본 리소스에 액세스하여 모든 Elastic Beanstalk 자산을 만들고, 문제를 해결하고 삭제하는 것입니다. 개발자에게는 모든 Elastic Beanstalk 자산을 보고 애플리케이션 버전을 생성 및 배포하기 위한 권한이 필요합니다. 개발자는 새 애플리케이션 또는 환경을 생성할 수 없거나 실행 중인 환경을 종료할 수 없습니다. 테스터는 모든 Elastic Beanstalk 리소스를 확인하여 애플리케이션을 모니터링하고 테스트해야 합니다. 테스터는 어떠한 Elastic Beanstalk 리소스도 변경할 수 없어야 합니다.

다음 정책 예제는 각 그룹에 대한 필수 권한을 제공합니다.

## 예제 1: 관리자 그룹 – 모든 Elastic Beanstalk 및 관련 서비스 API
<a name="ExamplePolicies_AEB.admin"></a>

다음 정책은 Elastic Beanstalk를 사용하는 데 필요한 모든 작업에 대한 권한을 사용자에게 부여합니다. 이 정책을 통해 Elastic Beanstalk는 다음 서비스에서 사용자를 대신해 리소스를 프로비저닝하고 관리할 수 있습니다. Elastic Beanstalk는 환경을 생성할 때 이러한 추가 서비스를 사용하여 기본 리소스를 프로비저닝합니다.
+  - Amazon Elastic Compute Cloud
+ Elastic Load Balancing
+ Auto Scaling
+ Amazon CloudWatch
+ Amazon Simple Storage Service
+  Amazon Simple Notification Service
+ Amazon Relational Database Service
+ CloudFormation

이 정책은 예입니다. Elastic Beanstalk가 애플리케이션과 환경을 관리하는 데 사용하는 AWS 서비스에 대한 광범위한 권한을 부여합니다. 예를 들어는 AWS Identity and Access Management (IAM) 사용자가 AWS 계정의 모든 Amazon EC2 리소스에 대해 작업을 수행할 수 있도록 `ec2:*` 허용합니다. 이 권한은 Elastic Beanstalk에서 사용하는 리소스에 국한되지 않습니다. 모범 사례대로 하려면, 개별 사용자에게 각자의 업무를 수행하는 데 필요한 권한만 부여해야 합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "elasticbeanstalk:*",
        "ec2:*",
        "elasticloadbalancing:*",
        "autoscaling:*",
        "cloudwatch:*",
        "s3:*",
        "sns:*",
        "rds:*",
        "cloudformation:*"
      ],
      "Resource" : "*"
    }
  ]
}
```

------

## 예제 2: 개발자 그룹 – 권한이 높은 작업을 제외한 모든 작업
<a name="ExamplePolicies_AEB.dev"></a>

다음 정책 예는 애플리케이션과 환경을 생성하는 권한을 거부하고 다른 모든 Elastic Beanstalk 작업은 허용합니다.

이 정책은 예입니다. Elastic Beanstalk가 애플리케이션과 환경을 관리하는 데 사용하는 AWS 제품에 대한 광범위한 권한을 부여합니다. 예를 들어, IAM 사용자는 `ec2:*`을(를) 사용하여 AWS 계정의 모든 Amazon EC2 리소스에 대해 모든 작업을 수행할 수 있습니다. 이 권한은 Elastic Beanstalk에서 사용하는 리소스에 국한되지 않습니다. 모범 사례대로 하려면, 개별 사용자에게 각자의 업무를 수행하는 데 필요한 권한만 부여해야 합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Action" : [
        "elasticbeanstalk:CreateApplication",
        "elasticbeanstalk:CreateEnvironment",
        "elasticbeanstalk:DeleteApplication",
        "elasticbeanstalk:RebuildEnvironment",
        "elasticbeanstalk:SwapEnvironmentCNAMEs",
        "elasticbeanstalk:TerminateEnvironment"],
      "Effect" : "Deny",
      "Resource" : "*"
    },
    {
      "Action" : [
        "elasticbeanstalk:*",
        "ec2:*",
        "elasticloadbalancing:*",
        "autoscaling:*",
        "cloudwatch:*",
        "s3:*",
        "sns:*",
        "rds:*",
        "cloudformation:*"],
      "Effect" : "Allow",
      "Resource" : "*"
    }
  ]
}
```

------



## 예제 3: 테스터 – 보기 전용
<a name="ExamplePolicies_AEB.tester"></a>

다음 정책 예제는 모든 애플리케이션, 애플리케이션 버전, 이벤트 및 환경에 대한 읽기 전용 액세스를 허용합니다. 어떤 작업도 수행할 수 없습니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement" : [
    {
      "Effect" : "Allow",
      "Action" : [
        "elasticbeanstalk:Check*",
        "elasticbeanstalk:Describe*",
        "elasticbeanstalk:List*",
        "elasticbeanstalk:RequestEnvironmentInfo",
        "elasticbeanstalk:RetrieveEnvironmentInfo",
        "ec2:Describe*",
        "elasticloadbalancing:Describe*",
        "autoscaling:Describe*",
        "cloudwatch:Describe*",
        "cloudwatch:List*",
        "cloudwatch:Get*",
        "s3:Get*",
        "s3:List*",
        "sns:Get*",
        "sns:List*",
        "rds:Describe*",
        "cloudformation:Describe*",
        "cloudformation:Get*",
        "cloudformation:List*",
        "cloudformation:Validate*",
        "cloudformation:Estimate*"
      ],
      "Resource" : "*"
    }
  ]
}
```

------

# 리소스 권한에 기반한 정책 예제
<a name="AWSHowTo.iam.example.resource"></a>

이 단원에서는 특정 Elastic Beanstalk 리소스에 액세스하는 Elastic Beanstalk 작업에 대한 사용자 권한을 제어하는 사용 사례를 안내합니다. 사용 사례를 지원하는 샘플 정책을 살펴봅니다. Elastic Beanstalk 리소스 정책에 대한 자세한 내용은 [맞춤형 사용자 지정 정책 생성](AWSHowTo.iam.managed-policies.md#AWSHowTo.iam.policies) 단원을 참조하세요. 정책을 사용자 및 그룹에 연결하는 방법에 대한 자세한 내용은 * AWS Identity and Access Management사용*의 [IAM 정책 관리](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html)를 참조하세요.

이 사용 사례에서 Example Corp.는 두 고객을 위한 애플리케이션을 개발하는 소규모 컨설팅 회사입니다. John은 두 Elastic Beanstalk 애플리케이션인 app1과 app2의 개발을 감독하는 개발 관리자입니다. John은 두 애플리케이션에 대한 개발 및 테스트를 수행하며, 두 애플리케이션의 프로덕션 환경만 업데이트할 수 있습니다. 다음은 그가 app1과 app2에 필요한 권한입니다.
+ 애플리케이션, 애플리케이션 버전, 환경, 구성 템플릿 보기
+ 애플리케이션 버전을 생성하고 이를 스테이징 환경에 배포
+ 프로덕션 환경 업데이트
+ 환경 생성 및 종료

Jill은 두 애플리케이션을 모니터링하고 테스트하기 위해 애플리케이션, 애플리케이션 버전, 환경, 구성 템플릿을 볼 수 있는 권한이 필요한 테스터입니다. 하지만 이 테스터는 어떠한 Elastic Beanstalk 리소스도 변경할 수 없어야 합니다.

Jack은 app1의 모든 리소스를 볼 수 있는 권한이 필요한 app1의 개발자로, app1의 애플리케이션 버전을 생성하여 이를 스테이징 환경에 배포해야 합니다.

Judy는 Example Corp의 AWS 계정 관리자입니다. John, Jill, Jack에 대한 IAM 사용자를 생성했으며 해당 사용자에게 다음 정책을 연결하여 app1 및 app2 애플리케이션에 적절한 권한을 부여합니다.

## 예제 1: John – app1, app2 개발 관리자
<a name="AWSHowTo.iam.policies.john"></a>

읽고 관리하기 더 쉽도록 John의 정책을 세 개의 정책으로 나누었습니다. John에게 두 애플리케이션에서 개발, 테스트 및 배포 작업을 수행하는 데 필요한 권한을 부여합니다.

첫 번째 정책은 Auto Scaling, Amazon S3, Amazon EC2, CloudWatch, Amazon SNS, Elastic Load Balancing, Amazon RDS 및 CloudFormation에 대한 작업을 지정합니다. Elastic Beanstalk는 환경을 생성할 때 이러한 추가 서비스를 사용하여 기본 리소스를 프로비저닝합니다.

이 정책은 예입니다. Elastic Beanstalk가 애플리케이션 및 환경을 관리하는 데 사용하는 AWS 제품에 광범위한 권한을 부여합니다. 예를 들어는 IAM 사용자가 AWS 계정의 모든 Amazon EC2 리소스에 대해 작업을 수행할 수 있도록 `ec2:*` 허용합니다. 이 권한은 Elastic Beanstalk에서 사용하는 리소스에 국한되지 않습니다. 모범 사례대로 하려면, 개별 사용자에게 각자의 업무를 수행하는 데 필요한 권한만 부여해야 합니다.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
   {
   "Effect": "Allow",
   "Action": [
   "ec2:*",
   "ecs:*",
   "ecr:*",
   "elasticloadbalancing:*",
   "autoscaling:*",
   "cloudwatch:*",
   "s3:*",
   "sns:*",
   "cloudformation:*",
   "dynamodb:*",
   "rds:*",
   "sqs:*",
   "logs:*",
   "iam:GetPolicyVersion",
   "iam:GetRole",
   "iam:ListRolePolicies",
   "iam:ListAttachedRolePolicies",
   "iam:ListInstanceProfiles",
   "iam:ListRoles",
   "iam:ListServerCertificates",
   "acm:DescribeCertificate",
   "acm:ListCertificates",
   "codebuild:CreateProject",
   "codebuild:DeleteProject",
   "codebuild:BatchGetBuilds",
   "codebuild:StartBuild"
   ],
   "Resource": "*"
   },
   {
   "Effect": "Allow",
   "Action": [
   "iam:PassRole"
   ],
   "Resource": "arn:aws:iam::111122223333:role/MyRole"
   }
   ]
   }
```

------

두 번째 정책은 John이 app1과 app2 리소스에 대해 수행할 수 있는 Elastic Beanstalk 작업을 지정합니다. `AllCallsInApplications` 문은 app1과 app2 내의 모든 리소스에 대해 수행되는 모든 Elastic Beanstalk 작업(`"elasticbeanstalk:*"`)을 허용합니다(예: `elasticbeanstalk:CreateEnvironment`). `AllCallsOnApplications` 문은 app1과 app2 애플리케이션 리소스에 대한 모든 Elastic Beanstalk 작업(`"elasticbeanstalk:*"`)을 허용합니다(예: `elasticbeanstalk:DescribeApplications`, `elasticbeanstalk:UpdateApplication` 등). `AllCallsOnSolutionStacks` 문은 솔루션 스택 리소스에 대한 모든 Elastic Beanstalk 작업(`"elasticbeanstalk:*"`)을 허용합니다(예: `elasticbeanstalk:ListAvailableSolutionStacks`).

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllCallsInApplications",
         "Action":[
            "elasticbeanstalk:*"
         ],
         "Effect":"Allow",
         "Resource":[
            "*"
         ],
         "Condition":{
            "StringEquals":{
               "elasticbeanstalk:InApplication":[
                  "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1",
                  "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2"
               ]
            }
         }
      },
      {
         "Sid":"AllCallsOnApplications",
         "Action":[
            "elasticbeanstalk:*"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1",
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2"
         ]
      },
      {
         "Sid":"AllCallsOnSolutionStacks",
         "Action":[
            "elasticbeanstalk:*"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:elasticbeanstalk:us-east-2::solutionstack/*"
         ]
      }
   ]
}
```

------

세 번째 정책은 두 번째 정책이 해당 Elastic Beanstalk 작업을 완료하기 위해 권한이 필요한 Elastic Beanstalk 작업을 지정합니다. `AllNonResourceCalls` 문은 `elasticbeanstalk:CheckDNSAvailability` 및 기타 작업을 호출하는 데 필요한 `elasticbeanstalk:CreateEnvironment` 작업을 허용합니다. 또한 `elasticbeanstalk:CreateStorageLocation`, `elasticbeanstalk:CreateApplication` 및 기타 작업에 필요한 `elasticbeanstalk:CreateEnvironment` 작업도 허용합니다.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllNonResourceCalls",
         "Action":[
            "elasticbeanstalk:CheckDNSAvailability",
            "elasticbeanstalk:CreateStorageLocation"
         ],
         "Effect":"Allow",
         "Resource":[
            "*"
         ]
      }
   ]
}
```

------

## 예제 2: Jill – app1, app2 테스터
<a name="AWSHowTo.iam.policies.jill"></a>

읽고 관리하기 더 쉽도록 Jill의 정책을 세 개의 정책으로 나누었습니다. Jill에게 두 애플리케이션에서 테스트 및 모니터링 작업을 수행하는 데 필요한 권한을 부여합니다.

첫 번째 정책은 Elastic Beanstalk `Get*` 작업이 app1 `Describe*` `List*`및 app2 애플리케이션의 기본 리소스에 대한 관련 정보를 검색할 수 있도록 Auto Scaling, Amazon S3, Amazon EC2, CloudWatch, Amazon SNS, Elastic Load Balancing, Amazon RDS 및 CloudFormation (레거시가 아닌 컨테이너 유형의 경우)에 대한 , 및 작업을 지정합니다. Amazon EC2 Elastic Load Balancing

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "ec2:Describe*",
            "elasticloadbalancing:Describe*",
            "autoscaling:Describe*",
            "cloudwatch:Describe*",
            "cloudwatch:List*",
            "cloudwatch:Get*",
            "s3:Get*",
            "s3:List*",
            "sns:Get*",
            "sns:List*",
            "rds:Describe*",
            "cloudformation:Describe*",
        	"cloudformation:Get*",
        	"cloudformation:List*",
        	"cloudformation:Validate*",
        	"cloudformation:Estimate*"
         ],
         "Resource":"*"
      }
   ]
}
```

------

두 번째 정책은 Jill이 app1과 app2 리소스에 대해 수행할 수 있는 Elastic Beanstalk 작업을 지정합니다. `AllReadCallsInApplications` 문은 그녀가 `Describe*` 작업 및 환경 정보 작업을 호출할 수 있도록 허용합니다. `AllReadCallsOnApplications` 문은 그녀가 app1과 app2 애플리케이션 리소스에 대해 `DescribeApplications` 및 `DescribeEvents` 작업을 호출할 수 있도록 허용합니다. `AllReadCallsOnSolutionStacks` 문은 솔루션 스택 리소스(`ListAvailableSolutionStacks`, `DescribeConfigurationOptions`, `ValidateConfigurationSettings`)가 포함된 보기 작업을 허용합니다.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllReadCallsInApplications",
         "Action":[
            "elasticbeanstalk:Describe*",
            "elasticbeanstalk:RequestEnvironmentInfo",
            "elasticbeanstalk:RetrieveEnvironmentInfo"
         ],
         "Effect":"Allow",
         "Resource":[
            "*"
         ],
         "Condition":{
            "StringEquals":{
               "elasticbeanstalk:InApplication":[
                  "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1",
                  "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2"
               ]
            }
         }
      },
      {
         "Sid":"AllReadCallsOnApplications",
         "Action":[
            "elasticbeanstalk:DescribeApplications",
            "elasticbeanstalk:DescribeEvents"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1",
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app2"
         ]
      },
      {
         "Sid":"AllReadCallsOnSolutionStacks",
         "Action":[
            "elasticbeanstalk:ListAvailableSolutionStacks",
            "elasticbeanstalk:DescribeConfigurationOptions",
            "elasticbeanstalk:ValidateConfigurationSettings"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:elasticbeanstalk:us-east-2::solutionstack/*"
         ]
      }
   ]
}
```

------

세 번째 정책은 두 번째 정책이 해당 Elastic Beanstalk 작업을 완료하기 위해 권한이 필요한 Elastic Beanstalk 작업을 지정합니다. `AllNonResourceCalls` 문은 일부 보기 작업에 필요한 `elasticbeanstalk:CheckDNSAvailability` 작업을 허용합니다.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllNonResourceCalls",
         "Action":[
            "elasticbeanstalk:CheckDNSAvailability"
         ],
         "Effect":"Allow",
         "Resource":[
            "*"
         ]
      }
   ]
}
```

------

## 예제 3: Jack – app1 개발자
<a name="AWSHowTo.iam.policies.jack"></a>

읽고 관리하기 더 쉽도록 Jack의 정책을 세 개의 정책으로 나누었습니다. Jack에게 app1 리소스에 대한 테스트, 모니터링 및 배포 작업을 수행하는 데 필요한 권한을 부여합니다.

첫 번째 정책은 Elastic Beanstalk 작업이 app1의 기본 리소스를 보고 작업할 수 있도록 Auto Scaling, Amazon S3, Amazon EC2, CloudWatch, Amazon SNS, Elastic Load Balancing, Amazon RDS 및 CloudFormation (레거시가 아닌 컨테이너 유형의 경우)에 대한 작업을 지정합니다. 레거시가 아닌 지원 컨테이너 유형 목록은 [일부 플랫폼 버전이 레거시로 표시되는 이유는 무엇입니까?](using-features.migration.md#using-features.migration.why) 단원을 참조하십시오.

이 정책은 예입니다. Elastic Beanstalk가 애플리케이션 및 환경을 관리하는 데 사용하는 AWS 제품에 광범위한 권한을 부여합니다. 예를 들어는 IAM 사용자가 AWS 계정의 모든 Amazon EC2 리소스에 대해 작업을 수행할 수 있도록 `ec2:*` 허용합니다. 이 권한은 Elastic Beanstalk에서 사용하는 리소스에 국한되지 않습니다. 모범 사례대로 하려면, 개별 사용자에게 각자의 업무를 수행하는 데 필요한 권한만 부여해야 합니다.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "ec2:*",
            "elasticloadbalancing:*",
            "autoscaling:*",
            "cloudwatch:*",
            "s3:*",
            "sns:*",
            "rds:*",
            "cloudformation:*"
         ],
         "Resource":"*"
      }
   ]
}
```

------

두 번째 정책은 Jack이 app1 리소스에 대해 수행할 수 있는 Elastic Beanstalk 작업을 지정합니다.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllReadCallsAndAllVersionCallsInApplications",
         "Action":[
            "elasticbeanstalk:Describe*",
            "elasticbeanstalk:RequestEnvironmentInfo",
            "elasticbeanstalk:RetrieveEnvironmentInfo",
            "elasticbeanstalk:CreateApplicationVersion",
            "elasticbeanstalk:DeleteApplicationVersion",
            "elasticbeanstalk:UpdateApplicationVersion"
         ],
         "Effect":"Allow",
         "Resource":[
            "*"
         ],
         "Condition":{
            "StringEquals":{
               "elasticbeanstalk:InApplication":[
                  "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1"
               ]
            }
         }
      },
      {
         "Sid":"AllReadCallsOnApplications",
         "Action":[
            "elasticbeanstalk:DescribeApplications",
            "elasticbeanstalk:DescribeEvents"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1"
         ]
      },
      {
         "Sid":"UpdateEnvironmentInApplications",
         "Action":[
            "elasticbeanstalk:UpdateEnvironment"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:elasticbeanstalk:us-east-2:123456789012:environment/app1/app1-staging*"
         ],
         "Condition":{
            "StringEquals":{
               "elasticbeanstalk:InApplication":[
                  "arn:aws:elasticbeanstalk:us-east-2:123456789012:application/app1"
               ]
            },
            "ArnLike":{
               "elasticbeanstalk:FromApplicationVersion":[
                  "arn:aws:elasticbeanstalk:us-east-2:123456789012:applicationversion/app1/*"
               ]
            }
         }
      },
      {
         "Sid":"AllReadCallsOnSolutionStacks",
         "Action":[
            "elasticbeanstalk:ListAvailableSolutionStacks",
            "elasticbeanstalk:DescribeConfigurationOptions",
            "elasticbeanstalk:ValidateConfigurationSettings"
         ],
         "Effect":"Allow",
         "Resource":[
            "arn:aws:elasticbeanstalk:us-east-2::solutionstack/*"
         ]
      }
   ]
}
```

------

세 번째 정책은 두 번째 정책이 해당 Elastic Beanstalk 작업을 완료하기 위해 권한이 필요한 Elastic Beanstalk 작업을 지정합니다. `AllNonResourceCalls` 문은 `elasticbeanstalk:CheckDNSAvailability` 및 기타 작업을 호출하는 데 필요한 `elasticbeanstalk:CreateEnvironment` 작업을 허용합니다. 또한 `elasticbeanstalk:CreateStorageLocation` 및 기타 작업에 필요한 `elasticbeanstalk:CreateEnvironment` 작업도 허용합니다.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllNonResourceCalls",
         "Action":[
            "elasticbeanstalk:CheckDNSAvailability",
            "elasticbeanstalk:CreateStorageLocation"
         ],
         "Effect":"Allow",
         "Resource":[
            "*"
         ]
      }
   ]
}
```

------

# 환경 간 Amazon S3 버킷 액세스 방지
<a name="AWSHowTo.iam.cross-env-s3-access"></a>

이 주제에서는 관리형 정책이 환경 간 S3 버킷 액세스를 허용하는 방법과 이러한 유형의 액세스를 관리하기 위해 사용자 지정 정책을 생성하는 방법을 설명합니다.

Elastic Beanstalk는 AWS 계정의 Elastic Beanstalk 환경에 필요한 AWS 리소스를 처리하기 위한 관리형 정책을 제공합니다. 계정의 한 애플리케이션에 기본적으로 제공되는 권한은 동일한 AWS 계정의 다른 애플리케이션에 속하는 S3 리소스에 액세스할 수 AWS 있습니다.

 AWS 계정이 여러 Beanstalk 애플리케이션을 실행하는 경우 각 환경의 고유한 [서비스 역할](iam-servicerole.md#iam-servicerole-create) 또는 [인스턴스 프로파일](iam-instanceprofile.md#iam-instanceprofile-create)에 연결할 사용자 [지정 정책을](AWSHowTo.iam.managed-policies.md#AWSHowTo.iam.policies) 생성하여 정책의 보안 범위를 좁힐 수 있습니다. 그런 다음 사용자 지정 정책의 S3 권한을 특정 환경으로 제한할 수 있습니다.

**참고**  
사용자 지정 정책을 유지할 책임은 사용자에게 있다는 점에 유의하세요. 사용자 지정 정책의 기반이 되는 Elastic Beanstalk 관리형 정책이 변경되는 경우 기본 정책의 각 변경 사항을 사용하여 사용자 지정 정책을 수정해야 합니다. Elastic Beanstalk 관리형 정책의 변경 기록은 [AWS 관리형 정책에 대한 Elastic Beanstalk 업데이트](security-iam-awsmanpol.md#security-iam-awsmanpol-updates) 단원을 참조하세요.

## 범위 축소 권한의 예제
<a name="AWSHowTo.iam.cross-env-s3-access.example-env-ID"></a>

다음 예제는 [AWSElasticBeanstalkWebTier](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSElasticBeanstalkWebTier.html) 관리형 정책을 기반으로 합니다.

기본 정책에는 S3 버킷 권한에 대한 다음 줄이 포함됩니다. 이 기본 정책은 S3 버킷 작업을 특정 환경 또는 애플리케이션으로 제한하지 않습니다.

```
{
   "Sid" : "BucketAccess", 
   "Action" : [ 
      "s3:Get*",
      "s3:List*", 
      "s3:PutObject"
     ], 
   "Effect" : "Allow",
   "Resource" : [ 
      "arn:aws:s3:::elasticbeanstalk-*", 
      "arn:aws:s3:::elasticbeanstalk-*/*" 
     ] 
}
```

특정 리소스를 `Principal`로 지정된 서비스 역할로 검증하여 액세스 범위를 좁힐 수 있습니다. 다음 예제에서는 ID가 `my-example-env-ID`인 환경의 S3 버킷에 대한 사용자 지정 서비스 역할 `aws-elasticbeanstalk-ec2-role-my-example-env` 권한을 제공합니다.

**Example 특정 환경의 S3 버킷에만 권한 부여**  

```
{
   "Sid": "BucketAccess",
   "Action": [
      "s3:Get*",
      "s3:List*",
      "s3:PutObject"
    ],
   "Effect": "Allow",
   "Principal": {
      "AWS": "arn:aws:iam::...:role/aws-elasticbeanstalk-ec2-role-my-example-env"
     },
   "Resource": [
      "arn:aws:s3:::elasticbeanstalk-my-region-account-id-12345",
      "arn:aws:s3:::elasticbeanstalk-my-region-account-id-12345/resources/environments/my-example-env-ID/*"
    ]
}
```

**참고**  
리소스 ARN에는 Elastic Beanstalk 환경 ID(환경 이름 아님)가 포함되어야 합니다. [환경 개요](environments-dashboard.md) 페이지의 Elastic Beanstalk 콘솔에서 환경 ID를 가져올 수 있습니다. AWS CLI [ describe-environments](https://docs.aws.amazon.com/cli/latest/reference/elasticbeanstalk/describe-environments.html) 명령을 사용하여이 정보를 얻을 수도 있습니다.

Elastic Beanstalk 환경에 대한 S3 버킷 권한을 업데이트하는 데 도움이 되는 자세한 내용은 다음 리소스를 참조하세요.
+ 이 가이드의 [Amazon S3에서 Elastic Beanstalk 사용](AWSHowTo.S3.md)
+ *서비스 승인 참조* 가이드의 [Amazon S3에서 정의한 리소스 유형](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#amazons3-resources-for-iam-policies)
+ *IAM 사용 설명서*의 [ARN 형식](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)