[EKS] 액세스 정책 권한 검토

AWS EKS 사용 중 'nodes' 접근 불가 에러 발생 시, AmazonEKSAdminPolicy와 ClusterAdminPolicy의 권한 범위를 확인하세요.

[EKS] 액세스 정책 권한 검토
Photo by Dan Nelson / Unsplash

개요

기존 ConfigMap 구성에서 EKS API로 구성 변경 작업 중 관련 에러를 확인하였습니다.

Notion Image
nodes is forbidden: User "arn:aws:iam::<ACCOUNT_ID>:user/<USER_NAME>" cannot list resource "nodes" in API group "" at the cluster scope

EKS API 구성에서 AmazonEKSAdminPolicy 를 직접 할당했음에도 불구하고 관련 에러가 발생하였습니다. 기존 ConfigMap 구성 수정, 권한 재할당을 수행하여도 AWS Console 상에서Node Group 정보를 확인할 수 없었습니다. 이를 통해 EKS Access 정책을 확인해보았고 각 구성에 차이가 있는 것을 확인하였습니다.

Review access policy permissions

AmazonEKSAdminPolicy

AmazonEKSAdminPolicy는 IAM 보안 주체에게 대부분의 리소스에 대한 권한을 부여하는 액세스 정책입니다. 주요 특징과 권한은 다음과 같습니다.

IAM 보안 주체가 클러스터의 모든 리소스에 대한 관리자 액세스 권한을 보유하려면 대신 AmazonEKSClusterAdminPolicy 액세스 정책을 액세스 항목에 연결해야한다고 명시되어있습니다.

내용을 확인했을 땐 AmazonEKSClusterAdminPolicy 의 경우 주로 워크로드 관리에 초점이 맞춰져 있으며 노드 관리와 워크로드 관리를 분리하여 최소 권한을 위한 정책이라고 생각됩니다.

AmazonEKSAdminViewPolicy

다만 AmazonEKSAdminViewPolicy 의 경우 모든 리소스에 대한 엑세스 권한이 있다는 점이 의아하지만 AmazonEKSAdminViewPolicy 의 경우 모든 리소스를 조회할 수 있다는 것을 확인하였습니다.

Notion Image

AmazonEKSClusterAdminPolicy

클러스터에 대한 액세스 권한을 IAM 보안 주체 관리자에게 부여하는 권한입니다.

모든 정책을 허용하며 기존의 system:masters와 유사합니다.

Notion Image

AmazonEKSAdminPolicy / AmazonEKSClusterAdminPolicy 차이

1. AmazonEKSClusterAdminPolicy

  • 클러스터 전체에 대한 완전한 관리자 권한을 부여합니다
  • Kubernetes의 cluster-admin 역할과 동일한 권한을 가집니다
  • 모든 네임스페이스와 리소스에 대한 모든 작업을 수행할 수 있습니다
  • 가장 높은 수준의 권한을 가집니다

2. AmazonEKSAdminPolicy

  • 특정 네임스페이스 내에서의 관리자 권한을 부여합니다
  • Kubernetes의 admin 역할과 동일한 권한을 가집니다
  • 할당된 네임스페이스 내에서만 관리자 권한을 가집니다
  • 클러스터 전체에 대한 권한은 제한적입니다

주요 차이점:

  • 범위
    • ClusterAdmin은 클러스터 전체에 대한 권한을 가지지만, Admin은 특정 네임스페이스로 제한됩니다
  • 권한 수준
    • ClusterAdmin이 더 높은 수준의 권한을 가집니다
  • 사용 사례
    • ClusterAdmin: 클러스터 전체를 관리해야 하는 운영팀이나 관리자에게 적합
    • Admin: 특정 애플리케이션이나 서비스의 네임스페이스만 관리해야 하는 팀에게 적합

기본적인 보안 모범 사례에 따르면, 필요한 최소한의 권한만 부여하는 것이 좋습니다.

따라서 특정 네임스페이스만 관리해야 하는 경우에는 AmazonEKSAdminPolicy를 사용하여 특정 Namespace로 좁히는 것이 더 적절할 수 있습니다. 이를 수행하기 위한 기본적인 권한 관리 방법입니다.