Encryption Provider Config 미설정

API 서버의 저장 암호화 설정과 키를 보호하고 기존 데이터에도 적용됐는지 확인하세요.

설명

--encryption-provider-config가 설정되지 않으면 kube-apiserver가 etcd에 저장하는 민감한 리소스에 대해 저장 시 암호화를 적용하지 못할 수 있습니다. 특히 Secret 같은 데이터는 평문 상태로 남을 위험이 있습니다.

이 API 수준 암호화는 etcd 서버의 디스크 암호화와 별개입니다. 설정 파일을 연결하는 것뿐 아니라 대상 리소스, 첫 번째 암호화 provider와 키 관리도 올바르게 구성해야 합니다. API를 통해 Secret을 읽을 수 있는 권한은 별도로 제한하세요.

잠재적 영향

  • Secret 같은 민감한 리소스가 저장 시 암호화되지 않을 수 있습니다.
  • etcd 데이터 유출 시 민감 정보 노출 위험이 커집니다.
  • 저장 데이터 보호 기준을 충족하지 못할 수 있습니다.

해결 방법

  • kube-apiserver에 --encryption-provider-config 경로를 명시하세요.
  • 설정 파일을 안전하게 배포하고 모든 API 서버의 암호화·복호화 구성을 맞추세요. 키가 든 파일을 일반 저장소에 커밋하지 말고 접근 권한과 복구용 키 보관을 관리하세요.
  • 실제 저장 데이터를 확인하고 기존 리소스도 안전한 절차로 다시 기록해 암호화를 적용하세요. 새 설정만으로 기존 데이터가 자동 변환되지는 않습니다.

예시

API 서버 인자 발췌입니다. 이미지는 실제 클러스터 버전에 맞추고 예시 경로에 유효한 EncryptionConfiguration을 읽기 전용으로 마운트하세요. 키와 볼륨 등 나머지 설정은 생략했습니다.

변경 전

yaml
apiVersion: v1
kind: Pod
metadata:
  name: command-demo
spec:
  containers:
    - name: command-demo-container
      image: registry.k8s.io/kube-apiserver:v1.34.0
      command: ["kube-apiserver"]
      args: []

변경 후

yaml
apiVersion: v1
kind: Pod
metadata:
  name: command-demo
spec:
  containers:
    - name: command-demo-container
      image: registry.k8s.io/kube-apiserver:v1.34.0
      command: ["kube-apiserver"]
      args: ["--encryption-provider-config=/path/to/config/file.yaml"]

설명:

  • 변경 전: 암호화 설정 파일이 없어 저장 데이터 암호화가 적용되지 않을 수 있습니다.
  • 변경 후: encryption provider 설정 파일을 지정합니다. 파일 안의 대상 리소스와 provider 순서가 실제 암호화 여부를 결정합니다.

참조