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

+ Recent posts