[CKS] 19. Securing Kubernetes Dashboard

쿠버네티스 대시보드 인증 방법을 안내합니다. 토큰 및 Kubeconfig으로 RBAC 기반의 안전한 클러스터 접근 및 관리가 가능합니다.

[CKS] 19. Securing Kubernetes Dashboard
Photo by Stephen Phillips - Hostreviews.co.uk / Unsplash

개요

kubernetes dashboard에서 사용 가능한 인증 메커니즘을 설명합니다.

토큰이나 kubeconfig을 활용하여 로그인할 수 있습니다.

토큰을 사용하려면 전용 사용자를 생성하고 역할 기반 접근 제어(RBAC)를 통해 필요한 권한을 부여해야 합니다.

Notion Image

토큰 기반 인증

토큰 기반 인증을 설정하려면 아래 통합 구성을 사용하여 서비스 계정과 해당 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