기본 Amazon EKS에서 생성한 Kubernetes 역할 및 사용자 - Amazon EKS

기본 Amazon EKS에서 생성한 Kubernetes 역할 및 사용자

Kubernetes 클러스터를 생성하면 Kubernetes 클러스터가 제대로 작동하도록 해당 클러스터에 여러 개의 기본 Kubernetes 자격 증명이 생성됩니다. Amazon EKS는 각 기본 구성 요소에 대한Kubernetes ID를 생성합니다. 자격 증명에서는 클러스터 구성 요소에 대한 Kubernetes RBAC(역할 기반 권한 부여 제어)가 제공됩니다. 자세한 내용은 Kubernetes 설명서의 RBAC 승인 사용을 참조하세요.

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

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

AWS Management Console
전제 조건

필요한 권한에서 설명한 권한이 사용하는 IAM 보안 주체에 있어야 합니다.

AWS Management Console을 사용하여 Amazon EKS에서 생성한 자격 증명을 보는 방법
  1. https://console.aws.amazon.com/eks/home#/clusters에서 Amazon EKS 콘솔을 엽니다.

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

  3. 리소스 탭을 선택합니다.

  4. Resource types(리소스 유형)에서 Authorization(권한 부여)을 선택합니다.

  5. ClusterRoles, ClusterRoleBindings, Roles 또는 RoleBindings를 선택합니다. 앞에 eks로 시작하는 모든 리소스는 Amazon EKS에서 생성합니다. Amazon EKS에서 생성한 추가 자격 증명 리소스는 다음과 같습니다.

    • ClusterRoleaws-node라는 ClusterRoleBinding. aws-node 리소스에서는 Amazon EKS에서 모든 클러스터에 설치하는 Amazon VPC CNI plugin for Kubernetes을 지원합니다.

    • vpc-resource-controller-role이라는 ClusterRolevpc-resource-controller-rolebinding이라는 ClusterRoleBinding. 이러한 리소스에서는 Amazon EKS에서 모든 클러스터에 설치하는 Amazon VPC 리소스 컨트롤러를 지원합니다.

    콘솔에 표시되는 리소스 외에 다음과 같은 특별한 사용자 자격 증명이 클러스터에 있지만, 클러스터의 구성에는 표시되지 않습니다.

    • eks:cluster-bootstrap – 클러스터 부트스트랩 중 kubectl 작업에 사용됩니다.

    • eks:support-engineer – 클러스터 관리 작업에 사용됩니다.

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

Kubectl
전제 조건

클러스터의 Kubernetes 리소스를 나열하는 데 사용하는 엔터티(AWS Identity and Access Management(IAM) 또는 OpenID Connect(OIDC))는 IAM 또는 OIDC 자격 증명 제공업체에서 인증해야 합니다. 엔터티를 연동하려는 클러스터의 Role, ClusterRole, RoleBindingClusterRoleBinding 리소스에 Kubernetes getlist 동사를 사용하는 권한이 엔터티에 부여되어야 합니다. IAM 엔터티에 클러스터 액세스 권한을 부여하는 자세한 내용은 클러스터에 대한 IAM 보안 주체 액세스 사용 섹션을 참조하세요. 자체 OIDC 제공업체에서 인증한 엔터티에 클러스터 액세스 권한을 부여하는 것에 대한 자세한 내용은 OpenID Connect 자격 증명 공급자에서 클러스터에 대해 사용자 인증 섹션을 참조하세요.

kubectl을 사용하여 Amazon EKS에서 생성한 자격 증명을 보는 방법

표시하려는 리소스 유형에 대한 명령을 실행합니다. eks로 시작하는 반환된 모든 리소스는 Amazon EKS에서 생성합니다. 출력에서 반환되는 리소스 외에 다음과 같은 특별한 사용자 자격 증명이 클러스터에 있지만, 클러스터의 구성에는 표시되지 않습니다.

  • eks:cluster-bootstrap – 클러스터 부트스트랩 중 kubectl 작업에 사용됩니다.

  • eks:support-engineer – 클러스터 관리 작업에 사용됩니다.

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

다음과 같은 명령에서는 Amazon EKS에서 생성한 클러스터의 Kubernetes ClusterRoles를 모두 반환합니다.

kubectl get clusterroles | grep eks

출력에서 반환되어 앞에 붙는 ClusterRoles 외에 다음과 같은 ClusterRoles가 있습니다.

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]

ClusterRoleBindingsClusterRoleBindings의 범위가 클러스터로 지정됩니다.

다음과 같은 명령에서는 Amazon EKS에서 생성한 클러스터의 Kubernetes ClusterRoleBindings를 모두 반환합니다.

kubectl get clusterrolebindings | grep eks

출력에서 반환된 ClusterRoleBindings 외에 다음과 같은 ClusterRoleBindings가 있습니다.

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

RolesRoles의 범위가 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]

RoleBindingsRoleBindings의 범위가 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