View a markdown version of this page

EKS Auto Mode 관리형 컨트롤러에 추가 Kubernetes RBAC 부여 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.

EKS Auto Mode 관리형 컨트롤러에 추가 Kubernetes RBAC 부여

Amazon EKS Auto Mode는 사용자를 대신하여 로드 밸런싱, 네트워킹, 컴퓨팅, 블록 스토리지 및 클러스터 인사이트와 같은 컨트롤러를 관리합니다. 이러한 컨트롤러는 EKS 컨트롤 플레인에서 실행됩니다. 이 컨트롤러는 AWSServiceRoleForAmazonEKS 서비스 연결 역할로 클러스터에 대해 인증하고, 해당 클러스터 내 권한은 해당 액세스 항목에 연결된 AWS 관리형 액세스 정책에서 가져옵니다.

사용자는 관리형 컨트롤러의 Kubernetes RBAC를 직접 확장할 수 있습니다. 이는 관리형 정책이 필요한 권한(예: 특정 Secret에 대한 get 권한)을 아직 부여하지 않은 경우에 유용합니다.

Amazon EKS Auto Mode 클러스터에서 AWSServiceRoleForAmazonEKS에 대한 자동 생성된 액세스 항목은 Kubernetes 그룹 eks:managed도 선언합니다. Kubernetes RBAC는 추가 기능입니다. RoleBinding 또는 ClusterRoleBinding(subjects:로 eks:managed 그룹의 이름 지정)은 관리형 액세스 정책 외에 추가 권한을 관리형 컨트롤러에 부여합니다.

작동 방식

  • EKS Auto Mode 관리형 컨트롤러는 서비스 연결 역할 AWSServiceRoleForAmazonEKS로 클러스터에 연결됩니다.

  • 해당 역할에 대해 자동으로 생성된 액세스 항목은 kubernetesGroups: ["eks:managed"]를 선언합니다.

  • 추가 권한을 설명하는 Role(네임스페이스) 또는 ClusterRole(클러스터 전체)과 RoleBinding/ClusterRoleBinding(subjects:로 eks:managed 그룹 이름 지정)을 작성합니다.

  • Kubernetes RBAC는 바인딩을 관리형 액세스 정책과 결합하므로 관리형 컨트롤러는 두 가지 권한 집합을 모두 수신합니다.

그룹이 있는지 확인하려면 다음을 실행합니다.

CLUSTER=<your-cluster> REGION=<your-region> ACCT=$(aws sts get-caller-identity --query Account --output text) aws eks describe-access-entry \ --cluster-name "$CLUSTER" --region "$REGION" \ --principal-arn "arn:aws:iam::${ACCT}:role/aws-service-role/eks.amazonaws.com/AWSServiceRoleForAmazonEKS" \ --query 'accessEntry.kubernetesGroups'

예상 결과:

[ "eks:managed" ]

엄격하게 권한 부여 범위 지정

eks:managed 그룹은 모든 EKS Auto Mode 관리형 컨트롤러에 적용됩니다. 관리형 컨트롤러에 필요한 권한만 정확히 노출하도록 사용 사례에서 허용하는 범위만큼 좁게 추가 권한의 범위를 지정합니다.

  • ClusterRole+ClusterRoleBinding(클러스터 전체)보다 Role+RoleBinding(네임스페이스)을 선호합니다.

  • resources, resourceNames 및 verbs를 사용 사례의 차단을 해제하는 가장 작은 집합으로 제한합니다. 예를 들어 모든 Secret 객체에서 list, watch 대신 이름이 Secret인 단일 항목에 get 권한을 부여합니다.

  • 더 이상 필요하지 않은 경우 Role 및 RoleBinding을 삭제합니다.

Amazon EKS Auto Mode 고려 사항

  • 이 메커니즘은 EKS Auto Mode 관리형 컨트롤러의 Kubernetes RBAC만 확장합니다. 관리형 액세스 정책에서 부여한 AWS IAM 권한은 변경되지 않습니다.

  • eks:managed 그룹은 서비스 연결 역할이 AWSServiceRoleForAmazonEKS인 EKS Auto Mode 클러스터에 있습니다.

  • eks:managed에 대한 바인딩은 모든 EKS Auto Mode 관리형 컨트롤러에 적용됩니다. 실제 영향 범위를 작게 유지하려면 resourceNames 및 네임스페이스가 Role인 객체를 사용합니다. 이렇게 하면 사용자가 지정한 리소스만 사용자가 부여한 동사를 통해서만 노출됩니다.

  • 이는 관리형 액세스 정책이 아직 사용자에게 필요한 권한을 포함하지 않는 경우를 대비한 브리징 패턴입니다. AWS 관리형 정책이 이미 권한을 포함하는 경우 대신 관리형 정책을 사용합니다.

예제

명명된 OIDC Secret에 대한 get 권한을 EKS Auto Mode 로드 밸런서 컨트롤러에 부여하여 ALB Ingress의 alb.ingress.kubernetes.io/auth-type: oidc 주석 차단을 해제하는 단계별 연습은 특정 Secret에 대한 액세스 권한을 EKS Auto Mode 로드 밸런서 컨트롤러에 부여 섹션을 참조하세요.