설명
--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 순서가 실제 암호화 여부를 결정합니다.