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

서비스 계정에 대한 IAM 역할

IAM 역할을 Kubernetes 서비스 계정에 연결합니다. 이렇게 하면 이 서비스 계정에서는 이 서비스 계정을 사용하는 모든 포드에 있는 컨테이너에 AWS 권한을 제공할 수 있습니다. 이 기능을 사용하면 해당 노드의 포드에서 AWS API를 호출할 수 있도록 Amazon EKS 노드 IAM 역할에 확장된 권한을 제공할 필요가 없습니다.

애플리케이션은 AWS 자격 증명으로 AWS API 요청에 서명해야 합니다. 이 기능은 Amazon EC2 인스턴스 프로파일이 Amazon EC2 인스턴스에 자격 증명을 제공하는 것과 비슷한 방식으로 애플리케이션에서 자격 증명을 관리할 수 있는 전략을 제공합니다. AWS 자격 증명을 생성하여 컨테이너에 배포하거나 Amazon EC2 인스턴스의 역할을 사용하는 대신에 IAM 역할을 Kubernetes 서비스 계정과 연결할 수 있습니다. 그러면 포드의 컨테이너에서 애플리케이션이 AWS SDK 또는 AWS CLI를 사용하여 인증된 AWS 서비스로 API 요청을 할 수 있습니다.

중요

Kubernetes 서비스 계정에 IAM 역할을 할당하더라도 IMDS에 대한 포드 액세스를 차단하지 않는 한 포드에는 Amazon EKS 노드 IAM 역할에 할당된 권한도 있습니다. 자세한 내용은 섹션을 참조하세요IMDS 및 Amazon EC2 인스턴스 프로파일 자격 증명에 대한 액세스 제한

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

  • 최소 권한 - 서비스 계정의 IAM 역할 기능을 사용하면, 더 이상 노드가 AWS API를 호출할 수 있도록 노드 IAM 역할에 확장된 권한을 제공할 필요할 필요가 없습니다. IAM 권한의 범위를 서비스 계정으로 지정할 수 있습니다. 그러면 해당 서비스 계정을 사용하는 포드만 이 권한에 액세스할 수 있습니다. 또한 이 기능을 사용하면 kiam, kube2iam 같은 타사 솔루션이 필요 없습니다.

  • 자격 증명 격리 - 컨테이너는 컨테이너가 속한 서비스 계정과 연결된 IAM 역할에 대한 자격 증명만 검색할 수 있습니다. 컨테이너는 다른 포드에 속한 다른 컨테이너를 위한 자격 증명에는 액세스할 수 없습니다.

  • 감사 - CloudTrail을 통한 액세스 및 이벤트 로깅을 사용하여 소급적 감사를 지원합니다.

세 단계로 서비스 계정이 AWS 리소스에 액세스할 수 있도록 설정

  1. 클러스터에 대한 IAM OIDC 공급자 생성 - 클러스터에 대해 한 번만 이 작업을 수행하면 됩니다.

  2. IAM 역할을 생성하여 서비스 계정에 필요한 권한으로 IAM 정책을 역할에 연결 - 포드에 필요한 각각의 고유한 권한 컬렉션에 대해 별도의 역할을 만드는 것이 좋습니다.

  3. IAM 역할을 서비스 계정에 연결 - AWS 리소스에 액세스해야 하는 각 Kubernetes 서비스 계정에 대해 이 태스크를 완료합니다.