[EKS] IAM 계정에, cluster 권한 부여

Hyun-Sung Kim·2025년 1월 5일

Kubernetes

목록 보기
8/24

AWS IAM 계정에는, default로 아무 권한이 없어서, EKS cluster에 접근할 수 있는 권한을 부여해야 합니다.

AWS IAM

1) AWS IAM policy 생성
- AWS IAM 콘솔 - Policies - 'Create Policy' - 해당 Policy를 아래 json 포맷으로 AWS permission 할당

```
{
	"Version": "2012-10-17",
	"Statement": [
    	{
        	"Sid": "VisualEditor0",
        	"Effect": "Allow",
        	"Action": [
            	"eks:ListNodegroups",
            	"eks:DescribeFargateProfile",
            	"eks:ListTagsForResource",
            	"eks:ListAddons",
            	"eks:DescribeAddon",
            	"eks:ListFargateProfiles",
            	"eks:DescribeNodegroup",
            	"eks:DescribeIdentityProviderConfig",
            	"eks:ListUpdates",
            	"eks:DescribeUpdate",
            	"eks:AccessKubernetesApi",
            	"eks:DescribeCluster",
            	"eks:ListClusters",
            	"eks:DescribeAddonVersions",
            	"eks:ListIdentityProviderConfigs"
        	],
        	"Resource": "*"
    	}
	]
}

2) AWS IAM 계정에게, 위 policy 할당

- cloud9 사용자용 IAM 계정은 아래와 같이 권한을 부여

< Cluster Resource 운영 권한 >

  • Amazon EKS 클러스터 생성자에게만 클러스터를 구성할 system:masters 권한이 있습니다.
  • system:masters 권한을 다른 사용자 및 역할로 확대하려면 aws-auth ConfigMap을 Amazon EKS 클러스터 구성에 추가해야 합니다.
  • ConfigMap을 사용하면 다른 IAM 엔터티(예: 사용자 및 역할)에서 Amazon EKS 클러스터에 액세스할 수 있습니다.

Kubernetes ConfigMap (yaml)

1) aws-auth ConfigMap을 편집 (with .yaml)

  • 'aws-auth.yaml' 파일 작성 예시
apiVersion: v1 
ind: ConfigMap 
etadata: 
 name: aws-auth 
 namespace: kube-system 
ata: 
 mapRoles: | 
   - rolearn: arn:aws:iam::<내AWS계정ID>:role/AWSServiceRoleForAmazonEKS 
    username: system:node:{*} 
    groups: 
      - system:bootstrappers 
      - system:nodes 
    - rolearn: arn:aws:iam::<내AWS계정ID>:role/eksctl-eks-cluster-ms05-cl-FargatePodExecutionRole-1KL8FFQRRALXF
      username: system:node:{{SessionName}}
      groups:
      - system:bootstrappers
      - system:nodes
      - system:node-proxier
 mapUsers: | 
   - userarn: arn:aws:iam::<내AWS계정ID>:user/admin_dream/
      username: admin_dream 
      groups: 
        - system:masters
   - userarn: arn:aws:iam::<내AWS계정ID>:user/user01
      username: user01
    - userarn: arn:aws:iam::<내AWS계정ID>:user/ecr-user01
      username: ecr-user01
      groups:
        - system:masters
- 'system:masters' 권한을 할당하지 않은 사용자는, readOnly 권한이 부여됩니다.
  • 'aws-auth.yaml' 파일 적용

    kubectl apply -f aws-auth.yaml

  • 해당 사용자에 연결된 정책을 확인

    aws iam list-attached-user-policies --user-name [MyUser]

Kubernetes ConfigMap (eksctl)

  • aws-auth ConfigMap 업데이트 시 aws-auth의 모든 편집을 수행할 수 있는 'eksctl create iamidentitymapping' API를 사용하는 것을 권장

eksctl create iamidentitymapping --cluster --region= --arn arn:aws:iam::123456:role/testing --group system:masters --username admin

  • 위 명령은 IAM 사용자를 'system:masters' 그룹에 추가하고 사용자에게 EKS 클러스터에 대한 full admin access 권한을 부여하는 kubernetes username을 할당합니다.
  • 클러스터에 대한 사용자의 액세스를 제한하려면 그룹을 사용하는 대신 EKS에서 Role 및 Rolebinding을 생성하여 Kubernetes 사용자에게 EKS 클러스터 내의 특정 작업에 대한 액세스 권한을 부여하는 것이 좋습니다.

<공식 문서>

iam_id-based-policy

eks-cluster-access

profile
Cloud Engineer

0개의 댓글