IAM 문제 해결 - Amazon EKS

IAM 문제 해결

이 주제에서는 IAM과 함께 Amazon EKS를 사용하는 동안 발생할 수 있는 몇 가지 일반적 오류와 이를 해결하는 방법을 다룹니다.

AccessDeniedException

AWS API 작업을 호출할 때 AccessDeniedException이 발생하면 사용하고 있는 IAM 보안 주체 자격 증명에 해당 호출을 수행할 필수 권한이 없는 것입니다.

An error occurred (AccessDeniedException) when calling the DescribeCluster operation: 
User: arn:aws:iam::111122223333:user/user_name is not authorized to perform: 
eks:DescribeCluster on resource: arn:aws:eks:region:111122223333:cluster/my-cluster

이전 예제 메시지에서 사용자는 Amazon EKS DescribeCluster API 작업을 호출할 권한이 없습니다. IAM 보안 주체에게 Amazon EKS 관리 권한을 부여하려면 Amazon EKS 자격 증명 기반 정책 예제 섹션을 참조하세요.

IAM에 자세한 내용은 IAM 사용 설명서에서 정책을 사용하여 액세스 제어를 참조하세요.

컴퓨팅 탭에서 노드 또는 리소스 탭에서 아무것도 볼 수 없으며 AWS Management Console에서 오류가 발생합니다.

Your current user or role does not have access to Kubernetes objects on this EKS cluster라는 콘솔 오류 메시지가 나타날 수 있습니다. AWS Management Console를 함께 사용하는 IAM 보안 주체 사용자에게 필요한 권한이 있는지 확인하세요. 자세한 내용은 필요한 권한 섹션을 참조하세요.

aws-auth ConfigMap은 클러스터에 대한 액세스 권한을 부여하지 않습니다.

AWS IAM AuthenticatorConfigMap에 사용된 역할 ARN의 경로를 허용하지 않습니다. 따라서 rolearn를 지정하기 전에 경로를 제거하십시오. 예를 들면 arn:aws:iam::111122223333:role/team/developers/eks-adminarn:aws:iam::111122223333:role/eks-admin로 변경합니다.

iam:PassRole을 수행하도록 인증되지 않음

iam:PassRole 작업을 수행할 수 있는 권한이 없다는 오류가 수신되면 Amazon EKS에 역할을 전달할 수 있도록 정책을 업데이트해야 합니다.

일부 AWS 서비스에서는 새 서비스 역할 또는 서비스 연결 역할을 생성하는 대신 해당 서비스에 기존 역할을 전달할 수 있습니다. 이렇게 하려면 사용자가 서비스에 역할을 전달할 수 있는 권한을 가지고 있어야 합니다.

다음 예제 오류는 marymajor라는 IAM 사용자가 콘솔을 사용하여 Amazon EKS에서 작업을 수행하려고 하는 경우에 발생합니다. 하지만 작업을 수행하려면 서비스 역할이 부여한 권한이 서비스에 있어야 합니다. Mary는 서비스에 역할을 전달할 수 있는 권한을 가지고 있지 않습니다.

User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole

이 경우 Mary가 iam:PassRole작업을 수행할 수 있도록 Mary의 정책을 업데이트해야 합니다.

도움이 필요한 경우 AWS 관리자에게 문의합니다. 관리자는 로그인 보안 인증을 제공한 사용자입니다.

내 AWS 계정 외부의 사용자가 내 Amazon EKS 리소스에 액세스하도록 허용하려고 합니다.

다른 계정의 사용자 또는 조직 외부의 사람이 리소스에 액세스할 때 사용할 수 있는 역할을 생성할 수 있습니다. 역할을 수임할 신뢰할 수 있는 사람을 지정할 수 있습니다. 리소스 기반 정책 또는 액세스 제어 목록(ACL)을 지원하는 서비스의 경우 이러한 정책을 사용하여 다른 사람에게 리소스에 대한 액세스 권한을 부여할 수 있습니다.

자세히 알아보려면 다음을 참조하십시오.

포드 컨테이너는 다음과 같은 오류가 발생합니다. An error occurred (SignatureDoesNotMatch) when calling the GetCallerIdentity operation: Credential should be scoped to a valid region

애플리케이션이 명시적으로 AWS STS 글로벌 엔드포인트(https://sts.amazonaws)를 요청하고 Kubernetes 서비스 계정이 리전별 엔드포인트를 사용하도록 구성된 경우 컨테이너에 이 오류가 표시됩니다. 다음 옵션 중 하나를 사용하여 문제를 해결할 수 있습니다.

  • 애플리케이션 코드를 업데이트하여 AWS STS 전역 엔드포인트에 대한 명시적 호출을 제거합니다.

  • 애플리케이션 코드를 업데이트하여 https://sts.us-west-2.amazonaws.com와 같은 리전별 엔드포인트를 명시적으로 호출합니다. 애플리케이션에는 해당 AWS 리전에서 서비스 장애가 발생한 경우 다른 AWS 리전을 선택하기 위해 기본 제공되는 중복성이 있어야 합니다. 자세한 내용은 IAM 사용 설명서의 AWS 리전에서 AWS STS 관리를 참조하세요.

  • 전역 엔드포인트를 사용하도록 서비스 계정을 구성합니다. 1.22 이하인 모든 버전은 기본적으로 글로벌 엔드포인트를 사용했지만 버전 1.22 이상의 클러스터는 기본적으로 리전별 엔드포인트를 사용합니다. 자세한 내용은 서비스 계정의 AWS Security Token Service 엔드포인트 구성 섹션을 참조하세요.