정적 토큰 파일 인증 점검이 필요한 kube-apiserver

정적 API 토큰의 수명·폐기·보관을 검토하고 필요한 경우 관리 가능한 인증 방식으로 전환하세요.

설명

--token-auth-file은 파일에 저장된 정적 Bearer 토큰으로 kube-apiserver에 인증하도록 합니다. 이 토큰은 자동 만료되지 않으며 파일의 토큰 목록 변경을 적용하려면 API 서버를 다시 시작해야 합니다.

정적 토큰 파일은 현재도 지원되지만, 자격 증명을 자주 교체하거나 신속히 폐기해야 하는 환경에는 적합하지 않을 수 있습니다. 토큰 보관과 배포를 제한하고 실제 필요한 인증 방식인지 검토하세요.

잠재적 영향

파일이나 배포된 토큰이 유출되면 폐기가 적용될 때까지 해당 사용자·그룹의 권한으로 재사용될 수 있습니다. 재시작을 동반하는 토큰 변경은 잘못 계획하면 정상 클라이언트의 접근도 중단할 수 있습니다.

해결 방법

  • 먼저 정상 사용자와 워크로드에 맞는 대체 인증과 권한을 준비하세요. 사람은 OIDC 등 관리 가능한 인증, 워크로드는 단기 서비스 계정 토큰을 검토하세요.
  • 정적 인증이 불필요해지면 token-auth-file 옵션을 제거하고 각 API 서버에 변경을 적용하세요. 불필요한 토큰 파일과 배포 사본도 안전하게 제거하세요.
  • 필요한 작업은 성공하고 이전 토큰과 미승인 요청은 거부되는지 확인하세요. 계속 사용하는 정적 토큰은 최소 권한, 제한된 파일 접근과 명확한 폐기 절차로 관리하세요.

예시

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"
      args:
        - "--token-auth-file=/path/to/any/file"

지정 파일의 정적 토큰 인증을 사용합니다. 예시 경로를 실제 파일로 바꾸는 것만으로 토큰 수명과 보관 문제가 해결되지는 않습니다.

변경 후

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"

정적 토큰 파일 옵션을 제거합니다. 정상 클라이언트의 대체 인증을 먼저 구성하고 이전 토큰이 거부되는지 검증해야 합니다.

참조