[2] 250909~ 클라우드/[b] 12월 : Terraform + Ansible

[49] IAM <-> RBAC (EKS ACCESS ENTRY)

페페 더 엔지니어 2026. 2. 16. 14:04

 

*

 

enable_cluster_creator_admin_permissions = true

클러스터 내부에서 이 옵션 넣어서 저 코드는 굳이 필요가 없다

 

그런데 이건 terraform(k8s provider)로 접근 가능해도

AWS 콘솔 EKS 화면에서 k8s resource 보려면 별도 IAM 권한이 필요했다

 

Terraform CLI
   ↓
k8s provider
   ↓
Kubernetes API Server

 

Browser
   ↓
AWS Console Backend
   ↓
AWS IAM 인증
   ↓
EKS Access API
   ↓
Kubernetes API Proxy

 

[0]

IAM 주체를 k8s RBAC 권한에 매핑하는 새로운 방법

- 예전에는 aws-auth ConfigMap을 직접 수정했는데

- 지금은 AWS API 레벨에서 관리하게 바뀐 것

 

-

 

[1]

EKS 권한은 2단계다

1. AWS 인증 (IAM)

2. k8s 권한 (RBAC)

IAM 통과해도 RBAC 없으면 

 

kubectl get pods
→ Forbidden

 

 

즉 AWS는 누군지만 알고, k8s는 뭘 할수 있는지를 따로 관리

-> 이 둘을 연결해야 함

 

-

 

[2]

이전 방식인 aws-auth ConfigMAp

kube-system/aws-auth ConfigMap

여기에

mapRoles:
  - rolearn: arn:aws:iam::123:role/dev
    groups:
      - system:masters

문제 : kubectl로 직접 수정 / Terraform 관리 어려움 / 실수 시 클러스터 잠김

 

-

 

[3]

그래서 나온게 Access API (AWS가 만든 새 리소스)

-> EKS Access Entry

-> EKS Access Policy Attachment

즉 IAM <-> RBAC 매핑을 AWS API로 관리

 

-

 

[4]

EKS Access Entry (Princiapl)

클러스터에 접근할 IAM 주체 등록

- IAM User

- IAM Role

- SSO Principal

 

Terraform

Principal ARN -> Cluster Access 등록

출입증 발급

 

-

 

[5]

EKS Access Policy Attachment = 뭘 할 수 있나?

 

  • AmazonEKSClusterAdminPolicy
  • AmazonEKSAdminPolicy
  • AmazonEKSEditPolicy
  • AmazonEKSViewPolicy

 

즉 RBAC 권한 템플릿

 

-

 

[6]

IAM (AWS 인증)
   ↓
Access Entry (신원 등록)
   ↓
Access Policy (권한 매핑)
   ↓
Kubernetes RBAC
   ↓
API Server 권한 허용