IAM 문제 해결

IAM 문제 해결 (Troubleshooting IAM)

이 토픽은 Amazon EKS를 IAM과 함께 사용할 때 볼 수 있는 몇 가지 일반적인 오류와 그 해결 방법을 다뤄요.

출처: 문서

본문

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 identity-based policy examples를 참고하세요.

IAM에 대한 더 일반적인 정보는 IAM 사용자 가이드의 Controlling access using policies를 참고하세요.

Compute 탭의 Nodes나 Resources 탭의 항목이 보이지 않고 AWS Management Console에서 오류가 발생하는 경우

Your current user or role does not have access to Kubernetes objects on this EKS cluster라는 콘솔 오류 메시지가 표시될 수 있어요. AWS Management Console에서 사용 중인 IAM 보안 주체 사용자에게 필요한 권한이 있는지 확인하세요. 자세한 내용은 Required permissions를 참고하세요.

aws-auth ConfigMap이 클러스터 접근을 허용하지 않는 경우

AWS IAM Authenticator는 ConfigMap에 사용된 역할 ARN의 경로(path)를 허용하지 않아요. 따라서 rolearn을 지정하기 전에 경로를 제거해야 해요. 예를 들어 arn:aws:iam::111122223333:role/team/developers/eks-admin을 arn:aws:iam::111122223333:role/eks-admin으로 바꾸세요.

iam:PassRole을 수행할 권한이 없는 경우

iam:PassRole 작업을 수행할 권한이 없다는 오류가 발생하면 역할을 Amazon EKS에 전달(pass)하도록 정책이 업데이트되어야 해요.

일부 AWS 서비스는 새 서비스 역할이나 서비스 연결 역할을 만드는 대신 기존 역할을 그 서비스에 전달할 수 있게 해줘요. 그러려면 그 서비스에 역할을 전달할 권한이 있어야 해요.

다음 예시 오류는 marymajor라는 IAM 사용자가 콘솔에서 Amazon EKS에서 어떤 작업을 수행하려 할 때 발생해요. 그 작업은 서비스 역할이 부여한 권한이 필요하며, Mary는 역할을 서비스에 전달할 권한이 없어요.

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

이 경우 Mary의 정책을 업데이트해 그녀가 iam:PassRole 작업을 수행할 수 있게 해야 해요.

도움이 필요하면 AWS 관리자에게 문의하세요. 관리자는 로그인 자격 증명을 제공한 사람이에요.

AWS 계정 외부의 사용자에게 Amazon EKS 리소스 접근을 허용하고 싶은 경우

다른 계정의 사용자나 조직 외부의 사람들이 리소스에 접근하는 데 사용할 수 있는 역할을 만들 수 있어요. 역할을 맡도록 신뢰받는 주체를 지정할 수 있어요. 리소스 기반 정책이나 ACL(access control list)을 지원하는 서비스에서는 그런 정책으로 사람들에게 리소스 접근 권한을 부여할 수 있어요.

자세한 내용은 다음을 참고하세요.

  • Amazon EKS가 이 기능을 지원하는지 알아보려면 Amazon EKS가 IAM과 동작하는 방식을 참고하세요.
  • 소유한 AWS 계정 간에 리소스 접근을 제공하는 방법은 IAM 사용자 가이드의 Providing access to an IAM user in another AWS account that you own을 참고하세요.
  • 제3자 AWS 계정에 리소스 접근을 제공하는 방법은 IAM 사용자 가이드의 Providing access to AWS accounts owned by third parties를 참고하세요.
  • ID 페더레이션을 통한 접근 제공 방법은 IAM 사용자 가이드의 Providing access to externally authenticated users (identity federation)을 참고하세요.
  • 교차 계정 접근에서 역할과 리소스 기반 정책 사용의 차이는 IAM 사용자 가이드의 Cross account resource access in IAM을 참고하세요.

Pod 컨테이너가 다음 오류를 받는 경우: An error occurred (SignatureDoesNotMatch) when calling the GetCallerIdentity operation: Credential should be scoped to a valid region

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

  • 애플리케이션 코드를 업데이트해 AWS STS 글로벌 엔드포인트에 대한 명시적 호출을 제거하기.
  • 애플리케이션 코드를 업데이트해 https://sts.us-west-2.amazonaws.com 같은 리전 엔드포인트에 명시적 호출을 하도록 하기. 애플리케이션은 해당 AWS 리전의 서비스 실패 시 다른 AWS 리전을 선택하는 중복성을 갖춰야 해요. 자세한 내용은 IAM 사용자 가이드의 Managing AWS STS in an AWS Region을 참고하세요.
  • 서비스 계정이 글로벌 엔드포인트를 사용하도록 구성하기. 클러스터는 기본적으로 리전 엔드포인트를 사용해요. 자세한 내용은 서비스 계정용 AWS Security Token Service 엔드포인트 구성을 참고하세요.

더 알아보기 (Learn more)