AI Briefing

EKS에서 Pod Identity Webhook으로 포드별 IAM 권한 제어 원리와 적용법

·2020.06.02 09:00

핵심 내용

데브시스터즈가 EKS 환경에서 kube2iam 대신 Pod Identity Webhook을 도입해 포드별 최소 권한을 부여하는 방식을 소개했다.

1 / 6

자세히 보기

데브시스터즈는 AWS EKS 환경에서 포드(Pod) 단위의 세밀한 IAM 권한 제어를 위해 Pod Identity Webhook 애드온을 도입했다. 기존 kube2iam이나 kiam은 인스턴스 메타데이터 API를 가로채 Assume Role을 수행하는 방식이었으나, EKS 전용인 Pod Identity Webhook은 어드미션 컨트롤러를 통해 포드 스펙에 필요한 설정을 주입하는 방식으로 동작한다.

Pod Identity Webhook의 동작 원리

Pod Identity Webhook은 mutating webhook 기능을 활용해 포드 생성 시 다음 세 가지 설정을 자동으로 주입한다.

  • 환경변수: AWS_ROLE_ARN(사용할 역할 ARN)과 AWS_WEB_IDENTITY_TOKEN_FILE(토큰 경로)
  • 볼륨 마운트: /var/run/secrets/eks.amazonaws.com/serviceaccount 경로에 서비스 어카운트 토큰 마운트
  • 프로젝티드 볼륨: audience를 sts.amazonaws.com으로 설정한 projectedServiceAccountToken 사용

이 토큰은 EKS IdP(OpenID Connect Provider)를 통해 검증되며, AWS SDK는 이를 이용해 AssumeRoleWithWebIdentity를 호출하여 임시 자격 증명을 획득한다. 이 과정에서 포드는 인스턴스의 IAM 역할을 공유하지 않고, 지정된 IAM 역할의 권한만 사용하게 된다.

설정 및 주의 사항

Pod Identity Webhook을 사용하려면 Kubernetes 1.14 이상의 EKS 클러스터가 필요하며, 도커 이미지는 공식 GitHub 저장소에서 직접 빌드해야 한다. 설치 시 make cluster-up 명령어를 통해 리소스를 생성할 수 있으나, 인증서 서명 요청(CSR)이 Pending 상태일 경우 kubectl certificate approve 명령어로 수동 승인이 필요하다.

또한, 포드가 특정 IAM 역할을 Assume할 수 있도록 EKS IdP를 AWS IAM의 Identity Provider로 등록하고, 해당 역할의 Trust Relationship에 sts:AssumeRoleWithWebIdentity 권한을 추가해야 한다. Terraform을 사용할 경우 thumbprint_list 항목은 직접 입력해야 하는 제약이 있다. 데브시스터즈는 이 방식을 통해 외부 의존 애드온을 줄이고 보안성을 강화했다.

이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.

AI 처리 방식을 확인하거나, 요약 오류와 출처 표기 문제, 삭제 요청을 문의 · 건의로 알려주세요.