Justin-book

환경변수 및 시크릿 관리 (Environment Config & Secrets)

2025-10-27

요약

  • 시스템 엔지니어(SE)는 모든 환경 구성을 재현 가능하고 안전하게 관리해야 한다.
  • 본 문서는 환경변수 구조, Secret 관리 정책, Vault 사용 예시를 포함한다.
  • 목표: 환경별 일관성 / 민감정보 보호 / 배포 자동화와 연계
항목내용
환경 구조local/dev/stage/prod 통일
Secret 관리Vault/K8s Secret 병행
자동화GitOps 기반 관리
보안Secret 노출 방지 + 주기적 로테이션

1. 환경 구조 원칙

환경목적예시 도메인
local개발용localhost:3000
dev내부 테스트dev.api.company.com
stage사전 검증stage.api.company.com
prod운영api.company.com

모든 환경은 .env.{환경명} 파일로 구분하며, 동일 키를 사용한다.


2. 환경변수 관리 정책

항목원칙
공통 변수ENV, PORT, LOG_LEVEL, DB_URL
비밀 값.env 대신 Vault/Secret Manager 사용
버전 관리.env.example만 Git에 포함
자동 로드dotenv, configmap 활용
apiVersion: v1
kind: ConfigMap
metadata:
  name: backend-config
data:
  ENV: "prod"
  LOG_LEVEL: "info"

3. Secret 관리 방식

방법설명예시
Kubernetes SecretBase64 인코딩 값 저장kubectl create secret
HashiCorp Vault동적 시크릿 발급, 만료 관리DB credentials rotation
AWS Secret ManagerCloud 기반 비밀 관리Multi-region backup

Vault Token은 24h 단위 갱신, 로그에 노출 금지.


4. 환경 프로비저닝 자동화

  • 모든 .env 및 Secret은 Ansible / Terraform / ArgoCD Values 로 자동 배포
  • 수동 편집 금지 (kubectl edit 불허)
  • 변경 시 Git MR 통한 승인 필수