설명
--basic-auth-file은 kube-apiserver가 로컬 파일의 사용자 이름과 비밀번호로 인증하게 하는 레거시 옵션입니다. 장기간 유지되는 비밀번호와 파일 접근 권한을 관리해야 하며, 유출된 자격 증명이 API 접근에 악용될 수 있습니다. 이 인증 방식은 Kubernetes 1.19에서 제거되었습니다.
잠재적 영향
- 비밀번호 파일이나 클라이언트 자격 증명이 유출되면 해당 사용자 권한으로 API에 접근할 수 있습니다.
- 오래된 인증 구성은 자격 증명의 폐기·교체와 지원되는 Kubernetes 버전으로의 이전을 어렵게 만들 수 있습니다.
해결 방법
- OIDC 등 지원되는 인증 방식과 필요한 사용자 권한을 먼저 구성하고 실제 로그인을 시험하세요.
- 기존 클라이언트를 전환한 뒤
--basic-auth-file을 제거하고, 더 이상 필요하지 않은 비밀번호와 파일을 안전하게 폐기하세요. - 지원되는 Kubernetes 버전으로 이전하고 TLS, 최소 권한 인가와 감사 기록도 확인하세요.
예시
Kubernetes 1.6의 과거 실행 옵션을 설명하는 발췌이며 현재 배포를 위한 예시는 아닙니다. 인증서, 대체 인증 및 나머지 제어 평면 구성은 별도로 필요합니다.
변경 전
yaml
apiVersion: v1
kind: Pod
metadata:
name: api-server
spec:
containers:
- name: kube-apiserver
image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0
command:
- "kube-apiserver"
- "--basic-auth-file=/path/to/auth.csv"
API 서버가 지정된 정적 비밀번호 파일을 사용합니다. 파일과 자격 증명이 노출되지 않도록 보호해야 합니다.
변경 후
yaml
apiVersion: v1
kind: Pod
metadata:
name: api-server
spec:
containers:
- name: kube-apiserver
image: gcr.io/google_containers/kube-apiserver-amd64:v1.6.0
command:
- "kube-apiserver"
기본 인증 파일 사용을 중단합니다. 플래그 제거만으로 대체 인증이 구성되는 것은 아니므로 기존 클라이언트의 전환을 먼저 완료하세요.