Runtime Secrets

운영 비밀 값 검증

NestJS는 ConfigModule로 값을 읽지만, 실제 비밀번호와 토큰은 저장소가 아니라 CI/CD, Secret Manager, 런타임 환경에서 공급해야 합니다.

01 저장소에는 키 이름만

.env.example에는 변수명과 예시 형식만 둡니다.

02 배포 도구가 값 주입

GitHub Actions Secrets나 클라우드 Secret Manager를 사용합니다.

03 ConfigModule에서 검증

필수 비밀 값이 비어 있으면 애플리케이션 시작을 멈춥니다.

04 서비스는 마스킹 사용

로그에는 로드 여부와 키 이름만 남기고 실제 값은 숨깁니다.

허용 경로

  • CodeConfigService.get()으로 키만 읽습니다.
  • Env운영 값은 배포 환경에서 런타임에 주입합니다.
  • IAMSecret Manager 접근 권한은 실행 주체에만 부여합니다.
  • Rotate유출 가능성이 생기면 키를 즉시 교체할 수 있게 둡니다.

금지 경로

  • Commit실제 .env 파일을 Git에 남기지 않습니다.
  • LogJWT secret, DB password를 콘솔에 출력하지 않습니다.
  • Default운영 비밀 값에 안전하지 않은 기본값을 두지 않습니다.
  • Share여러 서비스가 하나의 만능 키를 공유하지 않습니다.
A

실제 값 위치

개발 PC, CI/CD, Secret Store 중 한 곳에만 보관합니다.

B

접근 제어

배포 계정과 실행 계정만 읽을 수 있게 권한을 좁힙니다.

C

검증 실패

누락된 비밀 정보는 조용히 넘어가지 말고 부팅 실패로 드러냅니다.

기준은 단순합니다. 이름은 코드에, 실제 값은 런타임에, 검증은 시작 시점에 둡니다.