인프라 코드에 포함된 비밀번호 및 비밀정보

코드에 포함된 비밀정보는 저장소 이력과 배포 산출물을 통해 유출될 수 있습니다.

설명

인프라 코드에 비밀번호, 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

참조