개발/AWS
[EKS] 현재 사용자 또는 역할이 이 EKS 클러스터에 있는 Kubernetes 객체에 액세스할 수 없습니다.
피클s
2022. 1. 7. 08:43
원인
ConfigMap aws-auth에 현재 사용자 또는 역할이 등록되어 있지 않기 때문입니다.
해결방법
kubectl edit cm/aws-auth -n kube-system
mapRoles 또는 mapUsers에 현재 사용자 정보를 추가하고 저장합니다.
groups에 system:masters를 추가해야 AWS콘솔에서 EKS를 올바르게 확인할 수 있습니다.
data:
mapRoles: |
- rolearn: arn:aws:iam::111122223333:role/eksctl-my-cluster-nodegroup-standard-wo-NodeInstanceRole-1WP3NUE3O6UCF
username: system:node:{{EC2PrivateDNSName}}
groups:
- system:bootstrappers
- system:nodes
mapUsers: |
- userarn: arn:aws:iam::111122223333:user/admin
username: admin
groups:
- system:masters
- userarn: arn:aws:iam::111122223333:user/ops-user
username: ops-user
groups:
- system:masters
자세한 내용은 아래를 참고하십시오.
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/add-user-role.html
커스텀 그룹 생성
system:masters만으로 문제는 해결되지만 상세한 권한설정을 하고 싶을 경우 ClusterRole을 생성할 수 있습니다.
vi custom-clusterrole.yaml
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: eks-console-dashboard-full-access-clusterrole
rules:
- apiGroups:
- ""
resources:
- nodes
- namespaces
- pods
verbs:
- get
- list
- apiGroups:
- apps
resources:
- deployments
- daemonsets
- statefulsets
- replicasets
verbs:
- get
- list
- apiGroups:
- batch
resources:
- jobs
verbs:
- get
- list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: eks-console-dashboard-full-access-binding
subjects:
- kind: Group
name: eks-console-dashboard-full-access-group # 이것이 추가할 그룹명입니다.
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: eks-console-dashboard-full-access-clusterrole
apiGroup: rbac.authorization.k8s.io
cluster role에 원하는 권한을 설정하고 저장합니다.
ClusterRole과 ClusterRoleBinding을 생성합니다.
kubectl apply -f custom-clusterrole.yaml
다시 aws-auth 설정에 들어갑니다.
kubectl edit cm/aws-auth -n kube-system
groups에 생성한 그룹을 추가하여 권한을 부여할 수 있습니다.
mapUsers: |
- userarn: arn:aws:iam::XXXXXXXXXXXX:user/testuser
username: testuser
groups:
- system:bootstrappers
- system:nodes
- eks-console-dashboard-full-access-group
https://aws.amazon.com/ko/premiumsupport/knowledge-center/eks-kubernetes-object-access-error/
역할 전환한 경우 EKS 콘솔권한
역할 전환한 유저의 경우 aws-auth에 mapUsers가 아닌 mapRoles에 추가해야 합니다.
역할 전환 후 권한은 유저가 아닌 역할이기 때문입니다.
(IAM > 역할) 에서 해당 역할을 확인할 수 있습니다.