ServiceAccount 토큰 검증 키 설정 점검

kube-apiserver가 서비스 계정 토큰을 검증하는 데 사용하는 키와 신뢰 구성을 확인하세요.

설명

--service-account-key-file은 서비스 계정 토큰 서명 검증에 사용되는 PEM 키 파일을 지정합니다. 생략하면 --tls-private-key-file의 키를 사용하므로 이 옵션이 없다는 사실만으로 토큰 검증이 비활성화되는 것은 아닙니다.

서비스 계정 토큰은 클러스터 내부 접근에 자주 사용되므로 검증 체계가 매우 중요합니다. 토큰 서명 방식에 맞는 검증 키를 사용해야 합니다.

잠재적 영향

  • 서명 키와 검증 키가 맞지 않으면 정상 토큰으로 인증하지 못할 수 있습니다.
  • 불필요한 키를 신뢰하면 의도하지 않은 발급자의 토큰을 수락할 위험이 있습니다.

해결 방법

  • 로컬 서명 키를 사용한다면 대응하는 검증 키를 --service-account-key-file에 설정하세요. --service-account-signing-key-file을 사용할 때는 이 검증 키 옵션도 필요합니다.
  • 서명 키와 검증 키 관리 절차를 문서화하고 일관되게 배포하세요.
  • 키 파일 경로와 권한을 점검하세요. 외부 서명 기능을 사용하는 버전과 구성에서는 해당 검증 설정을 따르고, 서로 배타적인 로컬 키 옵션을 함께 지정하지 마세요.

예시

아래는 Kubernetes 1.6 시기의 설정 발췌입니다. 실제 운영에는 지원 중인 버전을 사용하고, 필요한 키 파일 마운트와 나머지 제어면 설정을 별도로 구성하세요.

변경 전

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"]
      args: []

변경 후

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"]
      args: ["--service-account-key-file=/path/to/file.pem"]

설명:

  • 변경 전: 검증 키 파일을 명시하지 않습니다. 실제로 사용하는 대체 키나 외부 서명 구성을 확인해야 합니다.
  • 변경 후: 검증 키 파일을 명시합니다. 경로가 존재하고 실제 서명 키에 대응하는 키를 포함해야 합니다.

참조