

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

# 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>  | 