NestJS · Configuration Security

환경 변수와 비밀값을 시작 단계에서 검증하기

환경 변수 관리는 process.env를 읽는 편의 코드가 아니라, 누락·타입 오류·비밀 노출을 애플리케이션 시작 전에 차단하는 운영 안전장치다.

01

설정 분류

공개 설정, 민감 설정, feature flag, 외부 endpoint를 위험도별로 나눈다.

02

초기 검증

ConfigModule 로딩 시 schema로 누락과 잘못된 형식을 실패시킨다.

03

주입 제한

service는 process.env를 직접 읽지 않고 typed config provider를 통해 받는다.

04

운영 보호

Secret Manager, CI secret, 로그 마스킹, rotation 계획을 연결한다.

DATABASE_URL
민감 연결 정보 계정·비밀번호·host가 포함될 수 있음
마스킹 대상
JWT_SECRET
서명 비밀 짧거나 재사용되면 토큰 위조 위험
길이와 rotation 확인
PORT
공개 실행 설정 환경마다 다르지만 비밀은 아님
기본값 허용 가능
FEATURE_FLAG
동작 분기 출시와 롤백을 제어
타입과 기본값 필요

시작 실패 · 직접 접근 · 노출 점검

시작 실패 필수 비밀값이 없으면 요청을 받기 전에 종료된다.
직접 접근 도메인 서비스가 process.env를 직접 읽지 않는다.
노출 설정 로그에서 token, password, secret이 마스킹된다.
교체 비밀값 변경 후 배포와 재시작 경로가 있다.