

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

# Amazon EMR on EKS에서 작업 실행 역할 사용
<a name="iam-execution-role"></a>

`StartJobRun` 명령을 사용하여 EKS 클러스터에서 작업 실행을 제출하려면 먼저 가상 클러스터에서 사용할 작업 실행 역할을 온보딩해야 합니다. 자세한 설명은 [Amazon EMR on EKS 설정](setting-up.md)에서 [작업 실행 역할 생성](creating-job-execution-role.md) 섹션을 참조하세요. Amazon EMR on EKS 워크숍의 [Create IAM Role for job execution](https://www.eksworkshop.com/advanced/430_emr_on_eks/prereqs/#create-iam-role-for-job-execution) 섹션의 지침을 따를 수도 있습니다.

작업 실행 역할에 대한 신뢰 정책에 다음 권한이 포함되어야 합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sts:AssumeRoleWithWebIdentity"
      ],
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "aws:userid": "system:serviceaccount:NAMESPACE:emr-containers-sa-*-*-AWS_ACCOUNT_ID-BASE36_ENCODED_ROLE_NAME"
        }
      },
      "Sid": "AllowSTSAssumerolewithwebidentity"
    }
  ]
}
```

------

위 예제의 신뢰 정책은 `emr-containers-sa-*-*-AWS_ACCOUNT_ID-BASE36_ENCODED_ROLE_NAME` 패턴과 일치하는 이름의 Amazon EMR 관리형 Kubernetes 서비스 계정에만 권한을 부여합니다. 이 패턴의 서비스 계정은 작업 제출 시 자동으로 생성되며 작업을 제출하는 네임스페이스로 범위가 지정됩니다. 이 신뢰 정책을 통해 이러한 서비스 계정이 실행 역할을 수임하고 실행 역할의 임시 보안 인증을 가져올 수 있습니다. 다른 Amazon EKS 클러스터 또는 동일한 EKS 클러스터 내 다른 네임스페이스의 서비스 계정은 실행 역할을 수임할 수 없습니다.

다음 명령을 실행하여 위에 제공된 형식으로 신뢰 정책을 자동 업데이트할 수 있습니다.

```
aws emr-containers update-role-trust-policy \
       --cluster-name cluster \
       --namespace namespace \
       --role-name iam_role_name_for_job_execution
```

**실행 역할에 대한 액세스 제어**

Amazon EKS 클러스터의 관리자는 Amazon EMR on EKS의 멀티 테넌트 가상 클러스터를 생성할 수 있으며, 여기에 IAM 관리자가 여러 실행 역할을 추가할 수 있습니다. 신뢰할 수 없는 테넌트는 이러한 실행 역할을 사용하여 임의 코드를 실행하는 작업을 제출할 수 있으므로, 이러한 실행 역할 중 하나 이상에 할당된 권한을 획득하는 코드를 실행할 수 없도록 테넌트를 제한할 수 있습니다. IAM 관리자는 선택적 Amazon 리소스 이름(ARN) 조건 키(`emr-containers:ExecutionRoleArn`)를 사용하여 IAM 자격 증명에 연결된 IAM 정책을 제한할 수 있습니다. 이 조건은 다음 권한 정책에서 볼 수 있듯이 가상 클러스터에 대한 권한이 있는 실행 역할 ARN 목록을 수락합니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "emr-containers:StartJobRun"
      ],
      "Resource": [
        "arn:aws:emr-containers:*:*:/virtualclusters/VIRTUAL_CLUSTER_ID"
      ],
      "Condition": {
        "ArnEquals": {
          "emr-containers:ExecutionRoleArn": [
            "arn:aws:iam::*:role/execution_role_name_1",
            "arn:aws:iam::*:role/execution_role_name_2"
          ]
        }
      },
      "Sid": "AllowEMRCONTAINERSStartjobrun"
    }
  ]
}
```

------

특정 접두사로 시작하는 모든 실행 역할(예: `MyRole`)을 허용하려면 조건 연산자 `ArnEquals`를 `ArnLike` 연산자로 바꾸고 조건의 `execution_role_arn` 값을 와일드카드 `*` 문자로 바꿀 수 있습니다. 예를 들어 `arn:aws:iam::AWS_ACCOUNT_ID:role/MyRole*`입니다. 다른 모든 [ARN 조건 키](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_ARN)도 지원됩니다.

**참고**  
Amazon EMR on EKS에서는 태그 또는 속성을 기반으로 실행 역할에 권한을 부여할 수 없습니다. Amazon EMR on EKS는 실행 역할에 대해 TBAC(태그 기반 액세스 제어) 또는 ABAC(속성 기반 액세스 제어)를 지원하지 않습니다.