1. 개요: 왜 API 서버의 익명 접근을 차단해야 하는가?
쿠버네티스 클러스터에서 API 서버는 모든 작업의 중심입니다. 그러나 기본 설정은 보안 취약점을 내포할 수 있습니다. 특히, 인증되지 않은 사용자의 접근을 허용하는 익명 인증(--anonymous-auth)은 중요한 보안 위협입니다. 이 가이드는 kube-apiserver와 kubelet 설정을 수정하여 익명 접근을 차단하고, 클러스터의 전반적인 보안 수준을 높이는 방법을 다룹니다.
2. 익명 접근 차단 및 설정 방법
익명 접근을 막기 위해 두 가지 핵심 요소를 변경해야 합니다.
2.1. kube-apiserver 설정 변경
kube-apiserver의 기본 설정을 변경하여 익명 인증을 비활성화하고, 권한 부여 모드를 명확히 지정합니다.
- 적용 파일: /etc/kubernetes/manifests/kube-apiserver.yaml
- 추가/수정 옵션:
- --anonymous-auth=false: 익명 사용자의 인증을 완전히 비활성화합니다. 이 옵션이 없으면 인증되지 않은 모든 요청이 system:anonymous 사용자로 처리됩니다.
- --authorization-mode=Node,RBAC: API 서버의 권한 부여 모드를 명확히 Node와 RBAC로 지정합니다. 이를 통해 노드와 사용자/서비스 계정에 대한 접근 제어를 강제합니다.
- --enable-admission-plugins=NodeRestriction: 노드가 자신이 관리하는 파드에 대한 정보만 수정하도록 제한하는 플러그인을 활성화합니다. 이는 클러스터 내부의 권한 에스컬레이션 공격을 방어하는 데 필수적입니다.
2.2. kubelet 설정 변경
kubelet은 API 서버와 통신하는 에이전트이므로, kube-apiserver 설정에 맞춰 kubelet의 인증/권한 부여 설정을 수정해야 합니다.
- 적용 파일: /var/lib/kubelet/config.yaml
- 수정 옵션:
- authentication.anonymous.enabled: false: kubelet의 익명 인증을 비활성화합니다.
- authentication.webhook.enabled: true: API 서버가 kubelet의 인증 요청을 처리하도록 활성화합니다.
- authorization.mode: Webhook: kubelet의 권한 부여 요청을 API 서버의 Webhook으로 처리하도록 지정합니다.
authentication: anonymous: enabled: false # 익명 인증 비활성화 webhook: cacheTTL: 0s enabled: true # Webhook 기반 인증 활성화 x509: clientCAFile: /etc/kubernetes/pki/ca.crt authorization: mode: Webhook # Webhook 기반 권한 부여 활성화 webhook: cacheAuthorizedTTL: 0s cacheUnauthorizedTTL: 0s
3. 익명 사용자 관련 RoleBinding 제거
kube-apiserver 설정을 변경했더라도, 기존에 존재하던 익명 사용자에 대한 RoleBinding을 명시적으로 제거해야만 완벽한 보안을 달성할 수 있습니다.
- 관련 RoleBinding: system:anonymous
- 제거 명령어:--kubeconfig 플래그는 관리자 권한으로 명령어를 실행하기 위해 필요합니다.
-
Bash
kubectl --kubeconfig /etc/kubernetes/admin.conf delete clusterrolebinding system:anonymous
4. 최종 확인
위의 모든 단계를 완료한 후, kube-apiserver와 kubelet이 재시작되었는지 확인하고, 인증 정보 없이 API 서버에 접근하여 접근이 차단되는지 검증해야 합니다. 이로써 클러스터의 API 서버는 인증된 사용자에게만 접근을 허용하게 되어 보안이 강화됩니다.
'k8s > CKS' 카테고리의 다른 글
[CKS] BOM 툴 trivy -2 (0) | 2025.09.10 |
---|---|
[CKS] k8s TLS 설정 (0) | 2025.09.09 |
[CKS] BOM 툴 trivy -1 (0) | 2025.09.09 |
[CKS] Pod Security Standards - restricted (0) | 2025.09.08 |
[CKS] cilium (0) | 2025.09.08 |