Kubernetes API에 대한 액세스 권한 부여 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 설명서에 기여하고 싶으신가요? 이 페이지 하단으로 스크롤하여 GitHub에서 이 페이지 편집을 선택하세요. 여러분의 기여는 모두를 위한 더 나은 사용자 설명서를 만드는 데 도움이 됩니다.

Kubernetes API에 대한 액세스 권한 부여

클러스터에는 Kubernetes API 엔드포인트가 있습니다. Kubectl은 이 API를 사용합니다. 다음 두 유형의 ID를 사용하여 이 API에 인증할 수 있습니다.

  • AWS Identity and Access Management(IAM) 보안 주체(역할 또는 사용자) - 이 유형에는 IAM에 대한 인증이 필요합니다. 자격 증명 소스를 통해 제공된 보안 인증 정보를 사용하여 IAM 사용자 또는 페더레이션 ID로 AWS에 로그인할 수 있습니다. 관리자가 이전에 IAM 역할을 사용하여 ID 페더레이션을 설정한 경우 페더레이션형 ID로만 로그인할 수 있습니다. 페더레이션을 사용하여 AWS에 액세스하면 간접적으로 역할을 수임합니다. 이 유형의 ID를 사용하는 경우 다음을 수행할 수 있습니다.

    • 클러스터의 Kubernetes 객체에서 작업할 수 있도록 Kubernetes 권한을 할당할 수 있습니다. 클러스터의 Kubernetes 객체에 액세스할 수 있도록 IAM 보안 주체에 권한을 할당하는 방법에 대한 자세한 내용은 액세스 항목 관리을 참조하세요.

    • Amazon EKS API, AWS CLI, AWS CloudFormation, AWS Management Console 또는 eksctl을 사용하여 Amazon EKS 클러스터 및 해당 리소스에서 작업할 수 있도록 IAM 권한을 할당할 수 있습니다. 자세한 내용은 서비스 권한 부여 참조에서 Amazon Elastic Kubernetes Service에서 정의한 작업을 참조하세요.

    • 노드는 IAM 역할을 수임하여 클러스터에 조인합니다. IAM 보안 주체를 사용하는 클러스터에 액세스하는 기능은 Kubernetes용 AWS IAM Authenticator에서 제공되며, Amazon EKS 컨트롤 플레인에서 실행됩니다.

  • 자체 OpenID Connect(OIDC) 제공업체의 사용자 - 이 유형을 사용하려면 OIDC 제공업체에 대한 인증이 필요합니다. Amazon EKS 클러스터에서 자체 OIDC 제공업체를 설정하는 방법에 대한 자세한 내용은 OpenID Connect 자격 증명 공급자에서 클러스터에 대해 사용자 인증 섹션을 참조하세요. 이 유형의 ID를 사용하는 경우 다음을 수행할 수 있습니다.

    • 클러스터의 Kubernetes 객체에서 작업할 수 있도록 Kubernetes 권한을 할당할 수 있습니다.

    • Amazon EKS API, AWS CLI, AWS CloudFormation, AWS Management Console 또는 eksctl을 사용하여 Amazon EKS 클러스터 및 해당 리소스에서 작업할 수 있도록 IAM 권한을 할당할 수 있습니다.

클러스터에서는 두 가지 유형의 ID를 모두 사용할 수 있습니다. IAM 인증 방법은 비활성화할 수 없습니다. OIDC 인증 방법은 선택 사항입니다.

IAM 자격 증명을 Kubernetes 권한과 연결

Kubernetes용 AWS IAM Authenticator는 클러스터의 컨트롤 플레인에 설치됩니다. 이를 통해 AWS Identity and Access Management(IAM) 보안 주체(역할 및 사용자)가 클러스터의 Kubernetes 리소스에 액세스할 수 있습니다. 다음 방법 중 하나를 사용하여 IAM 보안 주체가 클러스터의 Kubernetes 객체에 액세스하도록 허용할 수 있습니다.

  • 액세스 항목 생성 - 클러스터가 클러스터 Kubernetes 버전의 사전 조건 섹션에 나열된 플랫폼 버전 이상인 경우 이 옵션을 사용하는 것이 좋습니다.

    액세스 항목을 사용하여 클러스터 외부에서 IAM 보안 주체의 Kubernetes 권한을 관리합니다. EKS API, AWS Command Line Interface, AWS SDK, AWS CloudFormation 및 AWS Management Console을 사용하여 클러스터에 대한 액세스를 추가하고 관리할 수 있습니다. 즉, 클러스터를 생성할 때 사용한 것과 동일한 도구로 사용자를 관리할 수 있습니다.

    시작하려면 액세스 항목 설정, 기존 aws-auth ConfigMap 항목을 액세스 항목으로 마이그레이션 섹션을 차례로 따르세요.

  • aws-auth ConfigMap에 항목 추가 - 클러스터의 플랫폼 버전이 사전 조건 섹션에 나열된 버전 이하인 경우 이 옵션을 사용해야 합니다. 클러스터의 플랫폼 버전이 클러스터 Kubernetes 버전의 사전 조건 섹션에 나열된 플랫폼 버전 이상이고 ConfigMap에 항목을 추가한 경우 해당 항목을 액세스 항목으로 마이그레이션하는 것이 좋습니다. 그러나 관리형 노드 그룹 또는 Fargate 프로파일과 함께 사용되는 IAM 역할 항목과 같이 Amazon EKS가 ConfigMap에 추가한 항목은 마이그레이션할 수 없습니다. 자세한 내용은 Kubernetes API에 대한 액세스 권한 부여 단원을 참조하십시오.

    • aws-auth ConfigMap 옵션을 사용해야 하는 경우 eksctl create iamidentitymapping 명령을 사용하여 ConfigMap에 항목을 추가할 수 있습니다. 자세한 내용은 eksctl 설명서의 IAM 사용자 및 역할 관리를 참조하세요.

클러스터 인증 모드 설정

각 클러스터에는 인증 모드가 있습니다. 인증 모드는 IAM 보안 주체가 클러스터의 Kubernetes 객체에 액세스하도록 허용하는 데 사용할 수 있는 방법을 결정합니다. 세 가지 인증 모드가 있습니다.

중요

액세스 항목 방법을 활성화한 후에는 비활성화할 수 없습니다.

클러스터 생성 중에 ConfigMap 방법을 활성화하지 않으면 나중에 활성화할 수 없습니다. 액세스 항목이 도입되기 전에 생성된 모든 클러스터에는 ConfigMap 메서드가 활성화되어 있습니다.

클러스터 내부 aws-auth ConfigMap

Amazon EKS 클러스터의 원래 인증 모드입니다. 클러스터를 생성한 IAM 보안 주체는 kubectl을 사용하여 클러스터에 액세스할 수 있는 초기 사용자입니다. 초기 사용자는 aws-auth ConfigMap에서 목록에 다른 사용자를 추가하고 클러스터 내 다른 사용자에게 영향을 주는 권한을 할당해야 합니다. ConfigMap에 관리할 항목이 없기 때문에 이러한 다른 사용자는 초기 사용자를 관리하거나 제거할 수 없습니다.

ConfigMap 및 액세스 항목 모두

이 인증 모드에서는 두 가지 방법을 모두 사용하여 클러스터에 IAM 보안 주체를 추가할 수 있습니다. 각 방법에서는 별도의 항목을 저장합니다. 예를 들어 AWS CLI에서 액세스 항목을 추가하는 경우 aws-auth ConfigMap이 업데이트되지 않습니다.

액세스 항목만

이 인증 모드에서는 EKS API, AWS Command Line Interface, AWS SDK, AWS CloudFormation 및 AWS Management Console을 사용하여 IAM 보안 주체의 클러스터에 대한 액세스를 관리할 수 있습니다.

각 액세스 항목에는 유형이 있으며, 보안 주체를 특정 네임스페이스로 제한하는 액세스 범위와 사전 구성된 재사용 가능한 권한 정책을 설정하는 액세스 정책을 조합하여 사용할 수 있습니다. 또는 STANDARD 유형 및 Kubernetes RBAC 그룹을 사용하여 사용자 지정 권한을 할당할 수 있습니다.

인증 모드 메서드
ConfigMap만 해당(CONFIG_MAP) aws-auth ConfigMap
EKS API 및 ConfigMap(API_AND_CONFIG_MAP) EKS API, AWS Command Line Interface, AWS SDK, AWS CloudFormation, AWS Management Console 및 aws-auth ConfigMap에 있는 액세스 항목
EKS API만 해당(API) EKS API, AWS Command Line Interface, AWS SDK, AWS CloudFormation 및 AWS Management Console에 있는 액세스 항목