EKS Pod에 IAM 권한 주기 — IRSA vs Pod Identity

클라우드·인프라3분조회

EKS 에서 파드가 AWS API 를 쓰려면 IAM 권한이 필요합니다. 그 권한을 ServiceAccount 마다 다르게 주는 AWS 기능이 둘인데, IRSA(IAM Roles for Service Accounts)와 EKS Pod Identity 입니다.

기본값이면 Pod가 Node의 IAM Role을 씀

EC2 에서 AWS API 를 쓰려면 IAM Role 이 필요합니다. 그런데 Kubernetes Pod 는 EC2 가 아니라 Node 위에서 돕니다. 기본값으로 두면 Pod 가 Node 의 IAM Role 을 쓰게 됩니다.

문제는 그 노드의 모든 Pod 가 같은 권한을 갖는다는 겁니다. S3 만 필요한 Pod 도 노드 롤에 붙은 모든 권한을 갖게 됩니다. 최소 권한 원칙이 깨집니다.

그래서 Pod(정확히는 ServiceAccount)마다 다른 IAM Role 을 주는 방법이 필요합니다.

IRSA — OIDC 기반

IRSA(IAM Roles for Service Accounts)는 OIDC 로 동작합니다. EKS 클러스터가 OIDC Provider 역할을 합니다.

1. EKS 클러스터에 OIDC Provider 생성
2. IAM Role 의 Trust Policy 에:
   "이 OIDC Provider 의 이 ServiceAccount 만 이 Role 을 AssumeRole 가능"
3. ServiceAccount 에 annotation:
   eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/my-role
4. Pod 시작 시 Web Identity 토큰 파일이 자동 마운트
5. SDK 가 토큰 → STS → 임시 자격증명 교환

Pod 안에서 일어나는 일은 이렇습니다.

Pod 시작
  └── 토큰 파일 마운트

  AWS SDK 가 토큰 감지

  STS AssumeRoleWithWebIdentity 호출

  임시 자격증명(1시간) 받아서 사용

동작은 잘 되는데 Trust Policy 가 번거롭습니다. “이 OIDC Provider 의 이 SA 만” 이라는 조건을 매번 정확히 써야 하고, OIDC Provider 는 클러스터마다 따로 있습니다. 멀티 클러스터면 클러스터 수만큼 OIDC 설정이 늘어납니다.

EKS Pod Identity — OIDC 제거

2023년에 나온 방식으로, OIDC 없이 EKS 가 Agent(DaemonSet)를 띄워 자격증명을 직접 주입합니다.

1. EKS Pod Identity Agent 설치 (DaemonSet)
2. IAM Role 의 Trust Policy 에:
   "EKS Pod Identity 서비스가 이 Role 을 AssumeRole 가능" (단순)
3. EKS 콘솔/CLI 에서 ServiceAccount ↔ IAM Role 매핑
4. Pod 시작 시 Agent 가 자격증명 자동 주입

Trust Policy 도 훨씬 단순해서, OIDC ARN 과 condition 을 쓰는 대신 EKS 서비스 principal 하나면 됩니다. 클러스터마다 OIDC 를 세팅할 필요도 없어서, 같은 IAM Role 을 여러 클러스터에서 재사용할 수 있습니다.

항목별 차이 — OIDC 설정과 Trust Policy

항목 IRSA EKS Pod Identity
출시 2019 2023
OIDC 설정 클러스터마다 필요 불필요
Trust Policy OIDC ARN + condition 서비스 principal (단순)
자격증명 갱신 SDK 가 자동 Agent 가 자동
멀티 클러스터 클러스터마다 OIDC Role 재사용 가능

어느 걸 쓰나

신규 클러스터면 Pod Identity 가 설정이 단순해서 낫습니다. 기존에 IRSA 로 잘 돌고 있는 환경을 급하게 바꿀 이유는 없습니다. IRSA 도 계속 지원됩니다.

결국 차이는 하나로 좁혀지는데, IRSA 는 OIDC Trust Policy 를 직접 관리하고 Pod Identity 는 그 관리를 EKS 서비스에 넘깁니다. 클러스터가 여러 개일수록 이 차이가 커집니다.

참고

  1. 불러오는 중