WEBBOOK CHAPTER

WAR 배포, 밤에 깨지 않게: 5장 환경 설정과 비밀을 WAR 밖으로 꺼낸다

5장 환경 설정과 비밀을 WAR 밖으로 꺼낸다

운영 DB 비밀번호와 인증서 개인키를 WAR에 넣으면 아티팩트 저장소, 개발 PC, 백업에 복제된다. WAR는 환경에 독립적이어야 한다. 바뀌는 값은 환경 변수, JVM system property, JNDI, 외부 설정 디렉터리, 조직 비밀 저장소 중 하나로 주입한다.


불변: 코드, 정적 자원, DB migration 스크립트, build-info
환경별: DB URL, 외부 API 주소, 로그 레벨, feature flag
비밀: DB 비밀번호, API token, TLS private key

Tomcat의 $CATALINA_BASE/bin/setenv.sh를 형상관리 밖에서 관리하거나 systemd EnvironmentFile을 사용할 수 있다. 환경 변수는 같은 계정의 프로세스나 진단 도구에 노출될 수 있으므로 조직의 비밀 주입 수단을 우선한다. 명령행 -Dpassword=...는 process list와 배포 로그에 남을 수 있다.

설정이 들어갔는지 확인하려고 값을 로그에 출력하지 않는다. 연결 성공, secret version, 설정 source 같은 비밀이 아닌 증거만 기록한다. health endpoint도 DB URL과 token을 반환하지 않는다.