소개
이번 챌린지에서는 쿠버네티스 대시보드용 읽기 전용 서비스 계정을 생성하여 클러스터의 보안을 강화하고, 역할 기반 액세스 제어 (RBAC) 에 대한 이해도를 증명하게 됩니다. 새로운 서비스 계정과 읽기 전용 권한을 가진 클러스터 역할을 생성한 뒤, 이 둘을 서로 연결하는 작업을 수행합니다. 마지막으로 대시보드 로그인에 사용할 서비스 계정 토큰을 생성합니다.
쿠버네티스 대시보드 접근 보안 설정
주니어 데브옵스 엔지니어로서 쿠버네티스 대시보드용 읽기 전용 서비스 계정을 구성하여 클러스터 보안을 개선하고 RBAC 설정 능력을 보여주세요.
과제
- 제공된 YAML 파일을 사용하여
kubernetes-dashboard네임스페이스에read-only-user라는 이름의 새로운 서비스 계정을 생성합니다. - 기본 네임스페이스에 대해 읽기 전용 권한을 가진
ClusterRole을 생성합니다. 이때pods,services,nodes,namespaces,deployments리소스에 대해get,list,watch작업이 가능해야 합니다. - 생성한
ClusterRole을read-only-user서비스 계정에 바인딩합니다. - 대시보드 로그인 시 사용할 서비스 계정 토큰을 생성합니다.
요구 사항
~/project디렉토리에서 작업하세요.- 서비스 계정은
kubernetes-dashboard네임스페이스를 사용해야 합니다. - YAML 파일 이름은
read-only-dashboard-access.yaml로 지정하세요. - 서비스 계정은 오직 읽기 권한만 가져야 합니다.
- 접근 범위를
default네임스페이스로 제한하세요.
제공할 YAML 파일 내용:
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: read-only-user
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: read-only-dashboard-role
rules:
- apiGroups: [""]
resources: ["pods", "services", "nodes", "namespaces", "deployments"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: read-only-dashboard-access
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: read-only-dashboard-role
subjects:
- kind: ServiceAccount
name: read-only-user
namespace: kubernetes-dashboard
예시
서비스 계정 토큰 출력 예시:
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9...
로그인 후 대시보드 화면 예시:
- 조회 가능: 네임스페이스 리소스, 디플로이먼트, 포드
- 조회 불가 (비활성화): 생성, 수정, 삭제 작업
힌트
- Minikube 를 시작하고 쿠버네티스 대시보드 공식 저장소의
recommended.yaml파일을 적용하여 대시보드를 배포하세요. kubectl create및kubectl apply명령어를 사용하세요.- ClusterRole 및 ClusterRoleBinding 설정 상태를 확인하세요.
- 토큰을 생성하려면
kubectl -n kubernetes-dashboard create token read-only-user명령어를 사용하세요.
요약
이번 챌린지에서는 쿠버네티스 대시보드용 읽기 전용 서비스 계정을 생성하여 클러스터 보안을 강화했습니다. 새로운 서비스 계정과 읽기 전용 권한을 가진 ClusterRole 을 생성하고, 이를 바인딩하는 과정을 실습했습니다. 마지막으로 생성된 토큰을 통해 대시보드에 안전하게 로그인하는 방법을 익혔습니다.


