

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

# Amazon EKS 액세스 항목 인증
<a name="eks-access-entries"></a>

Amazon EKS는 클러스터의 Kubernetes API를 호출할 수 있는 권한을 IAM 보안 주체에 부여하는 두 가지 메커니즘, 즉 레거시 `aws-auth` ConfigMap과 최신 [액세스 항목 API](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html)를 지원합니다. 액세스 항목은 두 메커니즘 중 하나를 통해 클러스터에 인증할 수 있는 ConfigMap. AWS Batch can을 편집할 필요 없이 IAM 보안 주체에 대한 Kubernetes API 액세스 권한을 부여합니다.

컴퓨팅 환경에서를 `ENABLED` `eksConfiguration.accessEntry.desiredState`로 설정하면 AWS Batch 가 클러스터에서 해당 컴퓨팅 환경의 액세스 항목을 관리할 수 있습니다. 더 이상 `aws-auth` ConfigMap을 수동으로 편집할 필요가 없습니다.

가 액세스 항목을 AWS Batch 프로비저닝하는지 여부는 AWS Batch 컴퓨팅 환경과 Amazon EKS 클러스터 구성에 따라 달라집니다. 세부 정보는 [클러스터의와 상호 작용 `authenticationMode`](#eks-access-entries-matrix) 섹션을 참조하세요.

## `accessEntry.desiredState`에 대한 값
<a name="eks-access-entries-desired-state"></a>

의 `desiredState` 필드는 컴퓨팅 환경에 대해 원하는 액세스 항목 상태를 `EksAccessEntry` 선언합니다. 유효값은 다음과 같습니다.

`ENABLED`  
AWS Batch 는 컴퓨팅 환경에 대해 클러스터에 AWS Batch관리형 액세스 항목을 생성합니다. AWS Batch 는 클러스터의 모든 컴퓨팅 환경이를 `desiredState`로 설정한 경우에만 AWS Batch관리형 액세스 항목을 생성합니다`ENABLED`([가 컴퓨팅 환경 `desiredState` 간에 AWS Batch 를 조정하는 방법](#eks-access-entries-reconciliation)자세한 내용은 참조).

`DISABLED`  
AWS Batch 는 클러스터의 AWS Batch관리형 액세스 항목을 삭제합니다. AWS Batch 는 클러스터의 모든 컴퓨팅 환경이를 `desiredState`로 설정한 경우에만 AWS Batch관리형 액세스 항목을 삭제합니다`DISABLED`([가 컴퓨팅 환경 `desiredState` 간에 AWS Batch 를 조정하는 방법](#eks-access-entries-reconciliation)자세한 내용은 참조). 클러스터에 대한 액세스는 `aws-auth` ConfigMap을 통해 구성해야 합니다.

`INHERIT_FROM_CLUSTER`  
AWS Batch 는 클러스터의 현재 액세스 항목를 연기합니다`status`. 인증 모드가 인 Amazon EKS 클러스터에서는 클러스터에 대체할 `aws-auth` ConfigMap이 없기 때문에 액세스 항목을 `API` AWS Batch 생성하고 관리합니다. 인증 모드가 `CONFIG_MAP` 또는 인 클러스터에서는 액세스 항목을 추가하거나 제거`API_AND_CONFIG_MAP` AWS Batch 하지 않습니다.

또한 컴퓨팅 환경은 [DescribeComputeEnvironments](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeComputeEnvironments.html) 응답에 읽기 전용 `accessEntry.status` 필드를 노출합니다. `ACTIVE`는 컴퓨팅 환경에 대한 AWS Batch관리형 액세스 항목이 클러스터에 존재하고 ConfigMap보다 우선한다는 의미입니다. `aws-auth`는 AWS Batch관리형 액세스 항목이 없음을 `INACTIVE` 의미합니다. 이는 `desiredState`, 클러스터`DISABLED`를 대상으로 하는 컴퓨팅 환경이 아직에 동의하지 않거나 항목이 아직 프로비저닝되지 `desiredState`않았기 때문일 수 있습니다. 이 `accessEntry.status`인 경우 `INACTIVE`배치는 클러스터 액세스에 `aws-auth` ConfigMap을 사용합니다.

**참고**  
 AWS Batch 가 액세스 정책을 사용할 수 있도록 연결하지 않은 경우에도 액세스 항목은 클러스터에 있는 `ACTIVE` 즉시 보고합니다. 가 `accessEntry.status`인 `INVALID` 동안 컴퓨팅 환경 상태가 로 변경되면 섹션을 `ACTIVE`참조하세요[Amazon EKS 액세스 항목 설정이 불완전함](batch_eks_invalid_compute_environment.md#batch_eks_access_entry_incomplete).

**참고**  
`accessEntry` 필드를 생략하면 AWS Batch 는 컴퓨팅 환경에 `desiredState` 대한를 기록하지 않고 반환하지 `DescribeComputeEnvironments` 않습니다. 액세스 항목을 프로비저닝하기 위해는 에서와 같이 AWS Batch 동작합니다`INHERIT_FROM_CLUSTER`.

## 클러스터의와 상호 작용 `authenticationMode`
<a name="eks-access-entries-matrix"></a>

의 AWS Batch 동작 방식은 클러스터의 인증 모드에 `desiredState` 따라 달라집니다. 다음 표는 `CreateComputeEnvironment` 및 모두에 적용됩니다`UpdateComputeEnvironment`.


<table>
<thead>
  <tr><th>클러스터 <code>authenticationMode</code></th><th>컴퓨팅 환경 <code>accessEntry.desiredState=ENABLED</code></th><th>컴퓨팅 환경 <code>accessEntry.desiredState=DISABLED</code></th><th>컴퓨팅 환경 <code>accessEntry.desiredState=INHERIT_FROM_CLUSTER</code></th></tr>
</thead>
<tbody>
  <tr><td><code>CONFIG_MAP</code></td><td colspan="3">액세스 항목은 클러스터에서 사용할 수 없으므로는 액세스 항목을 생성하거나 제거 AWS Batch 하지 않습니다. AWS Batch 는 지정한 값을 기록합니다. 클러스터의 인증 모드를 변경하면 기록된 값이를 지정하는 다음 <code>CreateComputeEnvironment</code> 또는 <code>UpdateComputeEnvironment</code> 호출에 적용됩니다<code>desiredState</code>.</td></tr>
  <tr><td><code>API_AND_CONFIG_MAP</code></td><td colspan="2">AWS Batch 는 클러스터를 공유하는 컴퓨팅 환경에서 기록된 값을 비교합니다. 단원을 참조하십시오<a href="#eks-access-entries-reconciliation">가 컴퓨팅 환경 `desiredState` 간에 AWS Batch 를 조정하는 방법</a>.</td><td>기존 액세스 모드는 유지됩니다.는 액세스 항목을 추가하거나 제거하지 AWS Batch 않습니다.</td></tr>
  <tr><td><code>API</code></td><td>액세스 항목은 클러스터에서 생성되고 유지됩니다.</td><td>요청이 거부됩니다. 이 모드의 클러스터는 <code>aws-auth</code> ConfigMap을 지원하지 않으며 클러스터 생성 후에는 ConfigMap 메서드를 활성화할 수 없으므로 <code>DISABLED</code>는 인증 방법 없이 컴퓨팅 환경을 떠납니다.</td><td>액세스 항목은 클러스터에서 생성되고 유지됩니다. 클러스터가 <code>API</code>만인 경우 상속은와 동일합니다<code>ENABLED</code>.</td></tr>
</tbody>
</table>


## 가 컴퓨팅 환경 `desiredState` 간에 AWS Batch 를 조정하는 방법
<a name="eks-access-entries-reconciliation"></a>

단일 Amazon EKS 클러스터는 여러 AWS Batch 컴퓨팅 환경을 지원할 수 있으므로 클러스터의 액세스 구성은 공유 리소스입니다. AWS Batch 따라서는 해당 컴퓨팅 환경에서 기록된 `desiredState` 값을 조정하거나 비교 및 해결합니다.

클러스터의이 인 경우 `API_AND_CONFIG_MAP``authenticationMode`는 클러스터를 대상으로 하는 동일한 AWS 계정 및 AWS 리전의 모든 컴퓨팅 환경에 대해 `desiredState` 기록된를 AWS Batch 비교합니다.는이 비교를 AWS Batch 사용하여를 지정하는 각 `CreateComputeEnvironment` 또는 `UpdateComputeEnvironment` 작업에 액세스 항목을 추가 또는 제거할지 여부를 결정합니다`desiredState`.

모든 컴퓨팅 환경에는 `desiredState=ENABLED`  
AWS Batch 는 클러스터에 액세스 항목을 생성합니다.

모든 컴퓨팅 환경에는 `desiredState=DISABLED`  
AWS Batch 는 액세스 항목이 있는 경우 클러스터에서 액세스 항목을 삭제합니다.

기록된 `desiredState` 값이 모두 일치하지 않는 경우  
AWS Batch 는 기존 액세스 모드를 유지합니다. 액세스 항목은 추가되거나 제거되지 않습니다. 여기에는 `ENABLED`, `DISABLED`및의 모든 혼합이 포함되며 `INHERIT_FROM_CLUSTER`가 `desiredState` 기록되지 않은 컴퓨팅 환경도 포함됩니다.

**참고**  
인증 모드가 `aws-auth` ConfigMap`API_AND_CONFIG_MAP`인 클러스터를 액세스 항목 인증으로 전환하려면 클러스터`desiredState=ENABLED`를 대상으로 하는 모든 AWS Batch 컴퓨팅 환경에를 설정합니다. 다시 전환하려면 모든 `desiredState=DISABLED`에를 설정합니다.

## 가 클러스터에 AWS Batch 생성하는 내용
<a name="eks-access-entries-what-batch-creates"></a>

AWS Batch 는 위의 조건을 충족하는 클러스터당 하나의 액세스 항목을 생성한 다음 `AWSBatchClusterPolicy` Amazon EKS 액세스 정책을 해당 액세스 항목과 연결합니다. 액세스 항목은 컴퓨팅 환경이 아닌 클러스터당이므로 동일한 클러스터를 대상으로 하는 모든 AWS Batch 컴퓨팅 환경이 이를 공유합니다.

**참고**  
컴퓨팅 환경을 삭제해도 클러스터의 마지막 AWS Batch 컴퓨팅 환경인 경우에도 액세스 항목은 제거되지 않습니다. AWS Batch관리형 액세스 항목을 제거하려면 클러스터를 대상으로 하는 `UpdateComputeEnvironment` `desiredState=DISABLED` 모든 AWS Batch 컴퓨팅 환경에서 삭제하기 전에를 호출합니다.

액세스 항목만으로는 클러스터에서 작업을 실행하기에 충분하지 않습니다. 직접 구성해야 하는 Kubernetes 권한 및 노드 액세스는 섹션을 참조하세요[여전히 제공해야 하는 클러스터 구성](#eks-access-entries-additional-configuration).

## 필수 권한
<a name="eks-access-entries-permissions"></a>

AWS Batch 는 `CreateComputeEnvironment` 또는 `UpdateComputeEnvironment` 작업을 호출하는 IAM 자격 증명의 자격 증명을 사용하여 액세스 항목을 관리합니다. 이 자격 증명은 다음 Amazon EKS 작업을 수행할 수 있어야 합니다.
+ `eks:DescribeCluster`
+ `eks:DescribeAccessEntry`
+ `eks:CreateAccessEntry`
+ `eks:AssociateAccessPolicy`
+ `eks:DeleteAccessEntry`

## 액세스 항목 구성
<a name="eks-access-entries-configure"></a>

[CreateComputeEnvironment](https://docs.aws.amazon.com/batch/latest/APIReference/API_CreateComputeEnvironment.html) 또는 [UpdateComputeEnvironment](https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdateComputeEnvironment.html) API의 `eksConfiguration.accessEntry` 필드를 통해 컴퓨팅 환경에서 액세스 항목을 구성할 수 있습니다.

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

**컴퓨팅 환경을 생성할 때 AWS Batch관리형 액세스 항목 활성화**

```
$ aws batch create-compute-environment \
    --compute-environment-name {{my-eks-ce}} \
    --type MANAGED \
    --eks-configuration 'eksClusterArn={{arn:aws:eks:us-east-1:123456789012:cluster/my-cluster}},kubernetesNamespace={{my-aws-batch-namespace}},accessEntry={desiredState=ENABLED}' \
    --compute-resources 'type=EC2,maxvCpus=128,subnets={{subnet-a123456b}},securityGroupIds={{sg-a12b3456}},instanceRole={{arn:aws:iam::123456789012:instance-profile/my-node-instance-profile}}'
```

**기존 컴퓨팅 환경에서 AWS Batch관리형 액세스 항목 활성화**

```
$ aws batch update-compute-environment \
    --compute-environment {{my-eks-ce}} \
    --eks-configuration 'accessEntry={desiredState=ENABLED}'
```

**상태 확인**

```
$ aws batch describe-compute-environments \
    --compute-environments {{my-eks-ce}} \
    --query "computeEnvironments[0].eksConfiguration.accessEntry"
```

응답에는 `desiredState` 지정한와 관찰된이 모두 포함됩니다`status`.

```
{
    "desiredState": "ENABLED",
    "status": "ACTIVE"
}
```

**참고**  
AWS Batch 는 모든 Amazon EKS 컴퓨팅 환경에 `accessEntry.status` 대해를 반환하고는 사용자가 설정한 `desiredState` 경우에만를 반환합니다. 지정한 적이 없는 컴퓨팅 환경은 `status` 단독으로 `accessEntry` 반환됩니다.

액세스 항목 AWS Batch 관리를 중지하려면 `DISABLED` 대신를 `desiredState`로 설정합니다. 이렇게 하기 전에 검토[클러스터의와 상호 작용 `authenticationMode`](#eks-access-entries-matrix): 인증 모드`DISABLED`가 인 클러스터`API`와 인증 모드가 인 클러스터에서는 클러스터를 대상으로 하는 모든 AWS Batch 컴퓨팅 환경이 로 설정된 후에만 `API_AND_CONFIG_MAP` 액세스 항목이 제거됩니다`DISABLED`.

------
#### [ API ]

[CreateComputeEnvironment](https://docs.aws.amazon.com/batch/latest/APIReference/API_CreateComputeEnvironment.html) 또는 [UpdateComputeEnvironment](https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdateComputeEnvironment.html) 요청에서 `eksConfiguration.accessEntry` 객체를 사용합니다.

** AWS Batch관리형 액세스 항목을 사용하여 컴퓨팅 환경 생성**

요청 본문`accessEntry`에 다음을 포함합니다.

```
{
    "computeEnvironmentName": "{{my-eks-ce}}",
    "type": "MANAGED",
    "state": "ENABLED",
    "eksConfiguration": {
        "eksClusterArn": "{{arn:aws:eks:us-east-1:123456789012:cluster/my-cluster}}",
        "kubernetesNamespace": "{{my-aws-batch-namespace}}",
        "accessEntry": {
            "desiredState": "ENABLED"
        }
    },
    "computeResources": {
        "type": "EC2",
        "maxvCpus": 128,
        "subnets": ["{{subnet-a123456b}}"],
        "securityGroupIds": ["{{sg-a12b3456}}"],
        "instanceRole": "{{arn:aws:iam::123456789012:instance-profile/my-node-instance-profile}}"
    }
}
```

**기존 컴퓨팅 환경에서 액세스 항목 업데이트**

```
{
    "computeEnvironment": "{{my-eks-ce}}",
    "eksConfiguration": {
        "accessEntry": {
            "desiredState": "ENABLED"
        }
    }
}
```

자세한 내용은 API 참조의 , [`EksAccessEntry`](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksAccessEntry.html) [CreateComputeEnvironment](https://docs.aws.amazon.com/batch/latest/APIReference/API_CreateComputeEnvironment.html) 및 [UpdateComputeEnvironment](https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdateComputeEnvironment.html)를 참조하세요. *AWS Batch * 

------

## 여전히 제공해야 하는 클러스터 구성
<a name="eks-access-entries-additional-configuration"></a>

액세스 항목은가 클러스터에 AWS Batch 대해 인증하는 방법만 제어합니다. 작업을 실행하는 데 필요한 AWS Batch Kubernetes 권한을 부여하지 않으며 AWS Batch 시작하는 인스턴스가 클러스터에 조인하도록 허용하지 않습니다. 사용하는 인증 메커니즘에 관계없이 다음 두 가지를 모두 구성해야 합니다.

**중요**  
클러스터(`accessEntry.status=ACTIVE`)의 AWS Batch 서비스 연결 역할에 대해 AWS Batch관리형 액세스 항목이 생성되면 해당 역할에 대한 `aws-auth` ConfigMap 구성보다 우선합니다. AWS Batch 서비스 연결 역할에 대한 ConfigMap 항목은 사용되지 않으며 대신 액세스 항목을 사용하여 AWS Batch 인증합니다. ConfigMap 인증으로 돌아가려면 클러스터`desiredState=DISABLED`를 대상으로 하는 모든 컴퓨팅 환경에를 설정합니다. 이렇게 하면 AWS Batch관리형 액세스 항목이 제거됩니다.

Kubernetes AWS Batch 네임스페이스에 대한 권한  
AWS Batch 에는에서 지정한 네임스페이스에서 포드를 생성하고 관리할 수 있는 Kubernetes 권한이 필요합니다`eksConfiguration.kubernetesNamespace`. 네임스페이스를 생성한 다음 인증 접근 방식에 따라 다음 방법 중 하나를 사용하여 해당 권한을 구성합니다.  
+ **액세스 정책 연결(액세스 항목에 필요`status=ACTIVE`) **- 클러스터`desiredState=ENABLED`를 대상으로 하는 모든 컴퓨팅 환경에서를 설정하면가 클러스터 수준 로 액세스 항목을 AWS Batch 생성합니다`AWSBatchClusterPolicy`. 그런 다음 네임스페이스 범위를 연결하여 포드를 생성하고 관리할 수 있는 권한을 `AWSBatchNamespacePolicy` 부여 AWS Batch 해야 합니다.

  액세스 항목이에 도달하면 AWS CLI다음을 사용하여 네임스페이스 정책을 `status=ACTIVE`연결합니다.

  ```
  $ aws eks associate-access-policy \
      --cluster-name {{my-cluster}} \
      --principal-arn {{arn:aws:iam::123456789012:role/aws-service-role/batch.amazonaws.com/AWSServiceRoleForBatch}} \
      --policy-arn arn:aws:eks::aws:cluster-access-policy/AWSBatchNamespacePolicy \
      --access-scope type=namespace,namespaces={{my-aws-batch-namespace}}
  ```

  {{my-aws-batch-namespace}}를에서 지정한 값으로 바꿉니다`eksConfiguration.kubernetesNamespace`.
**중요**  
네임스페이스 범위 정책 연결이 없으면 작업은 `RUNNABLE` 상태로 유지됩니다. 클러스터 수준 정책만으로는 포드 관리 권한을 부여하지 않습니다.
+ **Kubernetes 역할 및 역할 바인딩(액세스 항목 `status=INACTIVE`)** AWS Batch- 관리형 액세스 항목이 활성화되지 않은 경우에 설명된 대로 해당 권한을 부여하는 Kubernetes 역할 및 역할 바인딩을 생성합니다[2단계: Amazon EKS 클러스터 준비 AWS Batch](getting-started-eks.md#getting-started-eks-step-1). 각 클러스터에 대해이 작업을 한 번 수행합니다.
**참고**  
 AWS Batch관리형 액세스 항목이 활성화되면(`status=ACTIVE`) Kubernetes RBAC 역할이 우회됩니다. 대신 액세스 정책 연결 방법을 사용해야 합니다.
AWS Batch 는 이러한 리소스를 자동으로 생성하지 않으며 AWS Batch, 관리형 액세스 항목이 리소스를 대체하지 않습니다. 누락된 경우 작업이 시작되지 않는 `VALID` 동안 컴퓨팅 환경이 계속 될 수 있습니다.

노드 인스턴스 역할에 대한 클러스터 액세스  
를 AWS Batch 시작하는 인스턴스는에서 지정한 인스턴스 프로파일을 사용하여 클러스터에 조인합니다`computeResources.instanceRole`. 이 역할에는 AWS Batch관리형 액세스 항목과 별개이고 구성 AWS Batch 되지 않는 클러스터에 대한 자체 액세스 권한이 필요합니다.  
구성 방법은 클러스터의에 따라 다릅니다. `authenticationMode`   
+ 이 **`authenticationMode`인 클러스터의 `CONFIG_MAP`** 경우 `aws-auth` ConfigMap을 사용해야 합니다. 이러한 클러스터에서는 액세스 항목이 지원되지 않습니다.
+ **이 `authenticationMode`인 클러스터의 경우 `API_AND_CONFIG_MAP`** - 노드 인스턴스 역할은 `aws-auth` ConfigMap 또는 액세스 항목을 사용하여 인증할 수 있습니다. 인스턴스 역할이 ConfigMap에 이미 매핑된 경우 노드는 역할에 대한 액세스 항목을 생성하지 않고 성공적으로 조인됩니다.
+ **이 `authenticationMode`인 클러스터`API`**의 경우 - 노드 인스턴스 역할에 대한 액세스 항목을 생성해야 합니다. `aws-auth` ConfigMap은 이러한 클러스터의 인증에 사용되지 않습니다.
노드 인스턴스 역할에 대한 액세스 항목을 생성하려면 AWS CLI다음을 사용합니다.  

```
$ aws eks create-access-entry \
    --cluster-name {{my-cluster}} \
    --principal-arn {{arn:aws:iam::123456789012:role/my-node-instance-role}} \
    --type EC2_LINUX
```

```
$ aws eks associate-access-policy \
    --cluster-name {{my-cluster}} \
    --principal-arn {{arn:aws:iam::123456789012:role/my-node-instance-role}} \
    --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSWorkerNodePolicy \
    --access-scope type=cluster
```
자세한 내용은 **Amazon EKS 사용 설명서**의 [액세스 항목 생성을](https://docs.aws.amazon.com/eks/latest/userguide/creating-access-entries.html) 참조하세요.  
노드 인스턴스 역할에 대한 적절한 클러스터 액세스 권한이 없으면 EC2 인스턴스가 클러스터에 조인할 수 없습니다. 클러스터에 등록된 용량이 없기 때문에 작업은 `RUNNABLE` 상태로 유지됩니다.

## `aws-auth` ConfigMap과 액세스 항목 중에서 선택
<a name="eks-access-entries-choosing"></a>

액세스 항목 인증은 Amazon EKS 컴퓨팅 환경에서 새로운 AWS Batch 에 권장되는 경로이며 다음과 같은 이점을 제공합니다.
+ 클러스터에 대한 AWS Batch 액세스 권한을 부여하기 위해 `aws-auth` ConfigMap을 수동으로 편집할 필요가 없습니다.
+ 클러스터에 액세스할 수 있는 보안 주체에 대한 감사 가능한 API 기반 레코드를 제공합니다.
+ ConfigMap을 지원하지 않는 `aws-auth` `authenticationMode`가 `API`인 클러스터에 필요합니다.

클러스터의이 `authenticationMode`인 경우 `CONFIG_MAP`액세스 항목을 사용할 수 없으며 `aws-auth` ConfigMap을 통해 AWS Batch 인증됩니다. 지침은 [`aws-auth ConfigMap` 필드가 제대로 구성되었는지 확인](verify-configmap-config.md) 섹션을 참조하세요.