K8s Dashboard 접근 권한 가이드
1. 대시보드 설치 후 권한 오류가 생기는 이유
Kubernetes Web UI 대시보드(Dashboard)를 설치한 직후, 토큰(Token)이나 Kubeconfig 기반 인증으로 로그인했을 때 리소스(Pod, Deployment 등) 목록이 아예 보이지 않거나 “권한 부족” 알림이 뜨는 현상이 있습니다.
이것은 로그인에 사용한 ServiceAccount에 클러스터 리소스를 조회할 수 있는 RBAC(Role-Based Access Control) 권한 바인딩(ClusterRoleBinding)이 적절히 부여되지 않았기 때문입니다. K8s 1.6 이후 RBAC가 기본 활성화되면서, 대시보드는 기본적으로 최소 권한(Principle of Least Privilege) 원칙으로 설치됩니다.
2. RBAC 핵심 개념
K8s의 RBAC는 아래의 3가지 오브젝트 조합으로 권한을 관리합니다.
| 오브젝트 | 역할 |
|---|---|
Role / ClusterRole | ”어떤 리소스에 어떤 동작(get, list, watch 등)을 허용할 것인가”를 정의 |
RoleBinding / ClusterRoleBinding | 위에서 만든 Role을 특정 사용자/그룹/ServiceAccount에 연결(바인딩) |
ServiceAccount | 파드나 대시보드 같은 K8s 내부 애플리케이션의 신원(Identity) |
대시보드의 권한 문제는 대부분 ServiceAccount에 알맞은 ClusterRole이 ClusterRoleBinding으로 묶여 있지 않아서 발생합니다.
3. Admin 권한 토큰 발급 및 연결 (실전 예시)
⚠️ 주의: 아래의
cluster-admin바인딩 방식은 대시보드에 모든 권한을 부여하는 것으로, 개발/테스트 환경에서만 사용하고 프로덕션 환경에서는 최소 권한 원칙을 준수하여 필요한 리소스에만 제한적으로 권한을 부여해야 합니다.
① 대시보드용 Admin ServiceAccount 생성
# dashboard-admin-user.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin # K8s 내장 최고 관리자 권한 Role
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard$ kubectl apply -f dashboard-admin-user.yaml② 로그인 토큰 발급 및 확인
K8s 1.24 이후부터는 ServiceAccount 생성 시 시크릿(토큰) 이 자동 생성되지 않으므로, kubectl create token 명령어를 사용합니다.
# K8s 1.24+: 임시 토큰 발급 (기본 1시간 유효)
$ kubectl -n kubernetes-dashboard create token admin-user
# K8s 1.23 이하: 자동 생성된 Secret에서 토큰 추출
$ kubectl -n kubernetes-dashboard get secret \
$(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") \
-o go-template="{{.data.token | base64decode}}"위에서 출력된 토큰 문자열을 복사하여 대시보드 로그인 화면의 “토큰” 항목에 붙여넣으면 됩니다.
4. 공식 문서 참조
대시보드와 관련된 기본 권한(Default Privileges) 구조 및 트러블슈팅에 대한 가장 확실한 레퍼런스는 공식 GitHub 문서입니다.
RBAC 권한 모델은 K8s 보안의 핵심 개념으로, 대시보드 설정을 통해 이 원리를 먼저 이해해두면 이후 K8s를 운영하면서 만나는 대부분의 권한 관련 이슈를 스스로 해결할 수 있게 됩니다.