

 **이 페이지 개선에 도움 주기** 

이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 **GitHub에서 이 페이지 편집** 링크를 선택합니다.

# Amazon EKS 기반 RBAC 역할 및 사용자 이해
<a name="default-roles-users"></a>

Kubernetes 클러스터를 생성하면 Kubernetes가 제대로 작동하도록 해당 클러스터에 여러 개의 기본 Kubernetes ID가 생성됩니다. Amazon EKS는 각 기본 구성 요소에 대한 Kubernetes ID를 생성합니다. ID에서는 클러스터 구성 요소에 대한 Kubernetes RBAC(역할 기반 권한 부여 제어)가 제공됩니다. 자세한 내용은 Kubernetes 문서의 [Using RBAC Authorization(RBAC 승인 사용)](https://kubernetes.io/docs/reference/access-authn-authz/rbac/)을 참조하세요.

클러스터에 선택적 [추가 기능](eks-add-ons.md)을 설치하면 클러스터에 추가 Kubernetes ID가 추가될 수도 있습니다. 이 주제에서 다루지 않는 자격 증명에 대한 자세한 내용은 추가 기능에 대한 설명서를 참조하세요.

Amazon EKS에서 클러스터에 생성한 Kubernetes ID 목록은 AWS Management Console 또는 `kubectl` 명령줄 도구를 사용하여 볼 수 있습니다. 모든 사용자 자격 증명은 Amazon CloudWatch를 통해 사용할 수 있는 `kube` 감사 로그에 표시됩니다.

## AWS Management Console
<a name="default-role-users-console"></a>

### 사전 조건
<a name="_prerequisite"></a>

사용하는 [IAM 위탁자](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal)는 [필수 권한](view-kubernetes-resources.md#view-kubernetes-resources-permissions)에 설명된 권한을 가지고 있어야 합니다.

### AWS Management Console을 사용하여 Amazon EKS에서 생성한 자격 증명을 보는 방법
<a name="to_view_amazon_eks_created_identities_using_the_shared_consolelong"></a>

1. [Amazon EKS 콘솔](https://console.aws.amazon.com/eks/home#/clusters)을 엽니다.

1. 보려는 자격 증명이 포함된 클러스터를 **클러스터** 목록에서 선택합니다.

1. **리소스** 탭을 선택합니다.

1. **리소스 유형**에서 **권한 부여**를 선택합니다.

1. **ClusterRoles**, **ClusterRoleBindings**, **Roles** 또는 **RoleBindings**를 선택합니다. 앞에 **eks**로 시작하는 모든 리소스는 Amazon EKS에서 생성합니다. Amazon EKS에서 생성한 추가 자격 증명 리소스는 다음과 같습니다.
   + **ClusterRole** 및 **aws-node**라는 **ClusterRoleBinding**. **aws-node** 리소스에서는 Amazon EKS에서 모든 클러스터에 설치하는 [Kubernetes용 Amazon VPC CNI 플러그인](managing-vpc-cni.md)을 지원합니다.
   + **vpc-resource-controller-role**이라는 **ClusterRole** 및 **vpc-resource-controller-rolebinding**이라는 **ClusterRoleBinding**. 이러한 리소스에서는 Amazon EKS에서 모든 클러스터에 설치하는 [Amazon VPC 리소스 컨트롤러](https://github.com/aws/amazon-vpc-resource-controller-k8s)를 지원합니다.

   콘솔에 표시되는 리소스 외에 다음과 같은 특별한 사용자 자격 증명이 클러스터에 있지만, 클러스터의 구성에는 표시되지 않습니다.
   +  ** `eks:cluster-bootstrap` **– 클러스터 부트스트랩 중 `kubectl` 작업에 사용됩니다.
   +  **`eks:support-engineer`** – 클러스터 관리 작업에 사용됩니다.

1. 특정 리소스를 선택하면 해당 세부 정보를 볼 수 있습니다. 기본적으로 **구조화된 뷰**에 정보가 표시됩니다. 세부 정보 페이지의 오른쪽 상단에서 **Raw view**(원시 뷰)를 선택하여 리소스에 대한 모든 정보를 볼 수 있습니다.

## kubectl
<a name="default-role-users-kubectl"></a>

### 사전 조건
<a name="_prerequisite_2"></a>

클러스터에 Kubernetes 리소스를 나열하는 데 사용하는 엔터티(AWS Identity and Access Management(IAM) 또는 OpenID Connect (OIDC))는 IAM 또는 OIDC ID 제공업체에 의해 인증되어야 합니다. 엔터티를 연동하려는 클러스터의 `Role`, `ClusterRole`, `RoleBinding`및 `ClusterRoleBinding` 리소스에 `get` Kubernetes 및 `list` 동사를 사용하는 권한이 엔터티에 부여되어야 합니다. IAM 엔터티에 클러스터 액세스 권한을 부여하는 자세한 내용은 [IAM 사용자 및 역할에 Kubernetes API에 대한 액세스 권한 부여](grant-k8s-access.md) 섹션을 참조하세요. 자체 OIDC 제공자에서 인증한 엔터티에 클러스터 액세스 권한을 부여하는 것에 대한 자세한 내용은 [외부 OIDC 제공자를 통해 사용자에게 Kubernetes에 대한 액세스 권한 부여](authenticate-oidc-identity-provider.md) 섹션을 참조하세요.

### `kubectl`을 사용하여 Amazon EKS에서 생성한 자격 증명을 보는 방법
<a name="_to_view_amazon_eks_created_identities_using_kubectl"></a>

표시하려는 리소스 유형에 대한 명령을 실행합니다. **eks**로 시작하는 반환된 모든 리소스는 Amazon EKS에서 생성합니다. 출력에서 반환되는 리소스 외에 다음과 같은 특별한 사용자 자격 증명이 클러스터에 있지만, 클러스터의 구성에는 표시되지 않습니다.
+  ** `eks:cluster-bootstrap` **– 클러스터 부트스트랩 중 `kubectl` 작업에 사용됩니다.
+  **`eks:support-engineer`** – 클러스터 관리 작업에 사용됩니다.

 **ClusterRoles** – `ClusterRoles`의 범위가 클러스터로 지정되므로 역할에 부여된 모든 권한이 클러스터의 모든 Kubernetes 네임스페이스에 있는 리소스에 적용됩니다.

다음 명령은 클러스터의 Amazon EKS 생성 Kubernetes `ClusterRoles`을 모두 반환합니다.

```
kubectl get clusterroles | grep eks
```

출력에서 반환되어 앞에 붙는 `ClusterRoles` 외에 다음과 같은 `ClusterRoles`가 있습니다.
+  **`aws-node`** - 이 `ClusterRole`에서는 Amazon EKS가 모든 클러스터에 설치하는 [Kubernetes용 Amazon VPC CNI 플러그인](managing-vpc-cni.md)을 지원합니다.
+  ** `vpc-resource-controller-role` **– 이 `ClusterRole`에서는 Amazon EKS에서 모든 클러스터에 설치하는 [Amazon VPC 리소스 컨트롤러](https://github.com/aws/amazon-vpc-resource-controller-k8s)를 지원합니다.

`ClusterRole`의 사양을 표시하려면 다음과 같은 명령의 *eks:k8s-metrics*를 이전 명령의 출력에서 반환된 `ClusterRole`로 바꿉니다. 다음 예시에서는 *eks:k8s-metrics* `ClusterRole`에 대한 사양을 반환합니다.

```
kubectl describe clusterrole eks:k8s-metrics
```

예제 출력은 다음과 같습니다.

```
Name:         eks:k8s-metrics
Labels:       <none>
Annotations:  <none>
PolicyRule:
  Resources         Non-Resource URLs  Resource Names  Verbs
  ---------         -----------------  --------------  -----
                    [/metrics]         []              [get]
  endpoints         []                 []              [list]
  nodes             []                 []              [list]
  pods              []                 []              [list]
  deployments.apps  []                 []              [list]
```

 **ClusterRoleBindings** – `ClusterRoleBindings`의 범위가 클러스터로 지정됩니다.

다음 명령은 클러스터의 Amazon EKS 생성 Kubernetes `ClusterRoleBindings`을 모두 반환합니다.

```
kubectl get clusterrolebindings | grep eks
```

출력에서 반환된 `ClusterRoleBindings` 외에 다음과 같은 `ClusterRoleBindings`가 있습니다.
+  **`aws-node`** - 이 `ClusterRoleBinding`에서는 Amazon EKS가 모든 클러스터에 설치하는 [Kubernetes용 Amazon VPC CNI 플러그인](managing-vpc-cni.md)을 지원합니다.
+  ** `vpc-resource-controller-rolebinding` **– 이 `ClusterRoleBinding`에서는 Amazon EKS에서 모든 클러스터에 설치하는 [Amazon VPC 리소스 컨트롤러](https://github.com/aws/amazon-vpc-resource-controller-k8s)를 지원합니다.

`ClusterRoleBinding`의 사양을 표시하려면 다음과 같은 명령의 *eks:k8s-metrics*를 이전 명령의 출력에서 반환된 `ClusterRoleBinding`로 바꿉니다. 다음 예시에서는 *eks:k8s-metrics* `ClusterRoleBinding`에 대한 사양을 반환합니다.

```
kubectl describe clusterrolebinding eks:k8s-metrics
```

예제 출력은 다음과 같습니다.

```
Name:         eks:k8s-metrics
Labels:       <none>
Annotations:  <none>
Role:
  Kind:  ClusterRole
  Name:  eks:k8s-metrics
Subjects:
  Kind  Name             Namespace
  ----  ----             ---------
  User  eks:k8s-metrics
```

 **Roles** – `Roles`의 범위가 Kubernetes 네임스페이스로 지정됩니다. Amazon EKS에서 생성한 모든 `Roles`의 범위가 `kube-system` 네임스페이스로 지정됩니다.

다음 명령은 클러스터의 Amazon EKS 생성 Kubernetes `Roles`을 모두 반환합니다.

```
kubectl get roles -n kube-system | grep eks
```

`Role`의 사양을 표시하려면 다음과 같은 명령의 *eks:k8s-metrics*를 이전 명령의 출력에서 반환된 `Role`의 이름으로 변경합니다. 다음 예시에서는 *eks:k8s-metrics* `Role`에 대한 사양을 반환합니다.

```
kubectl describe role eks:k8s-metrics -n kube-system
```

예제 출력은 다음과 같습니다.

```
Name:         eks:k8s-metrics
Labels:       <none>
Annotations:  <none>
PolicyRule:
  Resources         Non-Resource URLs  Resource Names             Verbs
  ---------         -----------------  --------------             -----
  daemonsets.apps   []                 [aws-node]                 [get]
  deployments.apps  []                 [vpc-resource-controller]  [get]
```

 **RoleBindings** – `RoleBindings`의 범위가 Kubernetes 네임스페이스로 지정됩니다. Amazon EKS에서 생성한 모든 `RoleBindings`의 범위가 `kube-system` 네임스페이스로 지정됩니다.

다음 명령은 클러스터의 Amazon EKS 생성 Kubernetes `RoleBindings`을 모두 반환합니다.

```
kubectl get rolebindings -n kube-system | grep eks
```

`RoleBinding`의 사양을 표시하려면 다음과 같은 명령의 *eks:k8s-metrics*를 이전 명령의 출력에서 반환된 `RoleBinding`로 바꿉니다. 다음 예시에서는 *eks:k8s-metrics* `RoleBinding`에 대한 사양을 반환합니다.

```
kubectl describe rolebinding eks:k8s-metrics -n kube-system
```

예제 출력은 다음과 같습니다.

```
Name:         eks:k8s-metrics
Labels:       <none>
Annotations:  <none>
Role:
  Kind:  Role
  Name:  eks:k8s-metrics
Subjects:
  Kind  Name             Namespace
  ----  ----             ---------
  User  eks:k8s-metrics
```