[CKS] 19. Securing Kubernetes Dashboard
쿠버네티스 대시보드 인증 방법을 안내합니다. 토큰 및 Kubeconfig으로 RBAC 기반의 안전한 클러스터 접근 및 관리가 가능합니다.
개요
kubernetes dashboard에서 사용 가능한 인증 메커니즘을 설명합니다.
토큰이나 kubeconfig을 활용하여 로그인할 수 있습니다.
토큰을 사용하려면 전용 사용자를 생성하고 역할 기반 접근 제어(RBAC)를 통해 필요한 권한을 부여해야 합니다.

토큰 기반 인증
토큰 기반 인증을 설정하려면 아래 통합 구성을 사용하여 서비스 계정과 해당 ClusterRoleBinding을 생성하세요. 이 구성은 대시보드 액세스에 필요한 권한을 부여합니다.
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin-user
namespace: kubernetes-dashboard
EOF
cat <<EOF | kubectl apply -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: admin-user
namespace: kubernetes-dashboard
EOF
사용자 및 역할 바인딩을 생성한 후에는 토큰을 보관하는 시크릿을 가져와야 합니다. 토큰은 대시보드 인터페이스 인증에 사용되며 kubernetes dashboard 설치 시 ServiceAccount와 함께 자동으로 생성됩니다.
토큰 비밀번호의 세부 정보를 보려면 다음 명령을 실행하세요.
kubectl describe secret kubernetes-dashboard-<id>
Name: kubernetes-dashboard-token-fc2fq
Namespace: default
Labels: <none>
Annotations: kubernetes.io/service-account.name: kubernetes-dashboard
kubernetes.io/service-account.uid: 635c208a-6752-43f7-9ca4-e43665df1353
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1066 bytes
namespace: 7 bytes
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IjxSgwiMAtMXdmbHkydEdOdXVhcjM2F..........
Kubeconfig을 통한 인증
사용자 생성, 역할 및 역할 바인딩 구성, 그리고 쿠버네티스 대시보드에서 두 가지 인증 방법을 효과적으로 사용하는 방법에 대해 Hands-on을 통해 자세히 확인할 수 있습니다.
Hands-on
- Proxy를 활용하여 다음과 같이 접근합니다.
https://8001-port-zmcclp3gnlmnp34o.labs.kodekloud.com/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#/login
- Service Account
- Cluster Role
- Cluster Role binding
각 리소스를 생성하고 연결하는데 주의합니다.
Reference
- https://redlock.io/blog/cryptojacking-tesla
- https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
- https://github.com/kubernetes/dashboard
- https://www.youtube.com/watch?v=od8TnIvuADg
- https://blog.heptio.com/on-securing-the-kubernetes-dashboard-16b09b1b7aca
- https://github.com/kubernetes/dashboard/blob/master/docs/user/access-control/creating-sample-user.md