

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

# Amazon EMR Studio 구성
<a name="emr-studio-configure"></a>

이 섹션은 EMR Studio 관리자를 위해 제공됩니다. 팀을 위해 EMR Studio를 설정하는 방법을 다루고, 사용자 및 그룹 할당, 클러스터 템플릿 설정, EMR Studio용 Apache Spark 최적화와 같은 작업의 지침을 제공합니다.

**Topics**
+ [EMR Studio를 생성 및 관리하는 관리자 권한](emr-studio-admin-permissions.md)
+ [EMR Studio 설정](emr-studio-set-up.md)
+ [Amazon EMR Studio 리소스 모니터링, 업데이트 및 삭제](emr-studio-manage-studio.md)
+ [EMR Studio Workspace 노트북 및 파일 암호화](emr-studio-workspace-storage-encryption.md)
+ [EMR Studio 네트워크 트래픽을 제어할 보안 그룹을 정의합니다.](emr-studio-security-groups.md)
+ [Amazon EMR Studio용 AWS CloudFormation 템플릿 생성](emr-studio-cluster-templates.md)
+ [Git 기반 리포지토리에 대한 액세스 및 권한 설정](emr-studio-enable-git.md)
+ [EMR Studio에서 Spark 작업 최적화](emr-studio-spark-optimization.md)

# EMR Studio를 생성 및 관리하는 관리자 권한
<a name="emr-studio-admin-permissions"></a>

이 페이지에 설명된 IAM 권한을 통해 EMR Studio를 생성하고 관리할 수 있습니다. 필요한 각 권한에 대한 자세한 내용은 [EMR Studio를 관리하는 데 필요한 권한](#emr-studio-admin-permissions-table) 섹션을 참조하세요.

## EMR Studio를 관리하는 데 필요한 권한
<a name="emr-studio-admin-permissions-table"></a>

다음 테이블에는 EMR Studio 생성 및 관리와 관련된 작업이 나열되어 있습니다. 이 테이블에는 각 작업에 필요한 권한도 표시됩니다.

**참고**  
IAM Identity Center 인증 모드를 사용할 때는 IAM Identity Center 및 Studio `SessionMapping` 작업만 필요합니다.


**EMR Studio를 생성 및 관리하는 권한**  

| 연산 | 권한 | 
| --- | --- | 
| Studio 생성 |  <pre>"elasticmapreduce:CreateStudio", <br />"sso:CreateApplication",<br />"sso:PutApplicationAuthenticationMethod",<br />"sso:PutApplicationGrant",<br />"sso:PutApplicationAccessScope",<br />"sso:PutApplicationAssignmentConfiguration",<br />"iam:PassRole"</pre>  | 
| Studio 설명 |  <pre>"elasticmapreduce:DescribeStudio",<br />"sso:GetManagedApplicationInstance"</pre>  | 
| Studio 나열 |  <pre>"elasticmapreduce:ListStudios"</pre>  | 
| Studio 삭제 |  <pre>"elasticmapreduce:DeleteStudio",<br />"sso:DeleteApplication",<br />"sso:DeleteApplicationAuthenticationMethod",<br />"sso:DeleteApplicationAccessScope",<br />"sso:DeleteApplicationGrant"</pre>  | 
| Additional permissions required when you use IAM Identity Center mode | 
|  EMR Studio에 사용자 또는 그룹 할당  |  <pre>"elasticmapreduce:CreateStudioSessionMapping",<br />"sso:GetProfile",<br />"sso:ListDirectoryAssociations",<br />"sso:ListProfiles",<br />"sso:AssociateProfile",<br />"sso-directory:SearchUsers",<br />"sso-directory:SearchGroups",<br />"sso-directory:DescribeUser",<br />"sso-directory:DescribeGroup",<br />"sso:ListInstances",<br />"sso:CreateApplicationAssignment",<br />"sso:DescribeInstance",<br />"organizations:DescribeOrganization",<br />"organizations:ListDelegatedAdministrators",<br />"sso:CreateInstance",<br />"sso:DescribeRegisteredRegions",<br />"sso:GetSharedSsoConfiguration",<br />"iam:ListPolicies"</pre>  | 
|  특정 사용자 또는 그룹의 Studio 할당 세부 정보 검색  |  <pre>"sso-directory:SearchUsers",<br />"sso-directory:SearchGroups",<br />"sso-directory:DescribeUser",<br />"sso-directory:DescribeGroup",<br />"sso:DescribeApplication",<br />"elasticmapreduce:GetStudioSessionMapping"</pre>  | 
| Studio에 할당된 모든 사용자 및 그룹 나열 |  <pre>"elasticmapreduce:ListStudioSessionMappings"</pre>  | 
| Studio에 할당된 사용자 또는 그룹에 연결된 세션 정책 업데이트 |  <pre>"sso-directory:SearchUsers",<br />"sso-directory:SearchGroups",<br />"sso-directory:DescribeUser",<br />"sso-directory:DescribeGroup",<br />"sso:DescribeApplication",<br />"sso:DescribeInstance",<br />"elasticmapreduce:UpdateStudioSessionMapping"</pre>  | 
| Studio에서 사용자 또는 그룹 제거 |  <pre>"elasticmapreduce:DeleteStudioSessionMapping",<br />"sso-directory:SearchUsers",<br />"sso-directory:SearchGroups",<br />"sso-directory:DescribeUser",<br />"sso-directory:DescribeGroup",<br />"sso:ListDirectoryAssociations",<br />"sso:GetProfile",<br />"sso:DescribeApplication",<br />"sso:DescribeInstance",<br />"sso:ListProfiles",<br />"sso:DisassociateProfile",<br />"sso:DeleteApplicationAssignment",<br />"sso:ListApplicationAssignments"<br /></pre>  | 

**EMR Studio에 대한 관리자 권한이 포함된 정책을 생성하는 방법**

1. [IAM 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) 지침에 따라 다음 예제 중 하나를 사용하여 정책을 생성합니다. 필요한 권한은 [EMR Studio의 인증 모드](emr-studio-authentication.md)에 따라 달라집니다.

   다음 항목에 대한 고유한 값을 삽입합니다.
   + 명령문이 사용 사례에서 다루는 객체 또는 객체의 Amazon 리소스 이름(ARN)을 지정하도록 *`<your-resource-ARN>`*을 바꿉니다.
   + *<region>*을 Studio를 생성할 AWS 리전 의 코드로 바꿉니다.
   + *<aws-account\$1id>*를 Studio의 AWS 계정 ID로 바꿉니다.
   + *<EMRStudio-Service-Role>* 및 *<EMRStudio-User-Role>*을 [EMR Studio 서비스 역할](emr-studio-service-role.md) 및 [EMR Studio 사용자 역할](emr-studio-user-permissions.md#emr-studio-create-user-role) 이름으로 바꿉니다.  
**Example 정책 예제: IAM 인증 모드를 사용할 때 관리자 권한**  

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Resource": [
           "arn:aws:elasticmapreduce:*:123456789012:studio/*"
         ],
         "Action": [
           "elasticmapreduce:CreateStudio",
           "elasticmapreduce:DescribeStudio",
           "elasticmapreduce:DeleteStudio"
         ],
         "Sid": "AllowELASTICMAPREDUCECreatestudio"
       },
       {
         "Effect": "Allow",
         "Resource": [
           "*"
         ],
         "Action": [
           "elasticmapreduce:ListStudios"
         ],
         "Sid": "AllowELASTICMAPREDUCEListstudios"
       },
       {
         "Effect": "Allow",
         "Resource": [
           "arn:aws:iam::123456789012:role/EMRStudioServiceRole"
         ],
         "Action": [
           "iam:PassRole"
         ],
         "Sid": "AllowIAMPassrole"
       }
     ]
   }
   ```

------  
**Example 예제 정책: IAM Identity Center 인증 모드를 사용할 때 관리자 권한**  
**참고**  
Identity Center 및 Identity Center 디렉터리 API는 IAM 정책 명령문의 리소스 요소에 ARN을 지정하는 기능을 지원하지 않습니다. IAM Identity Center 및 IAM Identity Center 디렉터리에 대한 액세스를 허용하기 위해 다음 권한은 IAM Identity Center 작업에 대한 모든 리소스("Resource":"\$1")를 지정합니다. 자세한 내용은 [ IAM Identity Center 디렉터리에 대한 작업, 리소스 및 조건 키](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsssodirectory.html#awsssodirectory-actions-as-permissions)를 참조하세요.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Resource": [
           "arn:aws:elasticmapreduce:*:123456789012:studio/*"
         ],
         "Action": [
           "elasticmapreduce:CreateStudio",
           "elasticmapreduce:DescribeStudio",
           "elasticmapreduce:DeleteStudio",
           "elasticmapreduce:CreateStudioSessionMapping",
           "elasticmapreduce:GetStudioSessionMapping",
           "elasticmapreduce:UpdateStudioSessionMapping",
           "elasticmapreduce:DeleteStudioSessionMapping"
         ],
         "Sid": "AllowELASTICMAPREDUCECreatestudio"
       },
       {
         "Effect": "Allow",
         "Resource": [
           "*"
         ],
         "Action": [
           "elasticmapreduce:ListStudios",
           "elasticmapreduce:ListStudioSessionMappings"
         ],
         "Sid": "AllowELASTICMAPREDUCEListstudios"
       },
       {
         "Effect": "Allow",
         "Resource": [
           "arn:aws:iam::123456789012:role/EMRStudio-SvcRole",
           "arn:aws:iam::123456789012:role/EMRStudio-User-Role"
         ],
         "Action": [
           "iam:PassRole"
         ],
         "Sid": "AllowIAMPassrole"
       },
       {
         "Effect": "Allow",
         "Resource": [
           "*"
         ],
         "Action": [
           "sso:CreateApplication",
           "sso:PutApplicationAuthenticationMethod",
           "sso:PutApplicationGrant",
           "sso:PutApplicationAccessScope",
           "sso:PutApplicationAssignmentConfiguration",
           "sso:DescribeApplication",
           "sso:DeleteApplication",
           "sso:DeleteApplicationAuthenticationMethod",
           "sso:DeleteApplicationAccessScope",
           "sso:DeleteApplicationGrant",
           "sso:ListInstances",
           "sso:CreateApplicationAssignment",
           "sso:DeleteApplicationAssignment",
           "sso:ListApplicationAssignments",
           "sso:DescribeInstance",
           "sso:AssociateProfile",
           "sso:DisassociateProfile",
           "sso:GetProfile",
           "sso:ListDirectoryAssociations",
           "sso:ListProfiles",
           "sso-directory:SearchUsers",
           "sso-directory:SearchGroups",
           "sso-directory:DescribeUser",
           "sso-directory:DescribeGroup",
           "organizations:DescribeOrganization",
           "organizations:ListDelegatedAdministrators",
           "sso:CreateInstance",
           "sso:DescribeRegisteredRegions",
           "sso:GetSharedSsoConfiguration",
           "iam:ListPolicies"
         ],
         "Sid": "AllowSSOCreateapplication"
       }
     ]
   }
   ```

------

1. 정책을 IAM 자격 증명(사용자, 그룹 또는 역할)에 연결합니다. 관련 지침은 [IAM 자격 증명 권한 추가 및 제거](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)를 참조하세요.

# EMR Studio 설정
<a name="emr-studio-set-up"></a>

다음 단계를 완료하여 Amazon EMR Studio를 설정합니다.

**시작하기 전에**

**참고**  
Amazon EMR on EKS에서 EMR Studio를 사용하려는 경우 Studio를 설정하기 전에 먼저 EMR Studio용 Amazon EMR on EKS를 설정하는 것이 좋습니다.

EMR Studio를 설정하기 전에 다음 항목을 준비해야 합니다.
+  AWS 계정. 지침은 [Amazon EMR을 설정하기 전에](emr-setting-up.md) 섹션을 참조하세요.
+ EMR Studio를 생성하고 관리할 수 있는 권한. 자세한 내용은 [EMR Studio를 생성 및 관리하는 관리자 권한](emr-studio-admin-permissions.md) 단원을 참조하십시오.
+ EMR Studio가 Studio에서 Workspace와 노트북 파일을 백업할 수 있는 Amazon S3 버킷. 관련 지침은 *Amazon Simple Storage Service (S3) 사용 설명서*의 [버킷 생성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)을 참조하세요.
+ Amazon EMR on EC2 또는 Amazon EMR on EK 클러스터를 연결하거나 Git 리포지토리를 사용하려면 Studio용 Amazon Virtual Private Cloud(VPC)와 최대 5개의 서브넷이 필요합니다. EMR Studio를 EMR Serverless와 함께 사용하는 경우 VPC가 필요하지 않습니다. 네트워킹 구성 방법에 대한 팁은 [EMR Studio의 VPC 및 서브넷 모범 사례](emr-studio-vpc-subnet-best-practices.md) 섹션을 참조하세요.

**EMR Studio를 설정하는 방법**

1.  [Amazon EMR Studio의 인증 모드 선택](emr-studio-authentication.md)

1. 다음 Studio 리소스를 생성합니다.
   + [EMR Studio 서비스 역할 생성](emr-studio-service-role.md)
   + [Amazon EC2 또는 Amazon EKS에 대한 EMR Studio 사용자 권한 구성](emr-studio-user-permissions.md)
   + (선택 사항) [EMR Studio 네트워크 트래픽을 제어할 보안 그룹을 정의합니다.](emr-studio-security-groups.md).

1. [EMR Studio 생성](emr-studio-create-studio.md)

1. [EMR Studio에 사용자 또는 그룹 할당](emr-studio-manage-users.md#emr-studio-assign-users-groups)

설정 단계를 완료한 후 [Amazon EMR Studio 사용](use-an-emr-studio.md) 작업을 수행할 수 있습니다.

# Amazon EMR Studio의 인증 모드 선택
<a name="emr-studio-authentication"></a>

EMR Studio는 IAM 인증 모드 및 IAM Identity Center 인증 모드와 같은 두 가지 인증 모드를 지원합니다. IAM 모드는 AWS Identity and Access Management (IAM)을 사용하는 반면, IAM Identity Center 모드는를 사용합니다 AWS IAM Identity Center. EMR Studio를 생성할 때 해당 Studio의 모든 사용자에 대한 인증 모드를 선택합니다. 여러 인증 모드에 대한 자세한 내용은 [인증 및 사용자 로그인](how-emr-studio-works.md#emr-studio-login) 섹션을 참조하세요.

다음 테이블을 사용하여 EMR Studio의 인증 모드를 선택합니다.


****  

| 상황... | 권장 사항 | 
| --- | --- | 
| IAM 인증 또는 페더레이션을 잘 알고 있거나 이전에 설정한 경험이 있는 경우 |  [IAM 인증 모드](#emr-studio-iam-authentication). 이 경우 다음과 같은 이점을 제공합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/emr-studio-authentication.html)  | 
|  AWS 또는 Amazon EMR 신규 |  [IAM Identity Center 인증 모드](#emr-studio-enable-sso). 이 경우 다음과 같은 기능을 제공합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/emr-studio-authentication.html)  | 

## Amazon EMR Studio에 대한 IAM 인증 모드 설정
<a name="emr-studio-iam-authentication"></a>

IAM 인증 모드에서는 IAM 인증 또는 IAM 페더레이션을 사용할 수 있습니다. IAM *인증*을 사용하면 IAM의 사용자, 그룹, 역할과 같은 IAM 자격 증명을 관리할 수 있습니다. IAM 권한 정책 및 [ABAC(속성 기반 액세스 제어)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)를 사용하여 Studio에 대한 액세스 권한을 사용자에게 부여합니다. IAM *페더레이션*을 사용하면 타사 ID 제공업체(IdP)와 간에 신뢰를 구축할 수 AWS 있으므로 IdP를 통해 사용자 ID를 관리할 수 있습니다.

**참고**  
이미 IAM을 사용하여 AWS 리소스에 대한 액세스를 제어하거나 IAM에 대한 ID 제공업체(IdP)를 이미 구성한 경우 EMR Studio에 대한 IAM 인증 모드를 사용할 때 사용자 권한을 [IAM 인증 모드의 사용자 권한](how-emr-studio-works.md#emr-studio-iam-authorization) 설정하려면 섹션을 참조하세요.

### Amazon EMR Studio에 대한 IAM 페더레이션 사용
<a name="emr-studio-iam-federation"></a>

EMR Studio에 IAM 페더레이션을 사용하려면 AWS 계정 와 ID 제공업체(IdP) 간에 신뢰 관계를 생성하고 페더레이션 사용자가에 액세스할 수 있도록 합니다 AWS Management Console. 이 신뢰 관계를 구축하기 위해 수행하는 단계는 IdP의 페더레이션 표준에 따라 다릅니다.

일반적으로 외부 IdP와의 페더레이션을 구성하려면 다음 작업을 완료합니다. 전체 지침은 *AWS Identity and Access Management 사용 설명서*에서 [SAML 2.0 페더레이션 사용자가 AWS Management Console에 액세스할 수 있게 하기](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-saml.html) 및 [사용자 지정 ID 브로커가 AWS Management Console에 액세스할 수 있도록 하기](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_enable-console-custom-url.html)를 참조하세요.

1. IdP에서 정보를 수집합니다. 일반적으로 IdP의 SAML 인증 요청을 검증하기 위한 메타데이터 문서를 생성하는 작업이 이에 해당합니다.

1. ID 제공업체 IAM 엔터티를 생성하여 IdP에 대한 정보를 저장합니다. 관련 지침은 [IAM 자격 증명 제공업체 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create.html)을 참조하세요.

1. IdP에 대해 하나 이상의 IAM 역할을 생성합니다. EMR Studio는 사용자가 로그인할 때 페더레이션 사용자에게 역할을 할당합니다. 그 역할은 조직의 IdP가 AWS에 액세스하기 위해 임시 보안 인증을 요청할 수 있도록 허용합니다. 관련 지침은 [서드 파티 ID 제공업체의 역할 만들기(페더레이션)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp.html)를 참조하세요. 역할에 할당하는 권한 정책에 따라 페더레이션 사용자가 AWS 및 EMR Studio에서 수행할 수 있는 작업이 결정됩니다. 자세한 내용은 [IAM 인증 모드의 사용자 권한](how-emr-studio-works.md#emr-studio-iam-authorization) 단원을 참조하십시오.

1. (SAML 공급자의 경우) 페더레이션 사용자가 수임할 AWS 및 역할에 대한 정보로 IdP를 구성하여 SAML 신뢰를 완료합니다. 이 구성 프로세스는 IdP와 간에 *신뢰 당사자 신뢰를* 생성합니다 AWS. 자세한 내용은 [신뢰 당사자 신뢰로 SAML 2.0 IdP 구성 및 클레임 추가](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_saml_relying-party.html)를 참조하세요.

**IdP 포털에서 EMR Studio를 SAML 애플리케이션으로 구성하는 방법**

Studio에 대한 딥 링크를 사용하여 특정 EMR Studio를 SAML 애플리케이션으로 구성할 수 있습니다. 이렇게 하면 사용자가 Amazon EMR 콘솔을 탐색하는 대신 IdP 포털에 로그인하여 특정 Studio를 시작할 수 있습니다.
+ 다음 형식을 사용하여 SAML 어설션 확인 후 EMR Studio에 대한 딥 링크를 랜딩 URL로 구성합니다.

  ```
  https://console.aws.amazon.com/emr/home?region=<aws-region>#studio/<your-studio-id>/start
  ```

## Amazon EMR Studio에 대한 IAM Identity Center 인증 모드 설정
<a name="emr-studio-enable-sso"></a>

EMR Studio AWS IAM Identity Center 를 준비하려면 ID 소스를 구성하고 사용자 및 그룹을 프로비저닝해야 합니다. 프로비저닝은 IAM Identity Center와 IAM Identity Center를 사용하는 애플리케이션에서 사용자 및 그룹 정보를 사용할 수 있도록 하는 프로세스입니다. 자세한 내용은 [사용자 및 그룹 프로비저닝](https://docs.aws.amazon.com/singlesignon/latest/userguide/users-groups-provisioning.html#user-group-provision)을 참조하세요.

EMR Studio는 IAM Identity Center에서 다음과 같은 ID 제공업체(idP) 사용을 지원합니다.
+ **AWS Managed Microsoft AD 및 자체 관리형 Active Directory -** 자세한 내용은 [Microsoft AD 디렉터리에 연결을 참조하세요](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-ad.html).
+ **SAML 기반 제공업체** - 전체 목록은 [Supported identity providers](https://docs.aws.amazon.com/singlesignon/latest/userguide/supported-idps.html)를 참조하세요.
+ **The IAM Identity Center directory** – 자세한 내용은 [Manage identities in IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/manage-your-identity-source-sso.html)를 참조하세요.

**EMR Studio에 대한 IAM Identity Center를 설정하는 방법**

1. EMR Studio에 대한 IAM Identity Center를 설정하려면 다음이 필요합니다.
   +  AWS 조직의 여러 계정을 사용하는 경우 조직의 관리 계정입니다.
**참고**  
관리 계정은 IAM Identity Center를 활성화하고 사용자 및 그룹을 *프로비저닝*하는 데만 사용해야 합니다. IAM Identity Center를 설정한 후 멤버 계정을 사용하여 EMR Studio를 생성하고 사용자와 그룹을 *할당*합니다. AWS 용어에 대한 자세한 내용은 [AWS Organizations 용어 및 개념을 참조하세요](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html).
   + 2019년 11월 25일 이전에 IAM Identity Center를 활성화한 경우 AWS 조직의 계정에 IAM Identity Center를 사용하는 애플리케이션을 활성화해야 할 수 있습니다. 자세한 내용은 [AWS 계정에서 IAM Identity Center 통합 애플리케이션 활성화를 참조하세요](https://docs.aws.amazon.com/singlesignon/latest/userguide/app-enablement.html#enable-app-enablement).
   + [IAM Identity Center prerequisites](https://docs.aws.amazon.com/singlesignon/latest/userguide/prereqs.html) 페이지에 필수 조건이 나열되어 있는지 확인합니다.

1. [IAM Identity Center 활성화](https://docs.aws.amazon.com/singlesignon/latest/userguide/step1.html)의 지침에 따라 EMR Studio를 생성하려는 AWS 리전 에서 IAM Identity Center를 활성화합니다.

1. IAM Identity Center를 ID 제공업체에 연결하고 Studio에 할당할 사용자 및 그룹을 프로비저닝합니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/emr-studio-authentication.html)

이제 자격 증명 저장소의 사용자와 그룹을 EMR Studio에 할당할 수 있습니다. 지침은 [EMR Studio에 사용자 또는 그룹 할당](emr-studio-manage-users.md#emr-studio-assign-users-groups) 섹션을 참조하세요.

# EMR Studio 서비스 역할 생성
<a name="emr-studio-service-role"></a>

## EMR Studio 서비스 역할 정보
<a name="emr-studio-about-service-role"></a>

각 EMR Studio는 Studio가 다른 AWS 서비스와 상호 작용할 수 있는 권한이 있는 IAM 역할을 사용합니다. 이 서비스 역할에는 EMR Studio가 Workspace와 클러스터 간에 보안 네트워크 채널을 설정하고, 노트북 파일을 저장하고 Amazon S3 Control, Workspace를 Git 리포지토리에 연결하는 AWS Secrets Manager 동안에 액세스할 수 있는 권한이 포함되어야 합니다.

Studio 서비스 역할(세션 정책 대신)을 사용하여 노트북 파일 저장을 위해 모든 Amazon S3 액세스 권한을 정의하고 AWS Secrets Manager 액세스 권한을 정의합니다.

## Amazon EC2 또는 Amazon EKS에서 EMR Studio의 서비스 역할을 생성하는 방법
<a name="emr-studio-service-role-instructions"></a>

1. [역할 생성의 지침에 따라 AWS 서비스에 권한을 위임](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)하고 다음 신뢰 정책을 사용하여 서비스 역할을 생성합니다.
**중요**  
다음 신뢰 정책에는 EMR Studio에 부여하는 권한을 계정의 특정 리소스로 제한하는 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 및 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 글로벌 조건 키가 포함되어 있습니다. 이를 사용하면 [혼동된 대리자 문제](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)를 방지할 수 있습니다.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "sts:AssumeRole"
         ],
         "Resource": "arn:aws:iam::123456789012:role/EMRStudioServiceRole",
         "Condition": {
           "StringEquals": {
             "aws:SourceAccount": "123456789012"
           },
           "ArnLike": {
             "aws:SourceArn": "arn:aws:elasticmapreduce:*:123456789012:*"
           }
         },
         "Sid": "AllowSTSAssumerole"
       }
     ]
   }
   ```

------

1. 기본 역할 권한을 제거합니다. 그런 다음, 다음 샘플 IAM 권한 정책의 권한을 포함합니다. 또는 [EMR Studio 서비스 역할 권한](#emr-studio-service-role-permissions-table)을 사용하는 사용자 지정 보안 정책을 생성할 수 있습니다.
**중요**  
Amazon EC2 태그 기반 액세스 제어가 EMR Studio에서 작동하려면 다음 정책의 내용대로 `ModifyNetworkInterfaceAttribute` API에 대한 액세스를 설정해야 합니다.
EMR Studio가 서비스 역할을 사용하기 위해서는 `AllowAddingEMRTagsDuringDefaultSecurityGroupCreation` 및 `AllowAddingTagsDuringEC2ENICreation` 명령문은 절대로 변경하지 않아야 합니다.
예제 정책을 사용하려면 다음 리소스에 `"for-use-with-amazon-emr-managed-policies"` 키와 `"true"` 값의 태그를 지정해야 합니다.  
EMR Studio용 Amazon Virtual Private Cloud(VPC).
Studio에서 사용할 각 서브넷
모든 사용자 지정 EMR Studio 보안 그룹. EMR Studio 평가판 기간에 생성한 보안 그룹을 계속 사용하려면 여기에 태그를 지정해야 합니다.
Studio 사용자가 Git 리포지토리를 Workspace에 연결하는 데 사용하는 AWS Secrets Manager 에서 유지 관리되는 보안 암호입니다.
 AWS Management Console에서 관련 리소스 화면의 **태그** 탭을 사용하여 리소스에 태그를 적용할 수 있습니다.

   해당하는 경우 다음 정책에서 `"Resource":"*"`의 `*`를 변경하여 명령문이 사용 사례에서 다루는 리소스에 대한 Amazon 리소스 이름(ARN)을 지정합니다.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "AllowEMRReadOnlyActions",
         "Effect": "Allow",
         "Action": [
           "elasticmapreduce:ListInstances",
           "elasticmapreduce:DescribeCluster",
           "elasticmapreduce:ListSteps"
         ],
         "Resource": [
           "*"
         ]
       },
       {
         "Sid": "AllowEC2ENIActionsWithEMRTags",
         "Effect": "Allow",
         "Action": [
           "ec2:CreateNetworkInterfacePermission",
           "ec2:DeleteNetworkInterface"
         ],
         "Resource": [
           "arn:aws:ec2:*:*:network-interface/*"
         ],
         "Condition": {
           "StringEquals": {
             "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true"
           }
         }
       },
       {
         "Sid": "AllowEC2ENIAttributeAction",
         "Effect": "Allow",
         "Action": [
           "ec2:ModifyNetworkInterfaceAttribute"
         ],
         "Resource": [
           "arn:aws:ec2:*:*:instance/*",
           "arn:aws:ec2:*:*:network-interface/*",
           "arn:aws:ec2:*:*:security-group/*"
         ]
       },
       {
         "Sid": "AllowEC2SecurityGroupActionsWithEMRTags",
         "Effect": "Allow",
         "Action": [
           "ec2:AuthorizeSecurityGroupEgress",
           "ec2:AuthorizeSecurityGroupIngress",
           "ec2:RevokeSecurityGroupEgress",
           "ec2:RevokeSecurityGroupIngress",
           "ec2:DeleteNetworkInterfacePermission"
         ],
         "Resource": [
           "*"
         ],
         "Condition": {
           "StringEquals": {
             "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true"
           }
         }
       },
       {
         "Sid": "AllowDefaultEC2SecurityGroupsCreationWithEMRTags",
         "Effect": "Allow",
         "Action": [
           "ec2:CreateSecurityGroup"
         ],
         "Resource": [
           "arn:aws:ec2:*:*:security-group/*"
         ],
         "Condition": {
           "StringEquals": {
             "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true"
           }
         }
       },
       {
         "Sid": "AllowDefaultEC2SecurityGroupsCreationInVPCWithEMRTags",
         "Effect": "Allow",
         "Action": [
           "ec2:CreateSecurityGroup"
         ],
         "Resource": [
           "arn:aws:ec2:*:*:vpc/*"
         ],
         "Condition": {
           "StringEquals": {
             "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true"
           }
         }
       },
       {
         "Sid": "AllowAddingEMRTagsDuringDefaultSecurityGroupCreation",
         "Effect": "Allow",
         "Action": [
           "ec2:CreateTags"
         ],
         "Resource": [
           "arn:aws:ec2:*:*:security-group/*"
         ],
         "Condition": {
           "StringEquals": {
             "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true",
             "ec2:CreateAction": "CreateSecurityGroup"
           }
         }
       },
       {
         "Sid": "AllowEC2ENICreationWithEMRTags",
         "Effect": "Allow",
         "Action": [
           "ec2:CreateNetworkInterface"
         ],
         "Resource": [
           "arn:aws:ec2:*:*:network-interface/*"
         ],
         "Condition": {
           "StringEquals": {
             "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true"
           }
         }
       },
       {
         "Sid": "AllowEC2ENICreationInSubnetAndSecurityGroupWithEMRTags",
         "Effect": "Allow",
         "Action": [
           "ec2:CreateNetworkInterface"
         ],
         "Resource": [
           "arn:aws:ec2:*:*:subnet/*",
           "arn:aws:ec2:*:*:security-group/*"
         ],
         "Condition": {
           "StringEquals": {
             "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true"
           }
         }
       },
       {
         "Sid": "AllowAddingTagsDuringEC2ENICreation",
         "Effect": "Allow",
         "Action": [
           "ec2:CreateTags"
         ],
         "Resource": [
           "arn:aws:ec2:*:*:network-interface/*"
         ],
         "Condition": {
           "StringEquals": {
             "ec2:CreateAction": "CreateNetworkInterface"
           }
         }
       },
       {
         "Sid": "AllowEC2ReadOnlyActions",
         "Effect": "Allow",
         "Action": [
           "ec2:DescribeSecurityGroups",
           "ec2:DescribeNetworkInterfaces",
           "ec2:DescribeTags",
           "ec2:DescribeInstances",
           "ec2:DescribeSubnets",
           "ec2:DescribeVpcs"
         ],
         "Resource": [
           "*"
         ]
       },
       {
         "Sid": "AllowSecretsManagerReadOnlyActionsWithEMRTags",
         "Effect": "Allow",
         "Action": [
           "secretsmanager:GetSecretValue"
         ],
         "Resource": [
           "arn:aws:secretsmanager:*:*:secret:*"
         ],
         "Condition": {
           "StringEquals": {
             "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true"
           }
         }
       },
       {
         "Sid": "AllowWorkspaceCollaboration",
         "Effect": "Allow",
         "Action": [
           "iam:GetUser",
           "iam:GetRole",
           "iam:ListUsers",
           "iam:ListRoles",
           "sso:GetManagedApplicationInstance",
           "sso-directory:SearchUsers"
         ],
         "Resource": [
           "*"
         ]
       }
     ]
   }
   ```

------

1. 서비스 역할에 EMR Studio의 Amazon S3 위치에 대한 읽기 및 쓰기 액세스 권한을 부여합니다. 다음과 같은 최소 권한 세트를 사용합니다. 자세한 내용은 [Amazon S3: S3 버킷에 있는 객체에 대한 읽기 및 쓰기 액세스 권한을 프로그래밍 방식으로 콘솔에서 허용](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_s3_rw-bucket-console.html) 예제를 참조하세요.

   ```
   "s3:PutObject",
   "s3:GetObject",
   "s3:GetEncryptionConfiguration",
   "s3:ListBucket",
   "s3:DeleteObject"
   ```

   Amazon S3 버킷을 암호화하는 경우 AWS Key Management Service에 다음 권한을 포함합니다.

   ```
   "kms:Decrypt",
   "kms:GenerateDataKey",
   "kms:ReEncryptFrom",
   "kms:ReEncryptTo",
   "kms:DescribeKey"
   ```

1. 사용자 수준에서 Git 암호에 대한 액세스를 제어하려는 경우, EMR Studio **사용자 역할 정책**의 `secretsmanager:GetSecretValue`에 태그 기반 권한을 추가하고, EMR Studio **서비스 역할 정책**에서 `secretsmanager:GetSecretValue` 정책에 대한 권한을 제거하세요. 세분화된 사용자 권한 설정에 대한 자세한 내용은 [EMR Studio 사용자를 위한 권한 정책 생성](emr-studio-user-permissions.md#emr-studio-permissions-policies) 섹션을 참조하세요.

## EMR Serverless의 최소 서비스 역할
<a name="emr-studio-service-role-serverless"></a>

EMR Studio 노트북을 통해 EMR Serverless에서 대화형 워크로드를 실행하려면 이전 섹션([Amazon EC2 또는 Amazon EKS에서 EMR Studio의 서비스 역할을 생성하는 방법](#emr-studio-service-role-instructions))에서 EMR Studio를 설정할 때 사용한 것과 동일한 신뢰 정책을 사용합니다.

IAM 정책의 경우 최소 실행 정책에는 다음과 같은 권한이 있습니다. EMR Studio 및 Workspace를 구성할 때 사용하려는 버킷 이름으로 `bucket-name`을 업데이트합니다. EMR Studio는 버킷을 사용하여 Studio에서 Workspace 및 노트북 파일을 백업합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ObjectActions",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:DeleteObject"
      ],
      "Resource": [
        "arn:aws:s3:::bucket-name/*"
      ]
    },
    {
      "Sid": "BucketActions",
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetEncryptionConfiguration"
      ],
      "Resource": [
        "arn:aws:s3:::bucket-name"
      ]
    }
  ]
}
```

------

암호화된 Amazon S3 버킷을 사용하려는 경우 정책에 다음 권한을 추가합니다.

```
"kms:Decrypt",
"kms:GenerateDataKey",
"kms:ReEncryptFrom",
"kms:ReEncryptTo",
"kms:DescribeKey"
```

## EMR Studio 서비스 역할 권한
<a name="emr-studio-service-role-permissions-table"></a>

다음 테이블에는 EMR Studio가 서비스 역할을 사용하여 수행하는 작업과 각 작업에 필요한 IAM 작업이 나열되어 있습니다.


| 연산 | 작업 | 
| --- | --- | 
| Workspace와 EMR 클러스터 간 보안 네트워크 채널을 설정하고 필요한 정리 작업을 수행합니다. |  <pre>"ec2:CreateNetworkInterface", <br />"ec2:CreateNetworkInterfacePermission", <br />"ec2:DeleteNetworkInterface", <br />"ec2:DeleteNetworkInterfacePermission", <br />"ec2:DescribeNetworkInterfaces", <br />"ec2:ModifyNetworkInterfaceAttribute", <br />"ec2:AuthorizeSecurityGroupEgress", <br />"ec2:AuthorizeSecurityGroupIngress", <br />"ec2:CreateSecurityGroup",<br />"ec2:DescribeSecurityGroups", <br />"ec2:RevokeSecurityGroupEgress",<br />"ec2:DescribeTags",<br />"ec2:DescribeInstances",<br />"ec2:DescribeSubnets",<br />"ec2:DescribeVpcs",<br />"elasticmapreduce:ListInstances", <br />"elasticmapreduce:DescribeCluster", <br />"elasticmapreduce:ListSteps"</pre>  | 
| 에 저장된 Git 자격 증명을 사용하여 Git AWS Secrets Manager 리포지토리를 Workspace에 연결합니다. |  <pre>"secretsmanager:GetSecretValue"</pre>  | 
| 보안 네트워크 채널을 설정하는 동안 EMR Studio가 생성하는 네트워크 인터페이스 및 기본 보안 그룹에 AWS 태그를 적용합니다. 자세한 내용을 알아보려면 [AWS 리소스에 태깅](https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html)을 참조하세요. |  <pre>"ec2:CreateTags"</pre>  | 
| 노트북 파일 및 메타데이터에 액세스하거나 Amazon S3에 업로드합니다. |  <pre>"s3:PutObject",<br />"s3:GetObject",<br />"s3:GetEncryptionConfiguration",<br />"s3:ListBucket",<br />"s3:DeleteObject" </pre> 암호화된 Amazon S3 버킷을 사용하는 경우 다음 권한을 포함합니다. <pre>"kms:Decrypt",<br />"kms:GenerateDataKey",<br />"kms:ReEncryptFrom",<br />"kms:ReEncryptTo",<br />"kms:DescribeKey"</pre>  | 
| Workspace 협업을 활성화하고 구성합니다. |  <pre>"iam:GetUser",<br />"iam:GetRole",<br />"iam:ListUsers",<br />"iam:ListRoles",<br />"sso:GetManagedApplicationInstance",<br />"sso-directory:SearchUsers",<br />"sso:DescribeApplication",<br />"sso:DescribeInstance"</pre>  | 
| [에서 고객 관리형 키(CMK)를 사용하여 EMR Studio 워크스페이스 노트북 및 파일 암호화 AWS Key Management Service](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-workspace-storage-encryption)  |  <pre>"kms:Decrypt",<br />"kms:GenerateDataKey",<br />"kms:ReEncryptFrom",<br />"kms:ReEncryptTo",<br />"kms:DescribeKey"</pre>  | 

# Amazon EC2 또는 Amazon EKS에 대한 EMR Studio 사용자 권한 구성
<a name="emr-studio-user-permissions"></a>

세분화된 사용자 및 그룹 권한을 설정할 수 있도록 Amazon EMR Studio에 대한 사용자 권한 정책을 구성해야 합니다. EMR Studio에서 사용자 권한이 작동하는 방식에 대한 자세한 내용은 [Amazon EMR Studio 작동 방식](how-emr-studio-works.md)에서 [액세스 관리](how-emr-studio-works.md#emr-studio-access-control) 섹션을 참조하세요.

**참고**  
이 섹션에서 다루는 권한은 데이터 액세스 제어를 적용하지 않습니다. 입력 데이터 세트에 대한 액세스를 관리하려면 Studio에서 사용하는 클러스터에 대한 권한을 구성해야 합니다. 자세한 내용은 [Amazon EMR의 보안](emr-security.md) 단원을 참조하십시오.

## IAM Identity Center 인증 모드를 위한 EMR Studio 사용자 역할 생성
<a name="emr-studio-create-user-role"></a>

IAM Identity Center 인증 모드를 사용할 때는 EMR Studio 사용자 역할을 생성해야 합니다.

**EMR Studio의 사용자 역할을 생성하는 방법**

1. *AWS Identity and Access Management 사용 설명서*의 [AWS 역할에 권한을 위임하는 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)의 지침에 따라 사용자 역할을 생성합니다.

   역할을 생성할 때 다음과 같은 신뢰 관계 정책을 사용합니다.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "sts:AssumeRole",
           "sts:SetContext"
         ],
         "Resource": "arn:aws:iam::123456789012:role/EMRStudioServiceRole",
         "Sid": "AllowSTSAssumerole"
       }
     ]
   }
   ```

------

1. 기본 역할 권한 및 정책을 제거합니다.

1. 사용자와 그룹을 Studio에 할당하기 전에 EMR Studio 세션 정책을 사용자 역할에 연결합니다. 세션 정책을 작성하는 방법에 대한 지침은 [EMR Studio 사용자를 위한 권한 정책 생성](#emr-studio-permissions-policies) 섹션을 참조하세요.

## EMR Studio 사용자를 위한 권한 정책 생성
<a name="emr-studio-permissions-policies"></a>

다음 섹션을 참조하여 EMR Studio를 위한 권한 정책을 생성하세요.

**Topics**
+ [권한 정책 생성](#emr-studio-permissions-policies-create)
+ [Workspace 협업에 대한 소유권 설정](#emr-studio-workspace-collaboration-permissions)
+ [사용자 수준 Git 암호 정책 생성](#emr-studio-permissions-policies-git)
+ [IAM 자격 증명에 권한 정책 연결](#emr-studio-permissions-policies-attach)

**참고**  
노트북 파일 저장을 위한 Amazon S3 액세스 권한을 설정하고, Workspace를 Git 리포지토리에 연결할 때 암호를 읽을 수 있는 AWS Secrets Manager 액세스 권한을 설정하려면 EMR Studio 서비스 역할을 사용합니다.

### 권한 정책 생성
<a name="emr-studio-permissions-policies-create"></a>

사용자가 Studio에서 수행할 수 있는 작업을 지정하는 IAM 권한 정책을 하나 이상 생성합니다. 예를 들어, 이 페이지의 예제 정책을 사용하여 [기본](), [중급]() 및 [고급]() Studio 사용자 유형을 위한 세 가지 개별 정책을 생성할 수 있습니다.

사용자가 수행할 수 있는 각 Studio 작업에 대한 분석과 각 작업을 수행하는 데 필요한 최소 IAM 작업을 확인하려면 [AWS Identity and Access Management EMR Studio 사용자에 대한 권한](#emr-studio-iam-permissions-table) 섹션을 참조하세요. 정책 생성을 위한 단계를 확인하려면 *IAM 사용 설명서*의 [IAM 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)을 참조하세요.

권한 정책에 다음 명령문이 포함되어야 합니다.

```
{
            "Sid": "AllowAddingTagsOnSecretsWithEMRStudioPrefix",
            "Effect": "Allow",
            "Action": "secretsmanager:TagResource",
            "Resource": "arn:aws:secretsmanager:*:*:secret:emr-studio-*"
},
{
            "Sid": "AllowPassingServiceRoleForWorkspaceCreation",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::*:role/your-emr-studio-service-role"
            ],
            "Effect": "Allow"
}
```

### Workspace 협업에 대한 소유권 설정
<a name="emr-studio-workspace-collaboration-permissions"></a>

Workspace 협업을 사용하면 여러 사용자가 동일한 Workspace에서 동시에 작업할 수 있으며 Workspace UI의 **협업** 패널로 구성할 수 있습니다. **협업** 패널을 보고 사용하려면 사용자에게 다음 권한이 있어야 합니다. 이 권한이 있는 모든 사용자는 **협업** 패널을 보고 사용할 수 있습니다.

```
"elasticmapreduce:UpdateEditor",
"elasticmapreduce:PutWorkspaceAccess",
"elasticmapreduce:DeleteWorkspaceAccess",
"elasticmapreduce:ListWorkspaceAccessIdentities"
```

**협업** 패널에 대한 액세스를 제한하기 위해 태그 기반 액세스 제어를 사용할 수 있습니다. 사용자가 Workspace를 생성하면 EMR Studio는 Workspace를 생성하는 사용자의 ID가 값인 `creatorUserId`의 키와 함께 기본 태그를 적용합니다.

**참고**  
EMR Studio에서는 2021년 11월 16일 이후 만들어진 Workspaces에 `creatorUserId` 태그를 추가합니다. 이 날짜 이전에 생성한 작업 영역에 대해 협업을 구성할 수 있는 사용자를 제한하려면 Workspace에 `creatorUserId` 태그를 수동으로 추가한 다음, 사용자 권한 정책에서 태그 기반 액세스 제어를 사용하는 것이 좋습니다.

다음 예제 명령문을 사용하면 값이 사용자 ID(`aws:userId` 정책 변수로 표시됨)와 일치하는 `creatorUserId` 태그 키를 포함하는 모든 Workspace에 대해 협업을 구성할 수 있습니다. 즉, 이 명령문을 통해 사용자가 생성한 Workspace에 대해 협업을 구성할 수 있습니다. 정책 변수에 대해 자세히 알아보려면 *IAM 사용 설명서*의 [IAM 정책 요소: 변수 및 태그](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html)를 참조하세요.

```
    {
        "Sid": "UserRolePermissionsForCollaboration",
        "Action": [
            "elasticmapreduce:UpdateEditor",
            "elasticmapreduce:PutWorkspaceAccess",
            "elasticmapreduce:DeleteWorkspaceAccess",
            "elasticmapreduce:ListWorkspaceAccessIdentities"
        ],
        "Resource": "*",
        "Effect": "Allow",
        "Condition": {
            "StringEquals": {
                "elasticmapreduce:ResourceTag/creatorUserId": "${aws:userid}"
            }
        }
    }
```

### 사용자 수준 Git 암호 정책 생성
<a name="emr-studio-permissions-policies-git"></a>

**Topics**
+ [사용자 수준 권한을 사용하는 방법](#emr-studio-permissions-policies-user)
+ [서비스 수준 권한에서 사용자 수준 권한으로 전환하는 방법](#emr-studio-permissions-policies-transition)
+ [서비스 수준 권한을 사용하는 방법](#emr-studio-permissions-policies-service)

#### 사용자 수준 권한을 사용하는 방법
<a name="emr-studio-permissions-policies-user"></a>

EMR Studio에서는 Git 암호를 생성할 경우 `for-use-with-amazon-emr-managed-user-policies` 태그를 자동으로 추가합니다. 사용자 수준에서 Git 암호에 대한 액세스를 제어하려는 경우 아래 [서비스 수준 권한에서 사용자 수준 권한으로 전환하는 방법](#emr-studio-permissions-policies-transition) 섹션에 설명된 것처럼 태그 기반 권한을 `secretsmanager:GetSecretValue`가 있는 EMR Studio **사용자 역할 정책**에 추가하세요.

EMR Studio **서비스 역할 정책**에 `secretsmanager:GetSecretValue`에 대한 기존 권한이 있는 경우 해당 권한을 제거해야 합니다.

#### 서비스 수준 권한에서 사용자 수준 권한으로 전환하는 방법
<a name="emr-studio-permissions-policies-transition"></a>

**참고**  
`for-use-with-amazon-emr-managed-user-policies` 태그는 아래 **1단계**의 권한이 작업 영역 생성자에게 Git 암호에 대한 액세스 권한을 부여하도록 합니다. 하지만 2023년 9월 1일 이전에 Git 리포지토리를 연결했다면, 해당 Git 암호에 `for-use-with-amazon-emr-managed-user-policies` 태그가 적용되지 않아 이 암호의 액세스가 거부됩니다. 사용자 수준 권한을 적용하기 위해서는 JupyterLab에서 이전 암호를 재생성하고 적절한 Git 리포지토리를 다시 연결해야 합니다.  
정책 변수에 대한 자세한 내용을 확인하려면 *IAM 사용 설명서*의 [IAM 정책 요소: 변수 및 태그](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html)를 참조하세요.

1. 다음 권한을 [EMR Studio **사용자 역할 정책**](emr-studio-service-role.md)에 추가합니다. `"${aws:userid}"` 값이 있는 `for-use-with-amazon-emr-managed-user-policies` 키를 사용합니다.

   ```
   {
      "Sid": "AllowSecretsManagerReadOnlyActionsWithEMRTags",
       "Effect": "Allow",
       "Action": "secretsmanager:GetSecretValue",
       "Resource": "arn:aws:secretsmanager:*:*:secret:*",
       "Condition": {
           "StringEquals": {
               "secretsmanager:ResourceTag/for-use-with-amazon-emr-managed-user-policies": "${aws:userid}"
           }
       }
   }
   ```

1. 있는 경우 [EMR Studio **서비스 역할 정책**](emr-studio-service-role.md)에서 다음 권한을 제거합니다. 서비스 역할 정책은 각 사용자가 정의한 모든 암호에 적용되기 때문에 이 작업은 한 번만 수행하면 됩니다.

   ```
   {
       "Sid": "AllowSecretsManagerReadOnlyActionsWithEMRTags", 
       "Effect": "Allow", 
       "Action": [ 
           "secretsmanager:GetSecretValue" 
        ], 
       "Resource": "arn:aws:secretsmanager:*:*:secret:*", 
       "Condition": {
           "StringEquals": {
               "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true" 
           } 
       } 
   }
   ```

#### 서비스 수준 권한을 사용하는 방법
<a name="emr-studio-permissions-policies-service"></a>

2023년 9월 1일부로 EMR Studio는 사용자 수준 액세스 제어를 위해 `for-use-with-amazon-emr-managed-user-policies` 태그를 자동으로 추가합니다. 이 항목은 추가된 기능이기 때문에 [EMR Studio 서비스 역할](emr-studio-service-role.md)의 `GetSecretValue` 권한을 통해 사용할 수 있는 서비스 수준 액세스를 계속 사용할 수 있습니다.

2023년 9월 1일 이전에 생성된 암호의 경우 EMR Studio는 `for-use-with-amazon-emr-managed-user-policies` 태그를 추가하지 않았습니다. 서비스 수준 권한을 계속 사용하기 위해서는 기존 [EMR Studio 서비스 역할](emr-studio-service-role.md) 및 사용자 역할 권한을 유지하기만 하면 됩니다. 단, 개별 암호에 액세스할 수 있는 사용자를 제한하기 위해서는 [사용자 수준 권한을 사용하는 방법](#emr-studio-permissions-policies-user)의 단계에 따라 암호에 `for-use-with-amazon-emr-managed-user-policies` 태그를 수동으로 추가한 후, 해당 사용자 권한 정책의 태그 기반 액세스 제어를 사용할 것을 권장합니다.

정책 변수에 대한 자세한 내용을 확인하려면 *IAM 사용 설명서*의 [IAM 정책 요소: 변수 및 태그](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html)를 참조하세요.

### IAM 자격 증명에 권한 정책 연결
<a name="emr-studio-permissions-policies-attach"></a>

다음 테이블에는 EMR Studio 인증 모드에 따라 권한 정책을 연결하는 IAM 자격 증명이 요약되어 있습니다. 정책을 연결하는 방법에 대한 지침은 [IAM 자격 증명 권한 추가 및 제거](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)를 참조하세요.


****  

| 사용하는 항목 | 정책을 연결하는 대상... | 
| --- | --- | 
| IAM 인증 | IAM 자격 증명(사용자, 사용자 그룹 또는 역할) 예를 들어, AWS 계정의 사용자에게 권한 정책을 연결할 수 있습니다. | 
| 외부 ID 제공업체(idP)와의 IAM 페더레이션 |  IAM 역할 또는 외부 IdP에서 생성한 역할. SAML 2.0용 IAM 페더레이션이 이에 해당합니다. EMR Studio는 Studio에 대한 페더레이션 액세스 권한을 가진 사용자의 IAM 역할에 연결하는 권한을 사용합니다.  | 
| IAM Identity Center | Amazon EMR Studio 사용자 역할. | 

## 사용자 정책 예제
<a name="emr-studio-example-policies"></a>

다음 기본 사용자 정책은 대부분의 EMR Studio 작업을 허용하지만 이때 사용자는 새 Amazon EMR 클러스터를 생성할 수 없습니다.

### 기본 정책
<a name="basic"></a>

**중요**  
예제 정책에는 IAM 인증 모드를 사용할 때 사용자에게 허용해야 하는 `CreateStudioPresignedUrl` 권한이 포함되어 있지 않습니다. 자세한 내용은 [EMR Studio에 사용자 또는 그룹 할당](emr-studio-manage-users.md#emr-studio-assign-users-groups) 단원을 참조하십시오.

예제 정책에는 EMR Studio의 예제 서비스 역할과 함께 정책을 사용할 수 있도록 태그 기반 액세스 제어(TBAC)를 적용하는 `Condition` 요소가 포함되어 있습니다. 자세한 내용은 [EMR Studio 서비스 역할 생성](emr-studio-service-role.md) 단원을 참조하십시오.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowDefaultEC2SecurityGroupsCreationInVPCWithEMRTags",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateSecurityGroup"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:vpc/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "AllowAddingEMRTagsDuringDefaultSecurityGroupCreation",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:security-group/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true",
          "ec2:CreateAction": "CreateSecurityGroup"
        }
      }
    },
    {
      "Sid": "AllowSecretManagerListSecrets",
      "Action": [
        "secretsmanager:ListSecrets"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowSecretCreationWithEMRTagsAndEMRStudioPrefix",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:CreateSecret"
      ],
      "Resource": [
        "arn:aws:secretsmanager:*:*:secret:emr-studio-*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "AllowAddingTagsOnSecretsWithEMRStudioPrefix",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:TagResource"
      ],
      "Resource": [
        "arn:aws:secretsmanager:*:*:secret:emr-studio-*"
      ]
    },
    {
      "Sid": "AllowPassingServiceRoleForWorkspaceCreation",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::*:role/your-emr-studio-service-role>"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowS3ListAndLocationPermissions",
      "Action": [
        "s3:ListAllMyBuckets",
        "s3:ListBucket",
        "s3:GetBucketLocation"
      ],
      "Resource": [
        "arn:aws:s3:::*"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowS3ReadOnlyAccessToLogs",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::aws-logs-aws-111122223333>-region>/elasticmapreduce/*"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowConfigurationForWorkspaceCollaboration",
      "Action": [
        "elasticmapreduce:UpdateEditor",
        "elasticmapreduce:PutWorkspaceAccess",
        "elasticmapreduce:DeleteWorkspaceAccess",
        "elasticmapreduce:ListWorkspaceAccessIdentities"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "elasticmapreduce:ResourceTag/creatorUserId": "${aws:userId}"
        }
      }
    },
    {
      "Sid": "DescribeNetwork",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeVpcs",
        "ec2:DescribeSubnets",
        "ec2:DescribeSecurityGroups"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "ListIAMRoles",
      "Effect": "Allow",
      "Action": [
        "iam:ListRoles"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```

------

다음 중급 사용자 정책은 대부분의 EMR Studio 작업을 허용하고 사용자는 클러스터 템플릿을 사용하여 새 Amazon EMR 클러스터를 생성할 수 있습니다.

### 중급 정책
<a name="intermediate"></a>

**중요**  
예제 정책에는 IAM 인증 모드를 사용할 때 사용자에게 허용해야 하는 `CreateStudioPresignedUrl` 권한이 포함되어 있지 않습니다. 자세한 내용은 [EMR Studio에 사용자 또는 그룹 할당](emr-studio-manage-users.md#emr-studio-assign-users-groups) 단원을 참조하십시오.

예제 정책에는 EMR Studio의 예제 서비스 역할과 함께 정책을 사용할 수 있도록 태그 기반 액세스 제어(TBAC)를 적용하는 `Condition` 요소가 포함되어 있습니다. 자세한 내용은 [EMR Studio 서비스 역할 생성](emr-studio-service-role.md) 단원을 참조하십시오.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowEMRBasicActions",
      "Action": [
        "elasticmapreduce:CreateEditor",
        "elasticmapreduce:DescribeEditor",
        "elasticmapreduce:ListEditors",
        "elasticmapreduce:StartEditor",
        "elasticmapreduce:StopEditor",
        "elasticmapreduce:DeleteEditor",
        "elasticmapreduce:OpenEditorInConsole",
        "elasticmapreduce:AttachEditor",
        "elasticmapreduce:DetachEditor",
        "elasticmapreduce:CreateRepository",
        "elasticmapreduce:DescribeRepository",
        "elasticmapreduce:DeleteRepository",
        "elasticmapreduce:ListRepositories",
        "elasticmapreduce:LinkRepository",
        "elasticmapreduce:UnlinkRepository",
        "elasticmapreduce:DescribeCluster",
        "elasticmapreduce:ListInstanceGroups",
        "elasticmapreduce:ListBootstrapActions",
        "elasticmapreduce:ListClusters",
        "elasticmapreduce:ListSteps",
        "elasticmapreduce:CreatePersistentAppUI",
        "elasticmapreduce:DescribePersistentAppUI",
        "elasticmapreduce:GetPersistentAppUIPresignedURL",
        "elasticmapreduce:GetOnClusterAppUIPresignedURL"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowEMRContainersBasicActions",
      "Action": [
        "emr-containers:DescribeVirtualCluster",
        "emr-containers:ListVirtualClusters",
        "emr-containers:DescribeManagedEndpoint",
        "emr-containers:ListManagedEndpoints",
        "emr-containers:DescribeJobRun",
        "emr-containers:ListJobRuns"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowRetrievingManagedEndpointCredentials",
      "Effect": "Allow",
      "Action": [
        "emr-containers:GetManagedEndpointSessionCredentials"
      ],
      "Resource": [
        "arn:aws:emr-containers:us-west-1:123456789012:/virtualclusters/virtual-cluster-id/endpoints/managed-endpoint-id"
      ],
      "Condition": {
        "StringEquals": {
          "emr-containers:ExecutionRoleArn": [
            "arn:aws:iam::123456789012:role/emr-on-eks-execution-role"
          ]
        }
      }
    },
    {
      "Sid": "AllowSecretManagerListSecrets",
      "Action": [
        "secretsmanager:ListSecrets"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowSecretCreationWithEMRTagsAndEMRStudioPrefix",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:CreateSecret"
      ],
      "Resource": [
        "arn:aws:secretsmanager:*:*:secret:emr-studio-*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "AllowAddingTagsOnSecretsWithEMRStudioPrefix",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:TagResource"
      ],
      "Resource": [
        "arn:aws:secretsmanager:*:*:secret:emr-studio-*"
      ]
    },
    {
      "Sid": "AllowClusterTemplateRelatedIntermediateActions",
      "Action": [
        "servicecatalog:DescribeProduct",
        "servicecatalog:DescribeProductView",
        "servicecatalog:DescribeProvisioningParameters",
        "servicecatalog:ProvisionProduct",
        "servicecatalog:SearchProducts",
        "servicecatalog:UpdateProvisionedProduct",
        "servicecatalog:ListProvisioningArtifacts",
        "servicecatalog:ListLaunchPaths",
        "servicecatalog:DescribeRecord",
        "cloudformation:DescribeStackResources"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowPassingServiceRoleForWorkspaceCreation",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::*:role/your-emr-studio-service-role"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowS3ListAndLocationPermissions",
      "Action": [
        "s3:ListAllMyBuckets",
        "s3:ListBucket",
        "s3:GetBucketLocation"
      ],
      "Resource": [
        "arn:aws:s3:::*"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowS3ReadOnlyAccessToLogs",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::aws-logs-123456789012-us-east-1/elasticmapreduce/*"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowConfigurationForWorkspaceCollaboration",
      "Action": [
        "elasticmapreduce:UpdateEditor",
        "elasticmapreduce:PutWorkspaceAccess",
        "elasticmapreduce:DeleteWorkspaceAccess",
        "elasticmapreduce:ListWorkspaceAccessIdentities"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "elasticmapreduce:ResourceTag/creatorUserId": "${aws:userId}"
        }
      }
    },
    {
      "Sid": "DescribeNetwork",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeVpcs",
        "ec2:DescribeSubnets",
        "ec2:DescribeSecurityGroups"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "ListIAMRoles",
      "Effect": "Allow",
      "Action": [
        "iam:ListRoles"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "AllowServerlessActions",
      "Action": [
        "emr-serverless:CreateApplication",
        "emr-serverless:UpdateApplication",
        "emr-serverless:DeleteApplication",
        "emr-serverless:ListApplications",
        "emr-serverless:GetApplication",
        "emr-serverless:StartApplication",
        "emr-serverless:StopApplication",
        "emr-serverless:StartJobRun",
        "emr-serverless:CancelJobRun",
        "emr-serverless:ListJobRuns",
        "emr-serverless:GetJobRun",
        "emr-serverless:GetDashboardForJobRun",
        "emr-serverless:AccessInteractiveEndpoints"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowPassingRuntimeRoleForRunningServerlessJob",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::*:role/serverless-runtime-role"
      ],
      "Effect": "Allow"
    }
  ]
}
```

------

다음 고급 사용자 정책은 모든 EMR Studio 작업을 허용하고 사용자는 클러스터 템플릿을 사용하거나 클러스터 구성을 제공하여 새 Amazon EMR 클러스터를 생성할 수 있습니다.

### 고급 정책
<a name="advanced"></a>

**중요**  
예제 정책에는 IAM 인증 모드를 사용할 때 사용자에게 허용해야 하는 `CreateStudioPresignedUrl` 권한이 포함되어 있지 않습니다. 자세한 내용은 [EMR Studio에 사용자 또는 그룹 할당](emr-studio-manage-users.md#emr-studio-assign-users-groups) 단원을 참조하십시오.

예제 정책에는 EMR Studio의 예제 서비스 역할과 함께 정책을 사용할 수 있도록 태그 기반 액세스 제어(TBAC)를 적용하는 `Condition` 요소가 포함되어 있습니다. 자세한 내용은 [EMR Studio 서비스 역할 생성](emr-studio-service-role.md) 단원을 참조하십시오.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowEMRBasicActions",
      "Action": [
        "elasticmapreduce:CreateEditor",
        "elasticmapreduce:DescribeEditor",
        "elasticmapreduce:ListEditors",
        "elasticmapreduce:StartEditor",
        "elasticmapreduce:StopEditor",
        "elasticmapreduce:DeleteEditor",
        "elasticmapreduce:OpenEditorInConsole",
        "elasticmapreduce:AttachEditor",
        "elasticmapreduce:DetachEditor",
        "elasticmapreduce:CreateRepository",
        "elasticmapreduce:DescribeRepository",
        "elasticmapreduce:DeleteRepository",
        "elasticmapreduce:ListRepositories",
        "elasticmapreduce:LinkRepository",
        "elasticmapreduce:UnlinkRepository",
        "elasticmapreduce:DescribeCluster",
        "elasticmapreduce:ListInstanceGroups",
        "elasticmapreduce:ListBootstrapActions",
        "elasticmapreduce:ListClusters",
        "elasticmapreduce:ListSteps",
        "elasticmapreduce:CreatePersistentAppUI",
        "elasticmapreduce:DescribePersistentAppUI",
        "elasticmapreduce:GetPersistentAppUIPresignedURL",
        "elasticmapreduce:GetOnClusterAppUIPresignedURL"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowEMRContainersBasicActions",
      "Action": [
        "emr-containers:DescribeVirtualCluster",
        "emr-containers:ListVirtualClusters",
        "emr-containers:DescribeManagedEndpoint",
        "emr-containers:ListManagedEndpoints",
        "emr-containers:DescribeJobRun",
        "emr-containers:ListJobRuns"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowRetrievingManagedEndpointCredentials",
      "Effect": "Allow",
      "Action": [
        "emr-containers:GetManagedEndpointSessionCredentials"
      ],
      "Resource": [
        "arn:aws:emr-containers:*:123456789012:/virtualclusters/virtual-cluster-id/endpoints/managed-endpoint-id"
      ],
      "Condition": {
        "StringEquals": {
          "emr-containers:ExecutionRoleArn": [
            "arn:aws:iam::123456789012:role/emr-on-eks-execution-role"
          ]
        }
      }
    },
    {
      "Sid": "AllowSecretManagerListSecrets",
      "Action": [
        "secretsmanager:ListSecrets"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowSecretCreationWithEMRTagsAndEMRStudioPrefix",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:CreateSecret"
      ],
      "Resource": [
        "arn:aws:secretsmanager:*:*:secret:emr-studio-*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/for-use-with-amazon-emr-managed-policies": "true"
        }
      }
    },
    {
      "Sid": "AllowAddingTagsOnSecretsWithEMRStudioPrefix",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:TagResource"
      ],
      "Resource": [
        "arn:aws:secretsmanager:*:*:secret:emr-studio-*"
      ]
    },
    {
      "Sid": "AllowClusterTemplateRelatedIntermediateActions",
      "Action": [
        "servicecatalog:DescribeProduct",
        "servicecatalog:DescribeProductView",
        "servicecatalog:DescribeProvisioningParameters",
        "servicecatalog:ProvisionProduct",
        "servicecatalog:SearchProducts",
        "servicecatalog:UpdateProvisionedProduct",
        "servicecatalog:ListProvisioningArtifacts",
        "servicecatalog:ListLaunchPaths",
        "servicecatalog:DescribeRecord",
        "cloudformation:DescribeStackResources"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowEMRCreateClusterAdvancedActions",
      "Action": [
        "elasticmapreduce:RunJobFlow"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowPassingServiceRoleForWorkspaceCreation",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::*:role/your-emr-studio-service-role",
        "arn:aws:iam::*:role/EMR_DefaultRole_V2",
        "arn:aws:iam::*:role/EMR_EC2_DefaultRole"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowS3ListAndLocationPermissions",
      "Action": [
        "s3:ListAllMyBuckets",
        "s3:ListBucket",
        "s3:GetBucketLocation"
      ],
      "Resource": [
        "arn:aws:s3:::*"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowS3ReadOnlyAccessToLogs",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::aws-logs-123456789012-us-east-1/elasticmapreduce/*"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowConfigurationForWorkspaceCollaboration",
      "Action": [
        "elasticmapreduce:UpdateEditor",
        "elasticmapreduce:PutWorkspaceAccess",
        "elasticmapreduce:DeleteWorkspaceAccess",
        "elasticmapreduce:ListWorkspaceAccessIdentities"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow",
      "Condition": {
        "StringEquals": {
          "elasticmapreduce:ResourceTag/creatorUserId": "${aws:userId}"
        }
      }
    },
    {
      "Sid": "SageMakerDataWranglerForEMRStudio",
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreatePresignedDomainUrl",
        "sagemaker:DescribeDomain",
        "sagemaker:ListDomains",
        "sagemaker:ListUserProfiles"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "DescribeNetwork",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeVpcs",
        "ec2:DescribeSubnets",
        "ec2:DescribeSecurityGroups"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "ListIAMRoles",
      "Effect": "Allow",
      "Action": [
        "iam:ListRoles"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "AllowServerlessActions",
      "Action": [
        "emr-serverless:CreateApplication",
        "emr-serverless:UpdateApplication",
        "emr-serverless:DeleteApplication",
        "emr-serverless:ListApplications",
        "emr-serverless:GetApplication",
        "emr-serverless:StartApplication",
        "emr-serverless:StopApplication",
        "emr-serverless:StartJobRun",
        "emr-serverless:CancelJobRun",
        "emr-serverless:ListJobRuns",
        "emr-serverless:GetJobRun",
        "emr-serverless:GetDashboardForJobRun",
        "emr-serverless:AccessInteractiveEndpoints"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowPassingRuntimeRoleForRunningServerlessJob",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::*:role/serverless-runtime-role"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowCodeWhisperer",
      "Effect": "Allow",
      "Action": [
        "codewhisperer:GenerateRecommendations"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "AllowAthenaSQL",
      "Action": [
        "athena:StartQueryExecution",
        "athena:StopQueryExecution",
        "athena:GetQueryExecution",
        "athena:GetQueryRuntimeStatistics",
        "athena:GetQueryResults",
        "athena:ListQueryExecutions",
        "athena:BatchGetQueryExecution",
        "athena:GetNamedQuery",
        "athena:ListNamedQueries",
        "athena:BatchGetNamedQuery",
        "athena:UpdateNamedQuery",
        "athena:DeleteNamedQuery",
        "athena:ListDataCatalogs",
        "athena:GetDataCatalog",
        "athena:ListDatabases",
        "athena:GetDatabase",
        "athena:ListTableMetadata",
        "athena:GetTableMetadata",
        "athena:ListWorkGroups",
        "athena:GetWorkGroup",
        "athena:CreateNamedQuery",
        "athena:GetPreparedStatement",
        "glue:CreateDatabase",
        "glue:DeleteDatabase",
        "glue:GetDatabase",
        "glue:GetDatabases",
        "glue:UpdateDatabase",
        "glue:CreateTable",
        "glue:DeleteTable",
        "glue:BatchDeleteTable",
        "glue:UpdateTable",
        "glue:GetTable",
        "glue:GetTables",
        "glue:BatchCreatePartition",
        "glue:CreatePartition",
        "glue:DeletePartition",
        "glue:BatchDeletePartition",
        "glue:UpdatePartition",
        "glue:GetPartition",
        "glue:GetPartitions",
        "glue:BatchGetPartition",
        "kms:ListAliases",
        "kms:ListKeys",
        "kms:DescribeKey",
        "lakeformation:GetDataAccess",
        "s3:GetObject",
        "s3:ListBucket",
        "s3:ListBucketMultipartUploads",
        "s3:ListMultipartUploadParts",
        "s3:AbortMultipartUpload",
        "s3:PutObject",
        "s3:PutBucketPublicAccessBlock",
        "s3:ListAllMyBuckets"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow"
    }
  ]
}
```

------

다음 사용자 정책에는 EMR Studio Workspace와 함께 EMR Serverless 대화형 애플리케이션을 사용하는 데 필요한 최소 사용자 권한이 포함되어 있습니다.

### EMR Serverless 대화형 정책
<a name="serverless-interactive"></a>

EMR Studio를 사용하는 EMR Serverless 대화형 애플리케이션에 대한 사용자 권한을 포함하는 이 예제 정책에서 *serverless-runtime-role* 및 *emr-studio-service-role*의 자리 표시자를 올바른 [EMR Studio 서비스 역할](emr-studio-service-role.md) 및 [EMR Serverless 런타임 역할](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/security-iam-runtime-role.html)로 바꿉니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowServerlessActions",
      "Action": [
        "emr-serverless:CreateApplication",
        "emr-serverless:UpdateApplication",
        "emr-serverless:DeleteApplication",
        "emr-serverless:ListApplications",
        "emr-serverless:GetApplication",
        "emr-serverless:StartApplication",
        "emr-serverless:StopApplication",
        "emr-serverless:StartJobRun",
        "emr-serverless:CancelJobRun",
        "emr-serverless:ListJobRuns",
        "emr-serverless:GetJobRun",
        "emr-serverless:GetDashboardForJobRun",
        "emr-serverless:AccessInteractiveEndpoints"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowEMRBasicActions",
      "Action": [
        "elasticmapreduce:CreateEditor",
        "elasticmapreduce:DescribeEditor",
        "elasticmapreduce:ListEditors",
        "elasticmapreduce:UpdateStudio",
        "elasticmapreduce:StartEditor",
        "elasticmapreduce:StopEditor",
        "elasticmapreduce:DeleteEditor",
        "elasticmapreduce:OpenEditorInConsole",
        "elasticmapreduce:AttachEditor",
        "elasticmapreduce:DetachEditor",
        "elasticmapreduce:CreateStudio",
        "elasticmapreduce:DescribeStudio",
        "elasticmapreduce:DeleteStudio",
        "elasticmapreduce:ListStudios",
        "elasticmapreduce:CreateStudioPresignedUrl"
      ],
      "Resource": [
        "*"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowPassingRuntimeRoleForRunningEMRServerlessJob",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::*:role/serverless-runtime-role"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowPassingServiceRoleForWorkspaceCreation",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::*:role/emr-studio-service-role"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "AllowS3ListAndGetPermissions",
      "Action": [
        "s3:ListAllMyBuckets",
        "s3:ListBucket",
        "s3:GetBucketLocation",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::*"
      ],
      "Effect": "Allow"
    },
    {
      "Sid": "DescribeNetwork",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeVpcs",
        "ec2:DescribeSubnets",
        "ec2:DescribeSecurityGroups"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Sid": "ListIAMRoles",
      "Effect": "Allow",
      "Action": [
        "iam:ListRoles"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```

------

## AWS Identity and Access Management EMR Studio 사용자에 대한 권한
<a name="emr-studio-iam-permissions-table"></a>

다음 테이블에는 사용자가 수행할 수 있는 각 Amazon EMR Studio 작업이 포함되어 있으며 해당 작업을 수행하는 데 필요한 최소 IAM 작업이 나열되어 있습니다. 이러한 작업은 EMR Studio의 IAM 권한 정책(IAM 인증을 사용하는 경우) 또는 사용자 역할 세션 정책(IAM Identity Center 인증을 사용하는 경우)에서 허용됩니다.

이 테이블에는 EMR Studio의 각 예제 권한 정책에서 허용된 작업도 표시됩니다. 권한 정책 예제에 대한 자세한 내용은 [EMR Studio 사용자를 위한 권한 정책 생성](#emr-studio-permissions-policies) 섹션을 참조하세요.


| 작업 | 기본 | 중급 | Advanced | 관련 작업 | 
| --- | --- | --- | --- | --- | 
| Workspace 생성 및 삭제 | 예 | 예 | 예 |  <pre>"elasticmapreduce:CreateEditor", <br />"elasticmapreduce:DescribeEditor",<br />"elasticmapreduce:ListEditors", <br />"elasticmapreduce:DeleteEditor"</pre>  | 
| 협업 패널을 보고, Workspace 협업을 활성화하며, 공동 작업자를 추가합니다. 자세한 내용은 [Workspace 협업에 대한 소유권 설정](#emr-studio-workspace-collaboration-permissions)을 참조하세요. | 예 | 예 | 예 |  <pre>"elasticmapreduce:UpdateEditor",<br />"elasticmapreduce:PutWorkspaceAccess",<br />"elasticmapreduce:DeleteWorkspaceAccess",<br />"elasticmapreduce:ListWorkspaceAccessIdentities"</pre>  | 
| 새 EMR 클러스터를 생성할 때 Studio와 동일한 계정의 Amazon S3 Control 스토리지 버킷 목록을 확인하고 웹 UI를 사용하여 애플리케이션을 디버깅할 때 컨테이너 로그에 액세스합니다. | 예 | 예 | 예 |  <pre>"s3:ListAllMyBuckets",<br />"s3:ListBucket", <br />"s3:GetBucketLocation",<br />"s3:GetObject"</pre>  | 
| Workspace에 액세스 | 예 | 예 | 예 |  <pre>"elasticmapreduce:DescribeEditor", <br />"elasticmapreduce:ListEditors",<br />"elasticmapreduce:StartEditor", <br />"elasticmapreduce:StopEditor",<br />"elasticmapreduce:OpenEditorInConsole"</pre>  | 
| Workspace와 연결된 기존 Amazon EMR 클러스터 연결 또는 분리 | 예 | 예 | 예 |  <pre>"elasticmapreduce:AttachEditor",<br />"elasticmapreduce:DetachEditor",<br />"elasticmapreduce:ListClusters",<br />"elasticmapreduce:DescribeCluster",<br />"elasticmapreduce:ListInstanceGroups",<br />"elasticmapreduce:ListBootstrapActions"</pre>  | 
| Amazon EMR on EKS 연결 또는 분리  | 예 | 예 | 예 |  <pre>"elasticmapreduce:AttachEditor", <br />"elasticmapreduce:DetachEditor",<br />"emr-containers:ListVirtualClusters", <br />"emr-containers:DescribeVirtualCluster",<br />"emr-containers:ListManagedEndpoints",<br />"emr-containers:DescribeManagedEndpoint",<br />"emr-containers:GetManagedEndpointSessionCredentials"</pre>  | 
| Workspace와 연결된 EMR Serverless 애플리케이션 연결 또는 분리 | 아니요 | 예 | 예 |  <pre>"elasticmapreduce:AttachEditor",<br />"elasticmapreduce:DetachEditor",<br />"emr-serverless:GetApplication",<br />"emr-serverless:StartApplication",<br />"emr-serverless:ListApplications",<br />"emr-serverless:GetDashboardForJobRun",<br />"emr-serverless:AccessInteractiveEndpoints",<br />"iam:PassRole"</pre> EMR Serverless 작업 런타임 역할을 전달하려면 `PassRole` 권한이 필요합니다. 자세한 내용은 *Amazon EMR Serverless 사용 설명서*에서 [Job runtime roles](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/security-iam-runtime-role.html)를 참조하세요. | 
| 영구 애플리케이션 사용자 인터페이스를 사용하여 EC2에서 Amazon EMR 작업 디버깅 | 예 | 예 | 예 |  <pre>"elasticmapreduce:CreatePersistentAppUI",<br />"elasticmapreduce:DescribePersistentAppUI",<br />"elasticmapreduce:GetPersistentAppUIPresignedURL",<br />"elasticmapreduce:ListClusters",<br />"elasticmapreduce:ListSteps",<br />"elasticmapreduce:DescribeCluster",<br />"s3:ListBucket",<br />"s3:GetObject"</pre>  | 
| 클러스터 내 애플리케이션 사용자 인터페이스를 사용하여 EC2에서 Amazon EMR 작업 디버깅 | 예 | 예 | 예 |  <pre>"elasticmapreduce:GetOnClusterAppUIPresignedURL"</pre>  | 
| Spark 기록 서버를 사용하여 Amazon EMR on EKS 작업 실행 디버깅 | 예 | 예 | 예 |  <pre>"elasticmapreduce:CreatePersistentAppUI",<br />"elasticmapreduce:DescribePersistentAppUI",<br />"elasticmapreduce:GetPersistentAppUIPresignedURL",<br />"emr-containers:ListVirtualClusters",<br />"emr-containers:DescribeVirtualCluster",<br />"emr-containers:ListJobRuns",<br />"emr-containers:DescribeJobRun",<br />"s3:ListBucket",<br />"s3:GetObject"</pre>  | 
| Git 리포지토리 생성 및 삭제 | 예 | 예 | 예 |  <pre>"elasticmapreduce:CreateRepository", <br />"elasticmapreduce:DeleteRepository",<br />"elasticmapreduce:ListRepositories",<br />"elasticmapreduce:DescribeRepository",<br />"secretsmanager:CreateSecret",<br />"secretsmanager:ListSecrets",<br />"secretsmanager:TagResource"</pre>  | 
| Git 리포지토리 연결 또는 연결 해제 | 예 | 예 | 예 |  <pre>"elasticmapreduce:LinkRepository",<br />"elasticmapreduce:UnlinkRepository",<br />"elasticmapreduce:ListRepositories",<br />"elasticmapreduce:DescribeRepository"</pre>  | 
| 사전 정의된 클러스터 템플릿에서 새 클러스터 생성 | 아니요 | 예 | 예 |  <pre>"servicecatalog:SearchProducts", <br />"servicecatalog:DescribeProduct",<br />"servicecatalog:DescribeProductView",<br />"servicecatalog:DescribeProvisioningParameters",<br />"servicecatalog:ProvisionProduct",<br />"servicecatalog:UpdateProvisionedProduct",<br />"servicecatalog:ListProvisioningArtifacts", <br />"servicecatalog:DescribeRecord",<br />"servicecatalog:ListLaunchPaths",<br />"cloudformation:DescribeStackResources", <br />"elasticmapreduce:ListClusters",<br />"elasticmapreduce:DescribeCluster"</pre>  | 
| 클러스터 구성을 제공하여 새 클러스터를 생성하세요. | 아니요 | 아니요 | 예 |  <pre>"elasticmapreduce:RunJobFlow",<br />"iam:PassRole",<br />"elasticmapreduce:ListClusters",<br />"elasticmapreduce:DescribeCluster"</pre>  | 
| [IAM 인증 모드를 사용할 때 사용자를 Studio에 할당합니다.](emr-studio-manage-users.md#emr-studio-assign-users-groups) | 아니요 | 아니요 | 아니요 |  <pre>"elasticmapreduce:CreateStudioPresignedUrl"</pre>  | 
| 네트워크 객체를 설명합니다. | 예 | 예 | 예 |    JSON   

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DescribeNetwork",
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeVpcs",
        "ec2:DescribeSubnets",
        "ec2:DescribeSecurityGroups"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```      | 
| IAM 역할을 나열합니다. | 예 | 예 | 예 |    JSON   

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ListIAMRoles",
      "Effect": "Allow",
      "Action": [
        "iam:ListRoles"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}
```      | 
| [Amazon SageMaker AI Studio에서 EMR Studio에 연결하고 Data Wrangler 비주얼 인터페이스를 사용합니다.](https://aws.amazon.com/blogs/machine-learning/prepare-data-from-amazon-emr-for-machine-learning-using-amazon-sagemaker-data-wrangler/) | 아니요 | 아니요 | 예 |  <pre>"sagemaker:CreatePresignedDomainUrl",<br />"sagemaker:DescribeDomain",<br />"sagemaker:ListDomains",<br />"sagemaker:ListUserProfiles"</pre>  | 
| [EMR Studio에서 Amazon CodeWhisperer를 사용하세요.](emr-studio-codewhisperer.md) | 아니요 | 아니요 | 예 |  <pre>"codewhisperer:GenerateRecommendations"</pre>  | 
| [EMR Studio에서 Amazon Athena SQL 편집기에 액세스하세요.](emr-studio-athena.md) 이 목록에는 Athena의 모든 기능을 사용하는 데 필요한 일부 권한이 포함되지 않았을 수 있습니다. 최신 목록을 확인하려면 [Athena 전체 액세스 정책](https://docs.aws.amazon.com/athena/latest/ug/managed-policies.html#amazonathenafullaccess-managed-policy)을 참조하세요. | 아니요 | 아니요 | 예 |  <pre>"athena:StartQueryExecution",<br />"athena:StopQueryExecution",<br />"athena:GetQueryExecution",<br />"athena:GetQueryRuntimeStatistics",<br />"athena:GetQueryResults",<br />"athena:ListQueryExecutions",<br />"athena:BatchGetQueryExecution",<br />"athena:GetNamedQuery",<br />"athena:ListNamedQueries",<br />"athena:BatchGetNamedQuery",<br />"athena:UpdateNamedQuery",<br />"athena:DeleteNamedQuery",<br />"athena:ListDataCatalogs",<br />"athena:GetDataCatalog",<br />"athena:ListDatabases",<br />"athena:GetDatabase",<br />"athena:ListTableMetadata",<br />"athena:GetTableMetadata",<br />"athena:ListWorkGroups",<br />"athena:GetWorkGroup",<br />"athena:CreateNamedQuery",<br />"athena:GetPreparedStatement",<br />"glue:CreateDatabase",<br />"glue:DeleteDatabase",<br />"glue:GetDatabase",<br />"glue:GetDatabases",<br />"glue:UpdateDatabase",<br />"glue:CreateTable",<br />"glue:DeleteTable",<br />"glue:BatchDeleteTable",<br />"glue:UpdateTable",<br />"glue:GetTable",<br />"glue:GetTables",<br />"glue:BatchCreatePartition",<br />"glue:CreatePartition",<br />"glue:DeletePartition",<br />"glue:BatchDeletePartition",<br />"glue:UpdatePartition",<br />"glue:GetPartition",<br />"glue:GetPartitions",<br />"glue:BatchGetPartition",<br />"kms:ListAliases",<br />"kms:ListKeys",<br />"kms:DescribeKey",<br />"lakeformation:GetDataAccess",<br />"s3:GetBucketLocation",<br />"s3:GetBucketLocation",<br />"s3:GetObject",<br />"s3:ListBucket",<br />"s3:ListBucketMultipartUploads",<br />"s3:ListMultipartUploadParts",<br />"s3:AbortMultipartUpload",<br />"s3:PutObject",<br />"s3:PutBucketPublicAccessBlock",<br />"s3:ListAllMyBuckets"</pre>  | 

# EMR Studio 생성
<a name="emr-studio-create-studio"></a>

Amazon EMR 콘솔 또는 AWS CLI를 사용하여 팀을 위한 EMR Studio를 생성할 수 있습니다. Studio 인스턴스 생성은 Amazon EMR Studio 설정의 일부입니다.

**사전 조건**

Studio를 생성하기 전에 [EMR Studio 설정](emr-studio-set-up.md)에서 이전 작업을 완료해야 합니다.

를 사용하여 Studio를 생성하려면 최신 버전이 설치되어 있어야 AWS CLI합니다. 자세한 내용은 [최신 버전의 AWS CLI설치 또는 업데이트](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)를 참조하세요.

**중요**  
Studio를 생성하기 전에 브라우저에서 FoxyProxy 또는 SwitchyOmega와 같은 프록시 관리 도구를 비활성화합니다. **Studio 생성**을 선택하면 활성 프록시에서 **네트워크 실패** 오류 메시지를 생성할 수 있습니다.

 Amazon EMR은 Studio를 생성할 수 있는 간단한 콘솔 환경을 제공하므로, 기본 설정으로 빠르게 시작하여 기본 설정으로 대화형 워크로드 또는 배치 작업을 실행할 수 있습니다. EMR Studio를 생성하면 대화형 작업에 사용할 수 있는 EMR Serverless 애플리케이션도 생성됩니다.

Studio의 설정을 완전히 제어하려면 **사용자 지정**을 선택할 수 있습니다. 그러면 모든 추가 설정을 구성할 수 있습니다.

------
#### [ Interactive workloads ]

**대화형 워크로드에 대한 EMR Studio를 생성하는 방법**

1. [https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) Amazon EMR 콘솔을 엽니다.

1. 왼쪽 탐색 메뉴의 **EMR Studio**에서 **시작하기**를 선택합니다. **Studio** 페이지에서 새 Studio를 생성할 수도 있습니다.

1. Amazon EMR은 대화형 워크로드에 대한 EMR Studio를 생성하는 경우 기본 설정을 제공하지만, 이 설정은 편집 가능합니다. 구성 가능한 설정으로, EMR Studio의 이름, 워크스페이스의 S3 위치, 사용할 서비스 역할, 사용할 워크스페이스, EMR Serverless 애플리케이션 이름 및 관련 런타임 역할이 포함됩니다.

1. **Studio 생성 및 워크스페이스 시작**을 선택하여 완료한 후 **Studio** 페이지로 이동합니다. 목록에는 새 Studio와 함께 **Studio 이름**, **생성 날짜**, **Studio 액세스 URL**과 같은 세부 정보가 나타납니다. 워크스페이스가 브라우저의 새 탭에서 열립니다.

------
#### [ Batch jobs ]

**대화형 워크로드에 대한 EMR Studio를 생성하는 방법**

1. [https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) Amazon EMR 콘솔을 엽니다.

1. 왼쪽 탐색 메뉴의 **EMR Studio**에서 **시작하기**를 선택합니다. **Studio** 페이지에서 새 Studio를 생성할 수도 있습니다.

1. Amazon EMR은 배치 작업에 대한 EMR Studio를 생성하는 경우 기본 설정을 제공하지만, 이 설정은 편집 가능합니다. 구성 가능한 설정으로, EMR Studio의 이름, EMR Serverless 애플리케이션 이름 및 연결된 런타임 역할이 포함됩니다.

1. **Studio 생성 및 워크스페이스 시작**을 선택하여 완료한 후 **Studio** 페이지로 이동합니다. 목록에는 새 Studio와 함께 **Studio 이름**, **생성 날짜**, **Studio 액세스 URL**과 같은 세부 정보가 나타납니다. EMR Studio가 브라우저의 새 탭에서 열립니다.

------
#### [ Custom settings ]

**사용자 지정 설정을 사용하여 EMR Studio를 생성하는 방법**

1. [https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) Amazon EMR 콘솔을 엽니다.

1. 왼쪽 탐색 메뉴의 **EMR Studio**에서 **시작하기**를 선택합니다. **Studio** 페이지에서 새 Studio를 생성할 수도 있습니다.

1. **Studio 생성**을 선택하여 **Studio 생성** 페이지를 엽니다.

1. **Studio 이름**을 입력합니다.

1. 새 S3 버킷을 생성하거나 기존 위치를 사용하도록 선택합니다.

1. Studio에 추가할 워크스페이스를 선택합니다. 최대 3개의 워크스페이스를 추가할 수 있습니다.

1. **인증**에서 Studio의 인증 모드를 선택하고 다음 테이블에 따라 정보를 제공합니다. EMR Studio의 인증에 대한 자세한 내용은 [Amazon EMR Studio의 인증 모드 선택](emr-studio-authentication.md) 섹션을 참조하세요.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/emr-studio-create-studio.html)

1. VPC의 경우 드롭다운 목록에서 Studio에 대한 Amazon Virtual Private Cloud(**VPC**)를 선택합니다.

1. **서브넷**에서 Studio와 연결할 VPC의 서브넷을 최대 5개 선택합니다. Studio를 생성한 후 서브넷을 더 추가할 수 있습니다.

1. **보안 그룹**에서 기본 보안 그룹 또는 사용자 지정 보안 그룹을 선택합니다. 자세한 내용은 [EMR Studio 네트워크 트래픽을 제어할 보안 그룹을 정의합니다.](emr-studio-security-groups.md) 단원을 참조하십시오.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/emr-studio-create-studio.html)

1. Studio 및 기타 리소스에 태그를 추가합니다. 태그에 대한 자세한 내용은 [클러스터 태그 지정](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html)을 참조하세요.

1. **Studio 생성 및 워크스페이스 시작**을 선택하여 완료한 후 **Studio** 페이지로 이동합니다. 목록에는 새 Studio와 함께 **Studio 이름**, **생성 날짜**, **Studio 액세스 URL**과 같은 세부 정보가 나타납니다.

Studio를 생성한 후에는 [EMR Studio에 사용자 또는 그룹 할당](emr-studio-manage-users.md#emr-studio-assign-users-groups)의 지침을 따릅니다.

------
#### [ CLI ]

**참고**  
가독성을 위해 Linux 줄 연속 문자(\$1)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.

**Example – 인증을 위해 IAM을 사용하는 EMR Studio 생성**  
다음 예제 AWS CLI 명령은 IAM 인증 모드를 사용하여 EMR Studio를 생성합니다. Studio에 IAM 인증 또는 페더레이션을 사용할 때 `--user-role`을 지정하지 않습니다.  
페더레이션 사용자가 Studio URL 및 ID 제공업체(idP)의 보안 인증을 사용하여 로그인할 수 있게 하려면 `--idp-auth-url` 및 `--idp-relay-state-parameter-name`을 지정합니다. IdP 인증 URL 및 RelayState 이름 목록은 [ID 제공업체 RelayState 파라미터 및 인증 URL](#emr-studio-idp-reference-table) 섹션을 참조하세요.  

```
aws emr create-studio \
--name <example-studio-name> \
--auth-mode IAM \
--vpc-id <example-vpc-id> \
--subnet-ids <subnet-id-1> <subnet-id-2>... <subnet-id-5>  \
--service-role <example-studio-service-role-name> \
--user-role studio-user-role-name \
--workspace-security-group-id <example-workspace-sg-id> \
--engine-security-group-id <example-engine-sg-id> \
--default-s3-location <example-s3-location> \
--idp-auth-url <https://EXAMPLE/login/> \
--idp-relay-state-parameter-name <example-RelayState>
```

**Example – 인증을 위해 Identity Center를 사용하는 EMR Studio 생성**  
다음 AWS CLI 예제 명령은 IAM Identity Center 인증 모드를 사용하는 EMR Studio를 생성합니다. IAM Identity Center 인증을 사용할 때는 `--user-role`을 지정해야 합니다.  
IAM Identity Center 인증에 대한 자세한 내용은 [Amazon EMR Studio에 대한 IAM Identity Center 인증 모드 설정](emr-studio-authentication.md#emr-studio-enable-sso) 섹션을 참조하세요.  

```
aws emr create-studio \
--name <example-studio-name> \
--auth-mode SSO \
--vpc-id <example-vpc-id> \
--subnet-ids <subnet-id-1> <subnet-id-2>... <subnet-id-5>  \
--service-role <example-studio-service-role-name> \
--user-role <example-studio-user-role-name> \
--workspace-security-group-id <example-workspace-sg-id> \
--engine-security-group-id <example-engine-sg-id> \
--default-s3-location <example-s3-location>
--trusted-identity-propagation-enabled \
--idc-user-assignment OPTIONAL \
--idc-instance-arn <iam-identity-center-instance-arn>
```

**Example – `aws emr create-studio`에 대한 CLI 출력**  
다음은 Studio를 생성한 후에 나타나는 출력의 예제입니다.  

```
{
    StudioId: "es-123XXXXXXXXX",
    Url: "https://es-123XXXXXXXXX.emrstudio-prod.us-east-1.amazonaws.com"
}
```

`create-studio` 명령에 대한 자세한 내용은 [https://docs.aws.amazon.com/cli/latest/reference/emr/create-studio.html](https://docs.aws.amazon.com/cli/latest/reference/emr/create-studio.html)를 참조하세요.

------

## ID 제공업체 RelayState 파라미터 및 인증 URL
<a name="emr-studio-idp-reference-table"></a>

IAM 페더레이션을 사용하고 사용자가 Studio URL 및 ID 제공업체(idP)의 보안 인증을 사용하여 로그인하게 하려면 [EMR Studio 생성](#emr-studio-create-studio) 시 **ID 제공업체(idP) 로그인 URL** 및 **RelayState** 파라미터 이름을 지정할 수 있습니다.

다음 테이블에는 널리 사용되는 일부 ID 제공업체의 표준 인증 URL과 RelayState 파라미터 이름이 나와 있습니다.


| ID 제공업체 | 파라미터 | 인증 URL | 
| --- | --- | --- | 
| Auth0 | RelayState | https://<sub\$1domain>.auth0.com/samlp/<app\$1id> | 
| Google 계정 | RelayState | https://accounts.google.com/o/saml2/initsso?idpid=<idp\$1id>&spid=<sp\$1id>&forceauthn=false | 
| Microsoft Azure | RelayState | https://myapps.microsoft.com/signin/<app\$1name>/<app\$1id>?tenantId=<tenant\$1id> | 
| Okta | RelayState | https://<sub\$1domain>.okta.com/app/<app\$1name>/<app\$1id>/sso/saml | 
| PingFederate | TargetResource | https://<host>/idp/<idp\$1id>/startSSO.ping?PartnerSpId=<sp\$1id> | 
| PingOne | TargetResource | https://sso.connect.pingidentity.com/sso/sp/initsso?saasid=<app\$1id>&idpid=<idp\$1id> | 

# EMR Studio 사용자 할당 및 관리
<a name="emr-studio-manage-users"></a>

EMR Studio를 생성한 후 사용자와 그룹을 할당할 수 있습니다. 사용자를 할당, 업데이트 및 제거하는 데 사용하는 방법은 Studio 인증 모드에 따라 다릅니다.
+ IAM 인증 모드를 사용하는 경우 IAM에서 EMR Studio 사용자 할당 및 권한을 구성하거나 IAM 및 ID 제공업체를 통해 구성합니다.
+ IAM Identity Center 인증 모드에서는 Amazon EMR 관리 콘솔 또는 AWS CLI 를 사용하여 사용자를 관리합니다.

Amazon EMR Studio의 인증에 대한 자세한 내용은 [Amazon EMR Studio의 인증 모드 선택](emr-studio-authentication.md) 섹션을 참조하세요.

## EMR Studio에 사용자 또는 그룹 할당
<a name="emr-studio-assign-users-groups"></a>

------
#### [ IAM ]

[Amazon EMR Studio에 대한 IAM 인증 모드 설정](emr-studio-authentication.md#emr-studio-iam-authentication)을 사용할 때는 사용자의 IAM 권한 정책에서 `CreateStudioPresignedUrl` 작업을 허용하고 사용자를 특정 Studio로 제한해야 합니다. [IAM 인증 모드의 사용자 권한](how-emr-studio-works.md#emr-studio-iam-authorization)에서 `CreateStudioPresignedUrl`을 포함하거나 별도의 정책을 사용할 수 있습니다.

사용자를 Studio(또는 Studio 세트)로 제한하기 위해 ABAC(속성 기반 액세스 제어)를 사용하거나 권한 정책의 `Resource` 요소에 Studio의 Amazon 리소스 이름(ARN)을 지정할 수 있습니다.

**Example Studio ARN을 사용하여 Studio에 사용자 할당**  
다음 예제 정책은 `CreateStudioPresignedUrl` 작업을 허용하고 `Resource` 요소에 Studio의 Amazon 리소스 이름(ARN)을 지정하여 사용자에게 특정 EMR Studio에 대한 액세스 권한을 부여합니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowCreateStudioPresignedUrl",
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:CreateStudioPresignedUrl"
      ],
      "Resource": [
        "arn:aws:elasticmapreduce:us-east-1:123456789012:studio/studio-id"
      ]
    }
  ]
}
```

**Example IAM 인증을 위해 ABAC를 사용하여 Studio에 사용자 할당**  
Studio에 대해 ABAC(속성 기반 액세스 제어)를 구성하는 방법은 여러 가지가 있습니다. 예를 들어, EMR Studio에 하나 이상의 태그를 연결한 다음 해당 태그가 있는 특정 Studio 또는 Studio 세트로 `CreateStudioPresignedUrl` 작업을 제한하는 IAM 정책을 생성할 수 있습니다.  
Studio 생성 중 또는 이후에 태그를 추가할 수 있습니다. 기존 Studio에 태그를 추가하려면 [AWS CLI`emr add-tags`](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/emr/add-tags.html) 명령을 사용합니다. 다음 예제에서는 키-값 페어 `Team = Data Analytics`를 포함하는 태그를 EMR Studio에 추가합니다.  

```
aws emr add-tags --resource-id <example-studio-id> --tags Team="Data Analytics"
```
다음 예제 권한 정책은 태그 키-값 페어 `Team = DataAnalytics`를 사용하는 EMR Studio에 대한 `CreateStudioPresignedUrl` 작업을 허용합니다. 태그를 사용하여 액세스를 제어하는 방법에 대한 자세한 내용은 [태그를 사용하여 사용자 및 역할에 대한 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_iam-tags.html) 및 [태그를 사용한 AWS 리소스 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)를 참조하세요.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowCreateStudioPresignedUrl",
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:CreateStudioPresignedUrl"
      ],
      "Resource": [
        "arn:aws:elasticmapreduce:*:123456789012:studio/*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticmapreduce:ResourceTag/Team": "Data Analytics"
        }
      }
    }
  ]
}
```

**Example aws:SourceIdentity 글로벌 조건 키를 사용하여 Studio에 사용자 할당**  
IAM 페더레이션을 사용하는 경우 권한 정책에서 글로벌 조건 키 `aws:SourceIdentity`를 사용하여 페더레이션을 위한 IAM 역할을 수임할 때 사용자에게 Studio 액세스 권한을 부여할 수 있습니다.  
먼저 사용자를 인증하고 사용자가 페더레이션을 위한 IAM 역할을 수임할 때 이메일 주소 또는 사용자 이름과 같은 식별 문자열을 반환하도록 ID 제공업체(idP)를 구성해야 합니다. IAM은 글로벌 조건 키 `aws:SourceIdentity`를 IdP에서 반환한 식별 문자열로 설정합니다.  
자세한 내용은 AWS 보안 블로그의 [How to relate IAM role activity to corporate identity](https://aws.amazon.com/blogs/security/how-to-relate-iam-role-activity-to-corporate-identity/) 블로그 게시물 및 글로벌 조건 키 참조의 [aws:SourceIdentity](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceidentity) 항목을 참조하세요.  
다음 예제 정책에서는 `CreateStudioPresignedUrl` 작업을 허용하고 *<example-studio-arn>*.에서 지정한 EMR Studio에 대한 *<example-source-identity>* 액세스와 일치하는 `aws:SourceIdentity`를 사용자에게 부여합니다.    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:CreateStudioPresignedUrl"
      ],
      "Resource": [
        "arn:aws:elasticmapreduce:us-east-1:123456789012:studio/studio-name"
      ],
      "Condition": {
        "StringLike": {
          "aws:SourceIdentity": "example-source-identity"
        }
      },
      "Sid": "AllowELASTICMAPREDUCECreatestudiopresignedurl"
    }
  ]
}
```

------
#### [ IAM Identity Center ]

EMR Studio에 사용자 또는 그룹을 할당할 때 해당 사용자 또는 그룹에 대한 세분화된 권한(예: 새 EMR 클러스터 생성 기능)을 정의하는 세션 정책을 지정합니다. Amazon EMR은 이러한 세션 정책 매핑을 저장합니다. 할당 후 사용자 또는 그룹의 세션 정책을 업데이트할 수 있습니다.

**참고**  
사용자 또는 그룹의 최종 권한은 EMR Studio 사용자 역할에 정의된 권한과 해당 사용자 또는 그룹의 세션 정책에 정의된 권한의 교집합입니다. 사용자가 Studio에 할당된 둘 이상의 그룹에 속하는 경우 EMR Studio는 해당 사용자에 대한 권한 합집합을 사용합니다.

**Amazon EMR 콘솔을 사용하여 EMR Studio에 사용자 또는 그룹을 할당하는 방법**

1. 새 Amazon EMR 콘솔로 이동하고 측면 탐색에서 **이전 콘솔로 전환**을 선택합니다. 이전 콘솔로 전환할 때 예상되는 사항에 대한 자세한 내용은 [이전 콘솔 사용](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html#console-opt-in)을 참조하세요.

1. 왼쪽 탐색에서 **EMR Studio**를 선택합니다.

1. **Studio** 목록에서 Studio 이름을 선택하거나 Studio를 선택하고 **세부 정보 보기**를 선택하여 Studio 세부 정보 페이지를 엽니다.

1. **사용자 추가**를 선택하여 **사용자** 및 **그룹** 검색 테이블을 확인합니다.

1. **사용자** 탭 또는 **그룹** 탭을 선택하고 검색 표시줄에 검색어를 입력하여 사용자 또는 그룹을 찾습니다.

1. 검색 결과 목록에서 사용자 또는 그룹을 하나 이상 선택합니다. **사용자** 탭과 **그룹** 탭 사이를 전환할 수 있습니다.

1. Studio에 추가할 사용자 및 그룹을 선택한 후 **추가**를 선택합니다. **Studio 사용자** 목록에 사용자와 그룹이 표시됩니다. 목록을 새로 고치는 데 몇 초가 걸릴 수 있습니다.

1. [Studio에 할당된 사용자 또는 그룹의 권한 업데이트](#emr-studio-update-user)의 지침에 따라 사용자 또는 그룹의 Studio 권한을 세분화합니다.

** AWS CLI를 사용하여 EMR Studio에 사용자 또는 그룹을 할당하는 방법**

다음 `create-studio-session-mapping` 인수에 고유한 값을 입력합니다. `create-studio-session-mapping` 명령에 대한 자세한 내용은 [https://docs.aws.amazon.com/cli/latest/reference/emr/create-studio-session-mapping.html](https://docs.aws.amazon.com/cli/latest/reference/emr/create-studio-session-mapping.html)를 참조하세요.
+ **`--studio-id`**- 사용자 또는 그룹을 할당하려는 Studio의 ID. Studio ID를 검색하는 방법에 관한 지침은 [Studio 세부 정보 보기](emr-studio-manage-studio.md#emr-studio-get-studio-id) 섹션을 참조하세요.
+ `--identity-name` - 자격 증명 저장소의 사용자 또는 그룹 이름. 자세한 내용은 *자격 증명 스토어 API 참조*에서 사용자에 대해 [UserName](https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_User.html#singlesignon-Type-User-UserName), 그룹에 대해 [DisplayName](https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_Group.html#singlesignon-Type-Group-DisplayName)을 참조하세요.
+ **`--identity-type`** - `USER` 또는 `GROUP` 중 하나를 사용하여 자격 증명 유형을 지정합니다.
+ **`--session-policy-arn`** - 사용자 또는 그룹에 연결할 세션 정책의 Amazon 리소스 이름(ARN). 예를 들어 `arn:aws:iam::<aws-account-id>:policy/EMRStudio_Advanced_User_Policy`입니다. 자세한 내용은 [EMR Studio 사용자를 위한 권한 정책 생성](emr-studio-user-permissions.md#emr-studio-permissions-policies) 단원을 참조하십시오.

```
aws emr create-studio-session-mapping \
 --studio-id <example-studio-id> \
 --identity-name <example-identity-name> \
 --identity-type <USER-or-GROUP> \
 --session-policy-arn <example-session-policy-arn>
```

**참고**  
가독성을 위해 Linux 줄 연속 문자(\$1)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.

`get-studio-session-mapping` 명령을 사용하여 새 할당을 확인합니다. *<example-identity-name>*을 업데이트한 사용자 또는 그룹의 IAM Identity Center 이름으로 바꿉니다.

```
aws emr get-studio-session-mapping \
 --studio-id <example-studio-id> \
 --identity-type <USER-or-GROUP> \
 --identity-name <user-or-group-name> \
```

------

## Studio에 할당된 사용자 또는 그룹의 권한 업데이트
<a name="emr-studio-update-user"></a>

------
#### [ IAM ]

IAM 인증 모드를 사용할 때 사용자 또는 그룹 권한을 업데이트하려면 IAM을 사용하여 IAM 자격 증명(사용자, 그룹 또는 역할)에 연결된 IAM 권한 정책을 변경합니다.

자세한 내용은 [IAM 인증 모드의 사용자 권한](how-emr-studio-works.md#emr-studio-iam-authorization) 단원을 참조하십시오.

------
#### [ IAM Identity Center ]

****콘솔을 사용하여 사용자 또는 그룹의 EMR Studio 권한을 업데이트하는 방법****

1. 새 Amazon EMR 콘솔로 이동하고 측면 탐색에서 **이전 콘솔로 전환**을 선택합니다. 이전 콘솔로 전환할 때 예상되는 사항에 대한 자세한 내용은 [이전 콘솔 사용](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html#console-opt-in)을 참조하세요.

1. 왼쪽 탐색에서 **EMR Studio**를 선택합니다.

1. **Studio** 목록에서 Studio 이름을 선택하거나 Studio를 선택하고 **세부 정보 보기**를 선택하여 Studio 세부 정보 페이지를 엽니다.

1. Studio 세부 정보 페이지의 **Studio 사용자** 목록에서, 업데이트할 사용자 또는 그룹을 검색합니다. 이름 또는 ID 유형으로 검색할 수 있습니다.

1. 업데이트할 사용자 또는 그룹을 선택하고 **정책 할당**을 선택하여 **세션 정책** 대화 상자를 엽니다.

1. 5단계에서 선택한 사용자 또는 그룹에 적용할 정책을 선택하고 **정책 적용**을 선택합니다. **Studio 사용자** 목록에는 업데이트한 사용자 또는 그룹의 **세션 정책** 열에 있는 정책 이름이 표시됩니다.

**를 사용하여 사용자 또는 그룹에 대한 EMR Studio 권한을 업데이트하려면 AWS CLI**

다음 `update-studio-session-mappings` 인수에 고유한 값을 입력합니다. `update-studio-session-mappings` 명령에 대한 자세한 내용은 [https://docs.aws.amazon.com/cli/latest/reference/emr/update-studio-session-mapping.html](https://docs.aws.amazon.com/cli/latest/reference/emr/update-studio-session-mapping.html)를 참조하세요.

```
aws emr update-studio-session-mapping \
 --studio-id <example-studio-id> \
 --identity-name <name-of-user-or-group-to-update> \
 --session-policy-arn <new-session-policy-arn-to-apply> \
 --identity-type <USER-or-GROUP> \
```

`get-studio-session-mapping` 명령을 사용하여 새 세션 정책 할당을 확인합니다. *<example-identity-name>*을 업데이트한 사용자 또는 그룹의 IAM Identity Center 이름으로 바꿉니다.

```
aws emr get-studio-session-mapping \
 --studio-id <example-studio-id> \
 --identity-type <USER-or-GROUP> \
 --identity-name <user-or-group-name> \
```

------

## Studio에서 사용자 또는 그룹 제거
<a name="emr-studio-remove-user"></a>

------
#### [ IAM ]

IAM 인증 모드를 사용할 때 EMR Studio에서 사용자 또는 그룹을 제거하려면 사용자의 IAM 권한 정책을 재구성하여 Studio에 대한 사용자 액세스를 취소해야 합니다.

다음 정책 예제에서 태그 키-값 페어 `Team = Quality Assurance`가 있는 EMR Studio가 있다고 가정합니다. 정책에 따라 사용자는 값이 `Data Analytics` 또는 `Quality Assurance`와 같은 `Team` 키로 태그가 지정된 Studios에 액세스할 수 있습니다. `Team = Quality Assurance` 태그가 지정된 Studio에서 사용자를 제거하려면 태그 값 목록에서 `Quality Assurance`를 제거합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowCreateStudioPresignedUrl",
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:CreateStudioPresignedUrl"
      ],
      "Resource": [
        "arn:aws:elasticmapreduce:us-east-1:123456789012:studio/*"
      ],
      "Condition": {
        "StringEquals": {
          "elasticmapreduce:ResourceTag/Team": [
            "Data Analytics",
            "Quality Assurance"
          ]
        }
      }
    }
  ]
}
```

------

------
#### [ IAM Identity Center ]

****콘솔을 사용하여 EMR Studio에서 사용자 또는 그룹을 제거하는 방법****

1. 새 Amazon EMR 콘솔로 이동하고 측면 탐색에서 **이전 콘솔로 전환**을 선택합니다. 이전 콘솔로 전환할 때 예상되는 사항에 대한 자세한 내용은 [이전 콘솔 사용](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html#console-opt-in)을 참조하세요.

1. 왼쪽 탐색에서 **EMR Studio**를 선택합니다.

1. **Studio** 목록에서 Studio 이름을 선택하거나 Studio를 선택하고 **세부 정보 보기**를 선택하여 Studio 세부 정보 페이지를 엽니다.

1. Studio 세부 정보 페이지의 **Studio 사용자** 목록에서, Studio에서 제거할 사용자 또는 그룹을 찾습니다. 이름 또는 ID 유형으로 검색할 수 있습니다.

1. 삭제할 사용자 또는 그룹을 선택하고 **삭제**를 선택한 후 삭제를 확인합니다. 삭제한 사용자 또는 그룹은 **Studio 사용자** 목록에서 사라집니다.

** AWS CLI를 사용하여 EMR Studio에서 사용자 또는 그룹을 제거하는 방법**

다음 `delete-studio-session-mapping` 인수에 고유한 값을 입력합니다. `delete-studio-session-mapping` 명령에 대한 자세한 내용은 [https://docs.aws.amazon.com/cli/latest/reference/emr/delete-studio-session-mapping.html](https://docs.aws.amazon.com/cli/latest/reference/emr/delete-studio-session-mapping.html)를 참조하세요.

```
aws emr delete-studio-session-mapping \
 --studio-id <example-studio-id> \
 --identity-type <USER-or-GROUP> \
 --identity-name <name-of-user-or-group-to-delete> \
```

------

# Amazon EMR Studio 리소스 모니터링, 업데이트 및 삭제
<a name="emr-studio-manage-studio"></a>

이 섹션에는 EMR Studio 리소스를 모니터링, 업데이트 또는 삭제하는 데 도움이 되는 지침이 포함되어 있습니다. 사용자 할당 또는 사용자 권한 업데이트에 대한 자세한 내용은 [EMR Studio 사용자 할당 및 관리](emr-studio-manage-users.md) 섹션을 참조하세요.

## Studio 세부 정보 보기
<a name="emr-studio-get-studio-id"></a>

------
#### [ Console ]

****새 콘솔을 사용하여 EMR Studio에 대한 세부 정보를 보는 방법****

1. [https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) Amazon EMR 콘솔을 엽니다.

1. 왼쪽 탐색의 **EMR Studio**에서 **Studio**를 선택합니다.

1. **Studio** 목록에서 Studio를 선택하여 Studio 세부 정보 페이지를 엽니다. Studio 세부 정보 페이지에는 **Studio 설정** 정보(예: Studio **설명**, **VPC** 및 **서브넷**)가 포함되어 있습니다.

------
#### [ CLI ]

**를 사용하여 Studio ID로 EMR Studio에 대한 세부 정보를 검색하려면 AWS CLI**

다음 `describe-studio` AWS CLI 명령을 사용하여 특정 EMR Studio에 대한 세부 정보를 가져옵니다. 자세한 내용은 [https://docs.aws.amazon.com/cli/latest/reference/emr/describe-studio.html](https://docs.aws.amazon.com/cli/latest/reference/emr/describe-studio.html)를 참조하세요.

```
aws emr describe-studio \
 --studio-id <id-of-studio-to-describe> \
```

** AWS CLI를 사용하여 EMR Studio 목록을 검색하는 방법**

다음 `list-studios` AWS CLI 명령을 사용합니다. 자세한 내용은 [https://docs.aws.amazon.com/cli/latest/reference/emr/list-studios.html](https://docs.aws.amazon.com/cli/latest/reference/emr/list-studios.html)를 참조하세요.

```
aws emr list-studios
```

다음은 JSON 형식의 `list-studios` 명령 반환 값에 대한 예제입니다.

```
{
    "Studios": [
        {
            "AuthMode": "IAM",
            "VpcId": "vpc-b21XXXXX", 
            "Name": "example-studio-name", 
            "Url": "https://es-7HWP74SNGDXXXXXXXXXXXXXXX.emrstudio-prod.us-east-1.amazonaws.com", 
            "CreationTime": 1605672582.781, 
            "StudioId": "es-7HWP74SNGDXXXXXXXXXXXXXXX", 
            "Description": "example studio description"
        }
    ]
}
```

------

## Amazon EMR Studio 작업 모니터링
<a name="emr-studio-monitor"></a>

### EMR Studio 및 API 활동 보기
<a name="emr-studio-cloudtrail-events"></a>

EMR Studio는 사용자 AWS CloudTrail, IAM 역할 또는 EMR Studio의 다른 서비스가 수행한 작업에 대한 레코드를 제공하는 AWS 서비스와 통합됩니다. CloudTrail은 EMR Studio에 대한 API 직접 호출을 이벤트로 캡처합니다. [https://console.aws.amazon.com/cloudtrail/](https://console.aws.amazon.com/cloudtrail/)에서 CloudTrail 콘솔을 통해 이벤트를 볼 수 있습니다.

EMR Studio 이벤트는 요청을 수행하는 Studio 또는 IAM 사용자, 수행되는 요청 종류와 같은 정보를 제공합니다.

**참고**  
노트북 작업 실행과 같은 클러스터 내 작업에서는 AWS CloudTrail로 정보를 생성하지 않습니다.

EMR Studio CloudTrail 이벤트를 지속적으로 Amazon S3 버킷에 배포하도록 추적을 생성할 수도 있습니다. 자세한 내용은 *[AWS CloudTrail 사용 설명서](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)*를 참조하십시오.

**CloudTrail 이벤트 예제: 사용자가 DescribeStudio API 직접 호출**

다음은 사용자가 [DescribeStudio](https://docs.aws.amazon.com/emr/latest/APIReference/API_DescribeStudio.html) API를 `admin`호출할 때 생성되는 AWS CloudTrail 이벤트의 예입니다. CloudTrail은 사용자 이름을 `admin`으로 기록합니다.

**참고**  
Studio 세부 정보를 보호하기 위해 DescribeStudio의 EMR Studio API 이벤트는 `responseElements` 값을 제외합니다.

```
{
   "eventVersion":"1.08",
   "userIdentity":{
      "type":"IAMUser",
      "principalId":"AIDXXXXXXXXXXXXXXXXXX",
      "arn":"arn:aws:iam::653XXXXXXXXX:user/admin",
      "accountId":"653XXXXXXXXX",
      "accessKeyId":"AKIAIOSFODNN7EXAMPLE",
      "userName":"admin"
   },
   "eventTime":"2021-01-07T19:13:58Z",
   "eventSource":"elasticmapreduce.amazonaws.com",
   "eventName":"DescribeStudio",
   "awsRegion":"us-east-1",
   "sourceIPAddress":"72.XX.XXX.XX",
   "userAgent":"aws-cli/1.18.188 Python/3.8.5 Darwin/18.7.0 botocore/1.19.28",
   "requestParameters":{
      "studioId":"es-9O5XXXXXXXXXXXXXXXXXXXXXX"
   },
   "responseElements":null,
   "requestID":"0fxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
   "eventID":"b0xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
   "readOnly":true,
   "eventType":"AwsApiCall",
   "managementEvent":true,
   "eventCategory":"Management",
   "recipientAccountId":"653XXXXXXXXX"
}
```

### Spark 사용자 및 작업 활동 보기
<a name="emr-studio-monitor-spark-job-by-user"></a>

Amazon EMR Studio 사용자의 Spark 작업 활동을 보기 위해 클러스터에서 사용자 위장을 구성할 수 있습니다. 사용자 위장을 사용하여 Workspace에서 제출된 각 Spark 작업은 코드를 실행한 Studio 사용자와 연결됩니다.

사용자 위장 기능이 활성화되면 Amazon EMR은 Workspace에서 코드를 실행하는 각 사용자에 대해 클러스터의 프라이머리 노드에서 HDFS 사용자 디렉터리를 생성합니다. 예를 들어, `studio-user-1@example.com` 사용자가 코드를 실행하는 경우 프라이머리 노드에 연결하여 `hadoop fs -ls /user`에 `studio-user-1@example.com`에 대한 디렉터리가 있는지 확인할 수 있습니다.

Spark 사용자 위장을 설정하려면 다음 구성 분류에서 다음 속성을 설정합니다.
+ `core-site`
+ `livy-conf`

```
[
    {
        "Classification": "core-site",
        "Properties": {
          "hadoop.proxyuser.livy.groups": "*",
          "hadoop.proxyuser.livy.hosts": "*"
        }
    },
    {
        "Classification": "livy-conf",
        "Properties": {
          "livy.impersonation.enabled": "true"
        }
    }
]
```

기록 서버 페이지를 보려면 [EMR Studio에서 애플리케이션 및 작업 디버깅](emr-studio-debug.md) 섹션을 참조하세요. SSH를 사용하여 클러스터의 프라이머리 노드에 연결해 애플리케이션 웹 인터페이스를 볼 수도 있습니다. 자세한 내용은 [Amazon EMR 클러스터에 호스팅된 웹 인터페이스 보기](emr-web-interfaces.md) 단원을 참조하십시오.

## Amazon EMR Studio 업데이트
<a name="emr-studio-update-studio"></a>

EMR Studio를 생성한 후 AWS CLI를 사용하여 다음 속성을 업데이트할 수 있습니다.
+ 이름
+ 설명
+ 기본 S3 위치
+ 서브넷

**를 사용하여 EMR Studio를 업데이트하려면 AWS CLI**

`update-studio` AWS CLI 명령을 사용하여 EMR Studio를 업데이트합니다. 자세한 내용은 [https://docs.aws.amazon.com/cli/latest/reference/emr/update-studio.html](https://docs.aws.amazon.com/cli/latest/reference/emr/update-studio.html)를 참조하세요.

**참고**  
Studio를 최대 5개의 서브넷에 연결할 수 있습니다. 서브넷은 Studio와 동일한 VPC에 속해야 합니다. `update-studio` 명령에 제출하는 서브넷 ID 목록에는 새 서브넷 ID가 포함될 수 있지만 Studio에 이미 연결된 모든 서브넷 ID도 포함되어야 합니다. Studio에서 서브넷을 제거할 수 없습니다.

```
aws emr update-studio \
 --studio-id <example-studio-id-to-update> \
 --name <example-new-studio-name> \
 --subnet-ids <old-subnet-id-1 old-subnet-id-2 old-subnet-id-3 new-subnet-id> \
```

변경 사항을 확인하려면 `describe-studio` AWS CLI 명령을 사용하고 Studio ID를 지정합니다. 자세한 내용은 [https://docs.aws.amazon.com/cli/latest/reference/emr/describe-studio.html](https://docs.aws.amazon.com/cli/latest/reference/emr/describe-studio.html)를 참조하세요.

```
aws emr describe-studio \
 --studio-id <id-of-updated-studio> \
```

## Amazon EMR Studio 및 Workspace 삭제
<a name="emr-studio-delete-studio"></a>

Studio를 삭제하면 EMR Studio는 Studio와 연결된 모든 IAM Identity Center 사용자 및 그룹 할당을 삭제합니다.

**참고**  
Studio를 삭제해도 Amazon EMR은 해당 Studio와 연결된 Workspace를 삭제하지 *않습니다*. Studio에서 Workspace를 개별적으로 삭제해야 합니다.

**WorkSpace 삭제**

------
#### [ Console ]

각 EMR Studio Workspace는 EMR 노트북 인스턴스이므로 Amazon EMR 관리 콘솔을 사용하여 Workspace를 삭제할 수 있습니다. Studio를 삭제하기 전이나 후에 Amazon EMR 콘솔을 사용하여 Workspace를 삭제할 수 있습니다.

**Amazon EMR 콘솔을 사용하여 Workspace를 삭제하는 방법**

1. 새 Amazon EMR 콘솔로 이동하고 측면 탐색에서 **이전 콘솔로 전환**을 선택합니다. 이전 콘솔로 전환할 때 예상되는 사항에 대한 자세한 내용은 [이전 콘솔 사용](https://docs.aws.amazon.com/emr/latest/ManagementGuide/whats-new-in-console.html#console-opt-in)을 참조하세요.

1. **노트북**을 선택합니다.

1. 삭제할 Workspace를 선택합니다.

1. **삭제**를 선택한 후 **삭제**를 다시 선택하여 확인합니다.

1. Amazon S3에서 삭제된 작업 Workspace와 연결된 노트북 파일을 제거하려면 *Amazon Simple Storage Service* *콘솔 사용 설명서*에서 [객체 삭제](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/delete-objects.html) 지침을 따릅니다.

------
#### [ EMR Studio UI ]

------
#### [ From the Workspace UI ]

**EMR Studio에서 Workspace 및 관련 백업 파일 삭제**

1. Studio 액세스 URL을 사용하여 EMR Studio에 로그인하고 왼쪽 탐색에서 **Workspace**를 선택합니다.

1. 목록에서 Workspace를 찾은 후 이름 옆의 확인란을 선택합니다. 동시에 삭제할 Workspace를 여러 개 선택할 수 있습니다.

1. **Workspace** 목록의 오른쪽 상단에서 **삭제**를 선택하고 선택한 Workspace의 삭제를 확인합니다. [**삭제**]를 선택하여 확인합니다.

1. Amazon S3에서 삭제된 작업 Workspace와 연결된 노트북 파일을 제거하려면 *Amazon Simple Storage Service* *콘솔 사용 설명서*에서 [객체 삭제](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/delete-objects.html) 지침을 따릅니다. Studio를 생성하지 않은 경우 Studio 관리자에게 문의하여 삭제된 Workspace의 Amazon S3 백업 위치를 확인합니다.

------
#### [ From the Workspaces list ]

**Workspace 목록에서 Workspace 및 관련 백업 파일 삭제**

1. 콘솔에서 **Workspace** 목록으로 이동합니다.

1. 목록에서 삭제하려는 Workspace를 선택하고 **작업**을 선택합니다.

1. **삭제**를 선택합니다.

1. Amazon S3에서 삭제된 작업 Workspace와 연결된 노트북 파일을 제거하려면 *Amazon Simple Storage Service* *콘솔 사용 설명서*에서 [객체 삭제](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/delete-objects.html) 지침을 따릅니다. Studio를 생성하지 않은 경우 Studio 관리자에게 문의하여 삭제된 Workspace의 Amazon S3 백업 위치를 확인합니다.

------

------

**EMR Studio 삭제**

------
#### [ Console ]

****새 콘솔을 사용하여 EMR Studio를 삭제하는 방법****

1. [https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) Amazon EMR 콘솔을 엽니다.

1. 왼쪽 탐색의 **EMR Studio**에서 **Studio**를 선택합니다.

1. Studio 이름 왼쪽에 토글이 있는 **Studio** 목록에서 Studio를 선택합니다. **삭제**를 선택합니다.

------
#### [ Old console ]

****이전 콘솔을 사용하여 EMR Studio를 삭제하는 방법****

1. [https://console.aws.amazon.com/elasticmapreduce/home](https://console.aws.amazon.com/elasticmapreduce/home) Amazon EMR 콘솔을 엽니다.

1. 왼쪽 탐색에서 **EMR Studio**를 선택합니다.

1. Studio 목록에서 **Studio**를 선택하고 **삭제**를 선택합니다.

------
#### [ CLI ]

**를 사용하여 EMR Studio를 삭제하려면 AWS CLI**

`delete-studio` AWS CLI 명령을 사용하여 EMR Studio를 삭제합니다. 자세한 내용은 [https://docs.aws.amazon.com/cli/latest/reference/emr/delete-studio.html](https://docs.aws.amazon.com/cli/latest/reference/emr/delete-studio.html)를 참조하세요.

```
aws emr delete-studio --studio-id <id-of-studio-to-delete>
```

------

# EMR Studio Workspace 노트북 및 파일 암호화
<a name="emr-studio-workspace-storage-encryption"></a>

EMR Studio에서 노트북을 구성하고 실행하기 위해 다양한 워크스페이스를 생성하고 구성할 수 있습니다. 이러한 워크스페이스는 노트북 및 관련 파일을 지정된 Amazon S3 버킷에 저장합니다. 기본적으로 이러한 파일은 서버 측 암호화를 기본 암호화 수준으로 사용하는 Amazon S3 관리형 키(SSE-S3)로 암호화됩니다. 고객 관리형 KMS 키(SSE-KMS)를 사용하여 파일을 암호화하도록 선택할 수도 있습니다. EMR Studio를 생성할 때 Amazon EMR 관리 콘솔을 사용하거나 AWS CLI 및 AWS SDK를 통해이 작업을 수행할 수 있습니다.

EMR Studio Workspace 스토리지 암호화는 EMR Studio를 사용할 수 있는 모든 [리전](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-considerations.html#emr-studio-considerations-general)에서 사용 가능합니다.

## 사전 조건
<a name="emr-studio-workspace-storage-encryption-prereqs"></a>

EMR Studio 워크스페이스 노트북 및 파일을 암호화하려면 먼저 AWS Key Management Service 를 사용하여 EMR Studio와 동일한 AWS 계정 및 리전에서 [ 대칭 고객 관리자 키(CMK)를 생성](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)해야 합니다.

 의 리소스 정책에는 EMR Studio의 서비스 역할에 필요한 액세스 권한이 있어야 AWS KMS 합니다. 다음은 EMR Studio Workspace 스토리지 암호화에 대한 최소 액세스 권한을 부여하는 샘플 IAM 정책입니다.

```
{
    "Sid": "AllowEMRStudioServiceRoleAccess",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::<ACCOUNT_ID>:role/<ROLE_NAME>"
    },
    "Action": [
        "kms:Decrypt", 
        "kms:GenerateDataKey", 
        "kms:ReEncryptFrom",
        "kms:ReEncryptTo",
        "kms:DescribeKey"
    ],
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "kms:CallerAccount": "<ACCOUNT_ID>",
            "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::<S3_BUCKET_NAME>",
            "kms:ViaService": "s3.<AWS_REGION>.amazonaws.com"
        }
    }
}
```

EMR Studio 서비스 역할에는 AWS KMS 키를 사용할 수 있는 액세스 권한도 있어야 합니다. 다음은 EMR Studio Workspace 스토리지 암호화에 대한 최소 액세스 권한을 부여하는 샘플 IAM 정책입니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowEMRStudioWorkspaceStorageEncryptionAccess",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey",
        "kms:ReEncryptFrom",
        "kms:ReEncryptTo",
        "kms:DescribeKey"
      ],
      "Resource": [
        "arn:aws:kms:*:123456789012:key/12345678-1234-1234-1234-123456789012"
      ]
    }
  ]
}
```

------

## 새 EMR Studio 생성
<a name="emr-studio-workspace-storage-encryption-setup"></a>

다음 단계를 수행하여 워크스페이스 스토리지 암호화를 사용하는 새 EMR Studio를 생성합니다.

1. [https://console.aws.amazon.com/elasticmapreduce/](https://console.aws.amazon.com/elasticmapreduce/)에서 Amazon EMR 콘솔을 엽니다.

1. **Studios**를 선택하고 **Studio 생성**을 선택합니다.

1. **스토리지를 위한 S3 위치**에 Amazon S3 경로를 입력하거나 선택합니다. Amazon EMR에서 워크스페이스 노트북 및 파일을 저장하는 Amazon S3 위치입니다.

1. **서비스 역할**에 IAM 역할을 입력하거나 선택합니다. Amazon EMR에서 수임하는 IAM 역할입니다.

1. **자체 AWS KMS 키로 Workspace 파일 암호화를** 선택합니다.

1. Amazon S3에서 워크스페이스 노트북 및 파일을 암호화하는 데 사용할 AWS KMS 키를 입력하거나 선택합니다.

1. **Studio 생성** 또는 **Studio 생성 및 워크스페이스 시작**을 선택합니다.

1. **자체 AWS KMS 키로 Workspace 파일 암호화를** 선택합니다.

1. Amazon S3에서 워크스페이스 노트북 및 파일을 암호화하는 데 AWS KMS 사용할를 입력하거나 선택합니다.

1. **변경 사항 저장(Save Changes)**을 선택합니다.

다음 단계에서는 EMR Studio를 업데이트하고 워크스페이스 스토리지 암호화를 설정하는 방법을 보여줍니다.

1. [https://console.aws.amazon.com/elasticmapreduce/](https://console.aws.amazon.com/elasticmapreduce/)에서 Amazon EMR 콘솔을 엽니다.

1. **목록에서 기존 EMR Studio**를 선택한 다음, **편집**을 선택합니다.

1. **자체 AWS KMS 키로 Workspace 파일 암호화를** 선택합니다.

1. Amazon S3에서 워크스페이스 노트북 및 파일을 암호화하는 데 AWS KMS 사용할를 입력하거나 선택합니다.

1. **변경 사항 저장(Save Changes)**을 선택합니다.

# EMR Studio 네트워크 트래픽을 제어할 보안 그룹을 정의합니다.
<a name="emr-studio-security-groups"></a>

## EMR Studio 보안 그룹 정보
<a name="emr-studio-about-security-groups"></a>

Amazon EMR Studio는 다음과 같은 두 개의 보안 그룹을 사용하여 Studio의 Workspaces 및 Amazon EC2에서 실행되는 연결된 Amazon EMR 클러스터 간 네트워크 트래픽을 제어합니다.
+ 포트 18888을 사용하여 Amazon EC2에서 실행되는 연결된 Amazon EMR 클러스터와 통신하는 **엔진 보안 그룹**.
+ Studio의 Workspace에 연결된 **Workspace 보안 그룹**. 이 보안 그룹에는 Workspace가 트래픽을 인터넷으로 라우팅할 수 있도록 허용하는 아웃바운드 HTTPS 규칙이 포함되어 있으며, Git 리포지토리를 Workspace에 연결할 수 있도록 포트 443을 통해 인터넷으로의 아웃바운드 트래픽을 허용해야 합니다.

EMR Studio는 Workspace에 연결된 EMR 클러스터와 연결된 보안 그룹과 함께 이러한 보안 그룹을 사용합니다.

를 사용하여 Studio를 생성할 때 이러한 보안 그룹을 생성 AWS CLI 해야 합니다.

**참고**  
환경에 맞게 조정된 규칙을 통해 EMR Studio의 보안 그룹을 사용자 지정할 수 있지만 이 페이지에 설명된 규칙을 포함해야 합니다. Workspace 보안 그룹은 인바운드 트래픽을 허용할 수 없으며 엔진 보안 그룹은 Workspace 보안 그룹의 인바운드 트래픽을 허용해야 합니다.

**기본 EMR Studio 보안 그룹 사용**

Amazon EMR 콘솔을 사용하는 경우 다음 기본 보안 그룹을 선택할 수 있습니다. 기본 보안 그룹은 사용자를 대신하여 EMR Studio에서 생성하며, EMR Studio의 Workspace에 필요한 최소 인바운드 및 아웃바운드 규칙을 포함합니다.
+ `DefaultEngineSecurityGroup`
+ `DefaultWorkspaceSecurityGroupGit` 또는 `DefaultWorkspaceSecurityGroupWithoutGit`

## 사전 조건
<a name="emr-studio-security-group-prereqs"></a>

EMR Studio의 보안 그룹을 생성하려면 Studio용 Amazon Virtual Private Cloud(VPC)가 있어야 합니다. 보안 그룹을 생성할 때 이 VPC를 선택합니다. 이 VPC는 Studio를 생성할 때 지정한 것과 같아야 합니다. EMR Studio와 함께 Amazon EMR on EKS를 사용하려면 Amazon EKS 클러스터 워커 노드에 대한 VPC를 선택합니다.

## 지침
<a name="emr-studio-security-group-instructions"></a>

*Amazon EC2 Linux 인스턴스용 사용 설명서*에서 [보안 그룹 생성](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#creating-security-group)의 지침에 따라 VPC에 엔진 보안 그룹과 Workspace 보안 그룹을 생성합니다. 보안 그룹에는 다음 테이블에 요약된 규칙이 포함되어야 합니다.

EMR Studio용 보안 그룹을 생성할 때 두 그룹의 ID를 모두 기록합니다. Studio를 생성할 때 ID별로 각 보안 그룹을 지정합니다.

**엔진 보안 그룹**  
EMR Studio는 포트 18888을 사용하여 연결된 클러스터와 통신합니다.    
**인바운드 규칙**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/emr-studio-security-groups.html)

**WorkSpace 보안 그룹**  
이 보안 그룹은 EMR Studio의 Workspace와 연결되어 있습니다.    
**아웃바운드 규칙**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/emr-studio-security-groups.html)

# Amazon EMR Studio용 AWS CloudFormation 템플릿 생성
<a name="emr-studio-cluster-templates"></a>

## EMR Studio 클러스터 템플릿 정보
<a name="emr-studio-about-cluster-templates"></a>

 AWS CloudFormation 템플릿을 생성하여 EMR Studio 사용자가 Workspace에서 새 Amazon EMR 클러스터를 시작할 수 있도록 지원할 수 있습니다. CloudFormation 템플릿은 JSON 또는 YAML 형식의 텍스트 파일입니다. 템플릿에서 AWS 리소스 스택을 설명하고 CloudFormation에 해당 리소스를 프로비저닝하는 방법을 알려줍니다. EMR Studio의 경우 Amazon EMR 클러스터를 설명하는 템플릿을 하나 이상 생성할 수 있습니다.

에서 템플릿을 구성합니다 AWS Service Catalog. AWS Service Catalog 를 사용하면 *제품*이라고 하는 일반적으로 배포되는 IT 서비스를 생성하고 관리할 수 있습니다 AWS. EMR Studio 사용자와 공유할 *포트폴리오*의 제품으로 템플릿을 수집합니다. 클러스터 템플릿을 생성한 후 Studio 사용자는 템플릿 중 하나를 사용하여 Workspace에 대한 새 클러스터를 시작할 수 있습니다. 사용자에게 템플릿에서 새 클러스터를 생성할 권한이 있어야 합니다. [EMR Studio 권한 정책](emr-studio-user-permissions.md)에서 사용자 권한을 설정할 수 있습니다.

CloudFormation 템플릿에 대한 자세한 내용은 *AWS CloudFormation 사용 설명서*의 [템플릿](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-whatis-concepts.html#w2ab1b5c15b7)을 참조하세요. 에 대한 자세한 내용은 [란 무엇입니까?를 AWS Service Catalog](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/introduction.html) AWS Service Catalog참조하십시오.

다음 비디오에서는 AWS Service Catalog 에서 EMR Studio용 클러스터 템플릿을 설정하는 방법을 보여줍니다. [Build a self-service environment for each line of business using Amazon EMR and Service Catalog](https://aws.amazon.com/blogs/big-data/build-a-self-service-environment-for-each-line-of-business-using-amazon-emr-and-aws-service-catalog/) 블로그 게시물에서 자세한 내용을 확인할 수 있습니다.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/9w_TXTdFLpo/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/9w_TXTdFLpo)


### 선택적 템플릿 파라미터
<a name="emr-studio-cluster-template-parameters"></a>

템플릿 [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html) 섹션에 추가 옵션을 포함할 수 있습니다. *파라미터*를 통해 Studio 사용자는 클러스터의 사용자 지정 값을 입력하거나 선택할 수 있습니다. 예를 들어, 사용자가 특정 Amazon EMR 릴리스를 선택할 수 있도록 하는 파라미터를 추가할 수 있습니다. 자세한 내용은CloudFormation 사용 설명서의 [Parameters](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html)를 참조하세요.

다음 예제 `Parameters` 섹션에서는 `ClusterName`, `EmrRelease` 버전 및 `ClusterInstanceType` 등의 추가 입력 파라미터를 정의합니다.

```
Parameters:
  ClusterName:
    Type: "String"
    Default: "Cluster_Name_Placeholder"
  EmrRelease:
    Type: "String"
    Default: "emr-6.2.0"
    AllowedValues:
    - "emr-6.2.0"
    - "emr-5.32.0"
  ClusterInstanceType:
    Type: "String"
    Default: "m5.xlarge"
    AllowedValues:
    - "m5.xlarge"
    - "m5.2xlarge"
```

파라미터를 추가하면 Studio 사용자가 클러스터 템플릿을 선택한 후 추가 양식 옵션을 볼 수 있습니다. 다음 이미지는 **EmrRelease** 버전, **ClusterName**, **InstanceType**에 대한 추가 양식 옵션을 보여줍니다.

![\[사용자가 파라미터가 포함된 클러스터 템플릿을 선택할 때 Studio 사용자 인터페이스에 제공된 추가 입력의 스크린샷\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/images/cluster-template-parameters-studio-ui.jpg)


## 사전 조건
<a name="emr-studio-cluster-template-prereqs"></a>

클러스터 템플릿을 생성하기 전에 Service Catalog 관리자 콘솔 보기에 액세스할 수 있는 IAM 권한이 있어야 합니다. 또한 Service Catalog 관리 작업을 수행하는 데 필요한 IAM 권한이 필요합니다. 자세한 내용은 [Grant permissions to Service Catalog administrators](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-iamadmin.html)를 참조하세요.

## EMR 클러스터 템플릿 생성
<a name="emr-studio-cluster-template-instructions"></a>

**Service Catalog를 사용하여 EMR 클러스터 템플릿을 생성하는 방법**

1. 하나 이상의 CloudFormation 템플릿을 생성합니다. 템플릿 저장 위치는 사용자가 결정합니다. 템플릿 형식은 텍스트 파일이므로 Amazon S3에 업로드하거나 로컬 파일 시스템에 보관할 수 있습니다. CloudFormation 템플릿에 대한 자세한 내용은 *AWS CloudFormation 사용 설명서*의 [템플릿](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-whatis-concepts.html#w2ab1b5c15b7)을 참조하세요.

   다음 규칙을 사용하여 템플릿의 이름을 지정하거나 `[a-zA-Z0-9][a-zA-Z0-9._-]*` 패턴과 비교하여 이름을 확인합니다.
   + 템플릿 이름은 숫자 또는 문자로 시작해야 합니다.
   + 템플릿 이름에는 문자, 숫자, 마침표(.), 밑줄(\$1), 하이픈(-)만 사용할 수 있습니다.

   생성하는 각 클러스터 템플릿에는 다음 옵션이 있어야 합니다.

   **입력 파라미터**
   + ClusterName - 클러스터가 프로비저닝된 후 사용자가 클러스터를 식별하는 데 도움이 되는 클러스터의 이름.

   **출력**
   + `ClusterId` - 새로 프로비저닝된 EMR 클러스터의 ID.

   다음은 노드가 2개인 클러스터에 대한 YAML 형식의 예제 CloudFormation 템플릿입니다. 예제 템플릿에는 필수 템플릿 옵션이 포함되어 있으며, 여기에서 `EmrRelease` 및 `ClusterInstanceType`에 대한 추가 입력 파라미터를 정의합니다.

   ```
   awsTemplateFormatVersion: 2010-09-09
   
   Parameters:
     ClusterName:
       Type: "String"
       Default: "Example_Two_Node_Cluster"
     EmrRelease:
       Type: "String"
       Default: "emr-6.2.0"
       AllowedValues:
       - "emr-6.2.0"
       - "emr-5.32.0"
     ClusterInstanceType:
       Type: "String"
       Default: "m5.xlarge"
       AllowedValues:
       - "m5.xlarge"
       - "m5.2xlarge"
   
   Resources:
     EmrCluster:
       Type: AWS::EMR::Cluster
       Properties:
         Applications:
         - Name: Spark
         - Name: Livy
         - Name: JupyterEnterpriseGateway
         - Name: Hive
         EbsRootVolumeSize: '10'
         Name: !Ref ClusterName
         JobFlowRole: EMR_EC2_DefaultRole
         ServiceRole: EMR_DefaultRole_V2
         ReleaseLabel: !Ref EmrRelease
         VisibleToAllUsers: true
         LogUri: 
           Fn::Sub: 's3://aws-logs-${AWS::AccountId}-${AWS::Region}/elasticmapreduce/'
         Instances:
           TerminationProtected: false
           Ec2SubnetId: 'subnet-ab12345c'
           MasterInstanceGroup:
             InstanceCount: 1
             InstanceType: !Ref ClusterInstanceType
           CoreInstanceGroup:
             InstanceCount: 1
             InstanceType: !Ref ClusterInstanceType
             Market: ON_DEMAND
             Name: Core
   
   Outputs:
     ClusterId:
       Value:
         Ref: EmrCluster
       Description: The ID of the  EMR cluster
   ```

1. Studio와 동일한 AWS 계정에 클러스터 템플릿에 대한 포트폴리오를 생성합니다.

   1. [https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/) AWS Service Catalog 콘솔을 엽니다.

   1. 왼쪽 탐색 메뉴에서 **포트폴리오**를 선택합니다.

   1. **포트폴리오 생성** 페이지에 요청된 정보를 입력합니다.

   1. **Create**. AWS Service Catalog creates 포트폴리오를 선택하고 포트폴리오 세부 정보를 표시합니다.

1. 다음 단계에 따라 클러스터 템플릿을 AWS Service Catalog 제품으로 추가합니다.

   1.  AWS Service Catalog 관리 콘솔의 **관리** 아래에 있는 **제품** 페이지로 이동합니다.

   1. **새 제품 업로드**를 선택합니다.

   1. **제품 이름** 및 **소유자**를 입력합니다.

   1. **버전 세부 정보**에서 템플릿 파일을 지정합니다.

   1. **검토**를 선택하여 제품 설정을 검토하고 **제품 생성**을 선택합니다.

1. 다음 단계를 완료하여 포트폴리오에 제품을 추가합니다.

   1.  AWS Service Catalog 관리 콘솔에서 **제품** 페이지로 이동합니다.

   1. 제품을 선택하고 **작업**을 선택한 후 **포트폴리오에 제품 추가**를 선택합니다.

   1. 포트폴리오를 선택한 다음 **포트폴리오에 제품 추가**를 선택합니다.

1. 제품의 시작 제약 조건을 생성합니다. 시작 제약 조건은 제품 시작에 관한 사용자 권한을 지정하는 IAM 역할입니다. 시작 제약 조건을 조정할 수 있지만 CloudFormation, Amazon EMR 및 AWS Service Catalog를 사용할 수 있는 권한을 허용해야 합니다. 자세한 내용과 지침은 [Service Catalog launch constraints](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/constraints-launch.html)를 참조하세요.

1. 포트폴리오의 각 제품에 시작 제약 조건을 적용합니다. 시작 제약 조건을 각 제품에 개별적으로 적용해야 합니다.

   1.  AWS Service Catalog 관리 콘솔의 **포트폴리오** 페이지에서 포트폴리오를 선택합니다.

   1. **제약** 탭을 선택하고 **제약 생성**을 선택합니다.

   1. 제품을 선택하고 **제약 유형**에서 **시작**을 선택합니다. **계속**을 선택합니다.

   1. **시작 제약 조건** 섹션에서 시작 제약 조건을 선택하고 **생성**을 선택합니다.

1. 포트폴리오에 대한 액세스 권한을 부여합니다.

   1.  AWS Service Catalog 관리 콘솔의 **포트폴리오** 페이지에서 포트폴리오를 선택합니다.

   1. **그룹, 역할 및 사용자** 탭을 확장하고 **그룹, 역할 및 사용자 추가**를 선택합니다.

   1. **역할** 탭에서 EMR Studio IAM 역할을 검색하고 역할을 선택한 다음 **액세스 추가**를 선택합니다.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/emr-studio-cluster-templates.html)

# Git 기반 리포지토리에 대한 액세스 및 권한 설정
<a name="emr-studio-enable-git"></a>

EMR Studio는 다음 Git 기반 서비스를 지원합니다.
+ [AWS CodeCommit](https://aws.amazon.com/codecommit)
+ [GitHub](https://github.com)
+ [Bitbucket](https://bitbucket.org/)
+ [GitLab](https://about.gitlab.com/)

EMR Studio 사용자가 Git 리포지토리를 Workspace와 연결할 수 있게 하려면 다음과 같은 액세스 및 권한 요구 사항을 설정합니다. [EMR Studio용으로 비공개로 호스팅된 Git 리포지토리 구성](#emr-studio-private-git-repo)의 지침에 따라 프라이빗 네트워크에서 호스팅하는 Git 기반 리포지토리를 구성할 수도 있습니다.

**클러스터 인터넷 액세스**  
Studio Workspace에 연결된 Amazon EMR on EKS 클러스터 및 Amazon EC2에서 실행되는 Amazon EMR 클러스터 모두 Network Address Translation(NAT) 게이트웨이를 사용하는 프라이빗 서브넷에 있거나 가상 프라이빗 게이트웨이를 통해 인터넷에 액세스할 수 있어야 합니다. 자세한 내용은 [클러스터를 시작하는 경우 Amazon VPC 옵션](emr-clusters-in-a-vpc.md) 단원을 참조하십시오.  
EMR Studio와 함께 사용하는 보안 그룹에는 Workspace가 연결된 EMR 클러스터에서 인터넷으로 트래픽을 라우팅하도록 허용하는 아웃바운드 규칙도 포함되어야 합니다. 자세한 내용은 [EMR Studio 네트워크 트래픽을 제어할 보안 그룹을 정의합니다.](emr-studio-security-groups.md) 단원을 참조하십시오.  
네트워크 인터페이스가 퍼블릭 서브넷에 있는 경우 인터넷 게이트웨이(IGW)를 통해 인터넷과 통신할 수 없습니다.

**에 대한 권한 AWS Secrets Manager**  
EMR Studio 사용자가 AWS Secrets Manager에 보안 암호를 저장하는 Git 리포지토리에 액세스할 수 있으려면 `secretsmanager:GetSecretValue` 작업을 허용하는 권한 정책을 [EMR Studio의 서비스 역할](emr-studio-service-role.md)에 추가합니다.

Git 기반 리포지토리를 Workspaces에 연결하는 방법에 대한 자세한 내용은 [Git 기반 리포지토리를 EMR Studio Workspace에 연결](emr-studio-git-repo.md) 섹션을 참조하세요.

## EMR Studio용으로 비공개로 호스팅된 Git 리포지토리 구성
<a name="emr-studio-private-git-repo"></a>

다음 지침을 사용하여 Amazon EMR Studio에 대해 비공개로 호스팅되는 리포지토리를 구성합니다. DNS 및 Git 서버에 대한 정보가 포함된 구성 파일을 제공합니다. EMR Studio는 이 정보를 사용하여 자체 관리형 리포지토리로 트래픽을 라우팅할 수 있는 Workspace를 구성합니다.

**참고**  
`DnsServerIpV4`를 구성하면 EMR Studio는 DNS 서버를 사용하여 `GitServerDnsName` 및 AWS 엔드포인트를 모두 해결하지만 필수 서비스 기능을 방해할 수 있으므로 `DnsServerIpV4`를 사용하여 AWS 엔드포인트를 해결하지 않는 것이 좋습니다.

**사전 조건**

비공개로 호스팅되는 EMR Studio용 Git 리포지토리를 구성하려면 먼저 EMR Studio가 Studio의 Workspace과 노트북 파일을 백업할 수 있는 Amazon S3 스토리지 위치가 필요합니다. Studio를 생성할 때 지정한 것과 동일한 S3 버킷을 사용합니다.

**EMR Studio에 대해 비공개로 호스팅되는 Git 리포지토리를 하나 이상 구성하는 방법**

1. 다음 템플릿을 사용하여 구성 파일을 생성합니다. 구성에서 지정하려는 각 Git 서버에 대해 다음 값을 포함합니다.
   + **`DnsServerIpV4`** - DNS 서버의 IPv4 주소. `DnsServerIpV4` 및 `GitServerIpV4List`에 대한 값을 모두 제공하는 경우 `DnsServerIpV4`의 값이 우선하며 EMR Studio에서는 `DnsServerIpV4`를 사용하여 `GitServerDnsName`을 해석합니다.
**참고**  
비공개로 호스팅되는 Git 리포지토리를 사용하려면 DNS 서버에서 EMR Studio의 인바운드 액세스를 허용해야 합니다. DNS 서버를 다른 무단 액세스로부터 보호해야 합니다.
   + **`GitServerDnsName`** - Git 서버의 DNS 이름입니다. 예: `"git.example.com"`.
   + **`GitServerIpV4List`** - Git 서버에 속하는 IPv4 주소 목록.

   ```
   [
       {
           "Type": "PrivatelyHostedGitConfig",
           "Value": [
               {
                   "DnsServerIpV4": "<10.24.34.xxx>",
                   "GitServerDnsName": "<enterprise.git.com>",
                   "GitServerIpV4List": [
                       "<xxx.xxx.xxx.xxx>",
                       "<xxx.xxx.xxx.xxx>"
                   ]
               },
               {
                   "DnsServerIpV4": "<10.24.34.xxx>",
                   "GitServerDnsName": "<git.example.com>",
                   "GitServerIpV4List": [
                       "<xxx.xxx.xxx.xxx>",
                       "<xxx.xxx.xxx.xxx>"
                   ]
               }
           ]
       }
   ]
   ```

1. 구성 파일을 `configuration.json`으로 저장합니다.

1. 구성 파일을 Amazon S3 스토리지 위치, `life-cycle-configuration` 폴더에 업로드합니다. 예를 들어, 기본 S3 위치가 `s3://amzn-s3-demo-bucket/workspace`인 경우 구성 파일은 `s3://amzn-s3-demo-bucket/workspace/life-cycle-configuration/configuration.json`에 있습니다.
**중요**  
`life-cycle-configuration` 폴더에 대한 액세스를 Studio 관리자 및 EMR Studio 서비스 역할로 제한하고 무단 액세스로부터 `configuration.json`을 보호해야 합니다. 관련 지침은 [사용자 정책을 사용하여 버킷에 대한 액세스 제어](https://docs.aws.amazon.com/AmazonS3/latest/userguide/walkthrough1.html) 또는 [Amazon S3의 보안 모범 사례](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-best-practices.html)를 참조하세요.

   업로드 지침은 *Amazon Simple Storage Service 사용 설명서*에서 [폴더 생성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-folders.html#create-folder) 및 [객체 업로드](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html)를 참조하세요. 구성을 기존 Workspace에 적용하려면 구성 파일을 Amazon S3에 업로드한 후 Workspace를 닫고 다시 시작합니다.

# EMR Studio에서 Spark 작업 최적화
<a name="emr-studio-spark-optimization"></a>

EMR Studio를 사용하여 Spark 작업을 실행할 때 Amazon EMR 클러스터 리소스를 최적화하는 데 도움이 되는 몇 가지 단계가 있습니다.

## Livy 세션 연장
<a name="optimize-spark-livy-timeout"></a>

Amazon EMR 클러스터에서 Spark와 함께 Apache Livy를 사용하는 경우 다음 중 하나를 수행하여 Livy 세션 제한 시간을 늘리는 것이 좋습니다.
+ Amazon EMR 클러스터를 생성할 때 **구성 입력** 필드에서 이 구성 분류를 설정합니다.

  ```
  [
      {
          "Classification": "livy-conf",
          "Properties": {
            "livy.server.session.timeout": "8h"
          }
      }
  ]
  ```
+ 이미 실행 중인 EMR 클러스터의 경우 `ssh`를 사용하여 클러스터에 연결하고 `/etc/livy/conf/livy.conf`에서 `livy-conf` 구성 분류를 설정합니다.

  ```
  [
      {
          "Classification": "livy-conf",
          "Properties": {
            "livy.server.session.timeout": "8h"
          }
      }
  ]
  ```

  구성을 변경한 후 Livy를 다시 시작해야 할 수 있습니다.
+ Livy 세션 제한 시간이 초과되지 않도록 하려면 `/etc/livy/conf/livy.conf`에서 `livy.server.session.timeout-check` 속성을 `false`로 설정합니다.

## Spark를 클러스터 모드로 실행
<a name="optimize-spark-cluster-mode"></a>

클러스터 모드에서는 Spark 드라이버는 프라이머리 노드가 아닌 코어 노드에서 실행되므로 프라이머리 노드의 리소스 사용률이 향상됩니다.

기본 클라이언트 모드 대신 클러스터 모드에서 Spark 애플리케이션을 실행하려면 새 Amazon EMR 클러스터에서 Spark 단계를 구성하는 동안 **배포 모드**를 설정할 때 **클러스터** 모드를 선택합니다. 자세한 내용은 Apache Spark 설명서의 [Cluster mode overview](https://spark.apache.org/docs/latest/cluster-overview.html)를 참조하세요.

## Spark 드라이버 메모리 증가
<a name="optimize-spark-memory"></a>

Spark 드라이버 메모리를 늘리려면 다음 예제와 같이 EMR 노트북에서 `%%configure` 매직 명령을 사용하여 Spark 세션을 구성합니다.

```
%%configure -f
{"driverMemory": "6000M"}
```