피드로 돌아가기
Dev.toSecurity
원문 읽기
process.env 제거 및 AWS KMS 기반 On-demand 복호화로 Blast Radius 최소화
Encrypt your .env with AWS KMS: Secrets that never touch process.env
AI 요약
Context
기존 dotenv 방식의 모든 Secret이 process.env에 평문 저장되어 RCE 공격 시 전체 자격 증명이 한 번에 유출되는 구조적 결함 존재. CVE-2025-66478 사례와 같이 단 한 번의 환경 변수 덤프로 모든 DB 비밀번호와 API Key가 노출되는 심각한 보안 리스크 확인.
Technical Solution
- AWS KMS Key ID를 포인터로 활용하여 개발자가 실제 Private Key나 Passphrase를 직접 다루지 않는 무상태 구조 설계
- .env 파일 내 모든 Secret을 Ciphertext로 저장하여 Git 커밋이나 파일 유출 시에도 원문 노출을 차단하는 암호화 계층 도입
- 런타임 시 process.env에 값을 할당하지 않고 In-memory Store에 On-demand 방식으로 복호화하여 저장하는 메커니즘 구현
- IAM Role 기반의 접근 제어를 통해 AWS KMS 복호화 권한을 세분화하여 권한 없는 프로세스의 접근을 원천 차단
- Nitro Enclave Attestation 옵션을 통해 실행 중인 코드의 무결성을 증명하고 신뢰할 수 있는 환경에서만 Secret을 해독하는 보안 강화
실천 포인트
- RCE 발생 시 전체 Secret 유출을 막기 위해 process.env 사용을 지양하고 In-memory Store 기반의 접근 방식 검토 - Secret 관리 도구 선택 시 Private Key 전달 과정이 포함되는지 확인하고 KMS와 같은 Hardware Security Module(HSM) 기반 서비스 우선 고려 - Multi-cloud 환경인 경우 SOPS를, AWS 단일 환경에서 파일 기반 워크플로우를 유지하고 싶은 경우 Secret-keystore 패턴 적용