32장. Secret, TLS, Proxy 경계를 배포 설계에 넣는다
OIDC client secret, DB password, signing key를 application.yaml, 이미지 layer, command history, CI log에 넣지 않는다. 환경별 secret manager에서 workload identity로 읽고, 접근 주체와 rotation을 제한한다. 예제에는 ${OIDC_CLIENT_SECRET} 같은 placeholder만 둔다.
env:
- name: OIDC_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: contracthub-oidc
key: client-secret
Kubernetes Secret은 기본적으로 비밀 금고와 동의어가 아니다. etcd encryption, RBAC, namespace, external secret operator의 권한을 함께 본다. pod가 읽을 필요 없는 secret을 mount하지 않는다.
TLS 종료 지점, 내부 재암호화, client IP와 scheme 전달, 신뢰 proxy 목록을 다이어그램에 표시한다. OAuth redirect URI가 http로 생성되거나 secure cookie가 내려가지 않으면 forwarded header 설정과 ingress header 정제를 함께 확인한다. 애플리케이션만 forward-headers-strategy를 바꾸는 것으로 끝내지 않는다.