설명
인프라 코드에 비밀번호, API 키, 토큰 또는 개인 키를 직접 적으면 저장소나 배포 산출물에 접근할 수 있는 사람에게 비밀값이 노출될 수 있습니다. 파일에서 지워도 커밋 이력과 복사본에는 남을 수 있습니다.
잠재적 영향
유출된 자격 증명으로 해당 계정의 권한 범위에서 서비스나 데이터에 접근할 수 있습니다.
해결 방법
비밀값은 비밀 관리 서비스에 저장하고 배포 시 참조하거나 주입하세요. 이미 노출된 자격 증명은 폐기하고 교체한 뒤 코드와 이력의 복사본을 정리하세요. Kubernetes Secret에도 접근 제한과 저장 암호화가 필요합니다.
예시
변경 후 예시는 별도로 생성한 secret-basic-auth의 값을 환경 변수로 전달하는 방법만 보여 줍니다. 애플리케이션에서 이 값을 사용하는 설정은 생략했습니다.
변경 전
yaml
apiVersion: v1
kind: Secret
metadata:
name: secret-basic-auth
type: kubernetes.io/basic-auth
stringData:
password: "root"
변경 후
yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
env:
- name: PASSWORD
valueFrom:
secretKeyRef:
name: secret-basic-auth
key: password