서비스 계정에 대한 IAM 역할 - Amazon EKS

서비스 계정에 대한 IAM 역할

pod 컨테이너의 애플리케이션은 AWS SDK 또는 AWS CLI를 통해 AWS Identity and Access Management(IAM) 권한을 사용하여 AWS 서비스에 API를 요청할 수 있습니다. 애플리케이션은 AWS 자격 증명으로 AWS API 요청에 서명해야 합니다. 서비스 계정에 대한 IAM 역할은 Amazon EC2 인스턴스 프로파일이 Amazon EC2 인스턴스에 자격 증명을 제공하는 것과 비슷한 방식으로 애플리케이션에 대한 자격 증명을 관리하는 기능을 제공합니다. AWS 자격 증명을 생성하여 컨테이너에 배포하거나 Amazon EC2 인스턴스의 역할을 사용하는 대신 IAM 역할을 Kubernetes 서비스 계정과 연결하고 서비스 계정을 사용하도록 포드를 구성합니다. AWS Outposts의 Amazon EKS에 대한 로컬 클러스터가 있는 서비스 계정에는 IAM 역할을 사용할 수 없습니다.

서비스 계정의 IAM 역할을 통해 다음과 같은 이점을 누릴 수 있습니다.

  • 최소 권한 – IAM 권한의 범위를 서비스 계정으로 지정할 수 있습니다. 그러면 해당 서비스 계정을 사용하는 pods만 이 권한에 액세스할 수 있습니다. 또한 이 기능을 사용하면 kiam, kube2iam 같은 타사 솔루션이 필요 없습니다.

  • 자격 증명 격리 - 포드의 컨테이너는 컨테이너가 사용하는 서비스 계정과 연결된 IAM 역할에 대한 자격 증명만 검색할 수 있습니다. 컨테이너는 다른 pods의 다른 컨테이너에서 사용하는 자격 증명에 액세스할 수 없습니다. 서비스 계정에 대해 IAM 역할을 사용할 때 Amazon EC2 인스턴스 메타데이터 서비스(IMDS)에 대한 pod 액세스를 차단하지 않는 한 pod's 컨테이너는 Amazon EKS 노드 IAM 역할에 할당된 권한도 갖습니다. 자세한 내용은 워커 노드에 할당된 인스턴스 프로파일에 대한 액세스 제한 섹션을 참조하세요.

  • 감사 - 소급적 감사를 위해 AWS CloudTrail을 통해 액세스 및 이벤트 로깅이 가능합니다.

다음 절차를 완료하여 서비스 계정에 대한 IAM 역할을 활성화합니다.

  1. 클러스터의 IAM OIDC 제공업체 생성 - 각 클러스터에 대해 한 번만 이 절차를 완료합니다.

  2. 서비스 계정의 AWS Security Token Service 엔드포인트 구성 - 애플리케이션에 부여하려는 고유한 권한 세트에 대해 이 절차를 완료합니다.

  3. Kubernetes 서비스 계정을 사용하도록 포드 구성 - AWS 서비스에 액세스해야 하는 각 포드에 대해 이 절차를 완료합니다.

IAM, Kubernetes 및 OpenID Connect(OIDC) 배경 정보

2014년 AWS Identity and Access Management에서는 OpenID Connect(OIDC)를 사용하여 페더레이션형 ID를 지원하는 기능을 추가했습니다. 이 기능을 사용하면 지원되는 ID 제공업체를 이용해 AWS API 호출을 인증하고 유효한 OIDC JSON 웹 토큰(JWT)을 수신할 수 있습니다. 이 토큰을 AWS STS AssumeRoleWithWebIdentity API 작업에 전달하고 IAM 임시 역할 자격 증명을 수신할 수 있습니다. 이 자격 증명을 사용하여 Amazon S3 및 DynamoDB와 같은 AWS 서비스와 상호 작용할 수 있습니다.

Kubernetes는 오랫동안 서비스 계정을 자체 내부 ID 시스템으로 사용해 왔습니다. Pods는 Kubernetes API 서버만 검증할 수 있는 자동 탑재 토큰(OIDC가 아닌 JWT)을 사용하여 Kubernetes API 서버에 인증할 수 있습니다. 이러한 레거시 서비스 계정 토큰은 만료되지 않으며, 서명 키를 교체하려면 까다로운 프로세스를 거쳐야 합니다. Kubernetes 버전 1.12에서 새로운 ProjectedServiceAccountToken 기능에 대한 지원이 추가되었습니다. 이 기능은 서비스 계정 ID도 포함된 OIDC JSON 웹 토큰이며 구성 가능한 대상을 지원합니다.

Amazon EKS는 ProjectedServiceAccountToken JSON 웹 토큰에 대한 서명 키가 포함된 각 클러스터에 대한 퍼블릭 OIDC 검색 엔드포인트를 호스팅하므로 IAM과 같은 외부 시스템이 Kubernetes에서 발급한 OIDC 토큰을 확인하고 수락할 수 있습니다.