EKS Pod Identity Webhook으로 쿠버네티스 포드 IAM 권한 관리, 더 안전하게!
EKS Pod Identity Webhook은 쿠버네티스 포드에 IAM 권한을 안전하게 부여하는 솔루션이다.
kube2iam, kiam의 단점을 보완하여 EKS 환경에서 더 나은 보안을 제공한다.
Mutating Webhook을 활용하여 포드에 AWS_ROLE_ARN 환경 변수를 자동으로 주입한다.
Pod Identity Webhook 작동 원리
Pod Identity Webhook은 Mutating Webhook을 활용하여 포드 생성 시 IAM 역할 ARN을 주입한다. 구체적으로, 포드 스펙에 AWS_ROLE_ARN 및 AWS_WEB_IDENTITY_TOKEN_FILE 환경 변수를 추가한다. 따라서, AWS SDK는 해당 환경 변수를 통해 AssumeRoleWithWebIdentity를 호출하여 임시 자격 증명을 획득한다.
kube2iam, kiam vs Pod Identity Webhook
kube2iam과 kiam은 iptables DNAT 규칙을 사용하여 트래픽을 가로채는 방식이다. 반면, Pod Identity Webhook은 EKS IdP를 활용하여 Web Identity 토큰 기반의 인증을 수행한다. 따라서, Pod Identity Webhook은 Assume Role 권한을 kiam 서버에만 부여하면 되므로 보안 측면에서 유리하다.
EKS 환경 설정 가이드
Pod Identity Webhook 사용을 위해선 EKS OpenID Connect Provider를 등록해야 한다. 구체적으로, IAM Role에 AssumeRoleWithWebIdentity 권한을 부여하고, 서비스 어카운트에 대한 Trust Relationship을 설정한다. 따라서, Terraform을 사용하여 인프라를 코드화하면 효율적인 관리가 가능하다.