Anonymous Auth 비활성화 누락

불필요한 익명 인증과 인가 권한을 제한해 API 및 노드 접근을 보호하세요.

설명

--anonymous-auth=false가 설정되지 않으면 인증 정보가 없는 요청도 익명 사용자로 처리될 수 있습니다. 권한 설정이 충분히 엄격하지 않다면 이런 요청이 예기치 않게 허용될 가능성이 있습니다.

익명 인증은 특별한 이유가 없다면 비활성화하는 편이 안전합니다. 상태 확인처럼 익명 요청이 필요한 경로가 있으면 해당 경로와 권한만 제한적으로 허용하세요. 익명 사용자로 처리되는 것과 요청이 인가되는 것은 별개입니다.

잠재적 영향

  • 인증되지 않은 사용자가 API나 노드 구성 정보에 접근을 시도할 수 있습니다.
  • 다른 설정 실수와 결합되면 정보 노출이나 권한 오용으로 이어질 수 있습니다.
  • 제어면 접근 정책이 느슨해져 전체 보안 기준이 낮아질 수 있습니다.

해결 방법

  • 플래그로 구성하는 kube-apiserver에는 --anonymous-auth=false를 명시하세요. kubelet은 authentication.anonymous.enabled: false 등 실제 사용하는 설정 방식에 맞춰 비활성화하세요.
  • 정적 파드, 매니페스트, 시작 스크립트에서 관련 인자를 함께 점검하세요.
  • 익명 요청이 필요한 예외 환경이 아니라면 기본적으로 비활성화 상태를 유지하세요.

예시

기존 API 서버 인자 비교 예제입니다. 오래된 이미지 버전은 운영에 사용하지 말고 실제 클러스터 버전에 맞추세요. 인증 정보, 네트워크와 인가 설정은 생략했습니다.

변경 전

yaml
apiVersion: v1
kind: Pod
metadata:
  name: command-demo
spec:
  containers:
    - name: command-demo-container
      image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0
      command: ["kube-apiserver", "--anonymous-auth=true"]

변경 후

yaml
apiVersion: v1
kind: Pod
metadata:
  name: command-demo
spec:
  containers:
    - name: command-demo-container
      image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0
      command: ["kube-apiserver", "--anonymous-auth=false"]

설명:

  • 변경 전: 익명 인증을 허용해 인증되지 않은 요청이 처리될 가능성을 남깁니다.
  • 변경 후: 익명 인증을 끄고 인증된 요청만 처리하도록 제한합니다.

참조