피드로 돌아가기
I Built My Own Config Format for Node.js That Separates Server and Client Secrets
Dev.toDev.to
Security

Role-based Config 분리를 통한 Secret Leakage 원천 차단 및 AES-256-GCM 암호화 구현

I Built My Own Config Format for Node.js That Separates Server and Client Secrets

KANISHQ R PUROHIT2026년 5월 11일8intermediate

Context

단일 .env 파일 사용 시 Server와 Client의 설정값이 혼재되어 보안 경계가 모호한 구조적 한계 존재. Frontend 코드에서 Server 전용 Secret에 접근 가능한 설계적 허점으로 인한 보안 취약점 발생.

Technical Solution

  • ::shared, ::server, ::client 블록 기반의 Role-based Configuration 포맷 설계
  • KQParser를 통한 Role별 접근 제어로 Client 영역에서 Server Secret 접근을 물리적으로 차단하는 구조 구현
  • $ENV: 접두사를 통한 .env 변수 동적 주입 및 Runtime Override 패턴(KQ__) 적용
  • AES-256-GCM 알고리즘 기반의 ENC: 암호화 기능을 내장하여 설정 파일의 안전한 Git Commit 가능성 확보
  • Startup 단계에서의 Schema Validation 및 Auto Type Casting을 통한 Runtime Crash 방지 기제 마련
  • Zero Dependency 설계를 통한 외부 라이브러리 의존성 제거 및 보안 감사 오버헤드 최소화

- 설정 파일 내에 Role-based 영역 분리 적용 여부 검토 - Secret 데이터의 단순 평문 저장 대신 AES-256-GCM 등 암호화 저장 방식 도입 - Application Startup 시점에 설정값의 Type 및 필수 여부를 검증하는 Schema Validation 단계 추가 - 환경별(Dev/Staging/Prod) Layered Override 전략을 통한 설정 관리 일원화

원문 읽기