본문 바로가기
Backend2026년 6월 13일2분 읽기

.env 환경변수 관리와 흔한 유출 사고 막기

YS
김영삼
조회 919
.env 환경변수 관리와 흔한 유출 사고 막기

핵심 요약

비밀키는 코드가 아니라 환경변수로 분리하고, .env는 절대 깃에 올리지 않는다(.gitignore 등록 + .env.example만 커밋). 한 번이라도 푸시됐다면 키는 이미 유출된 것이니 즉시 로테이션(재발급)해야 한다. 프론트에 노출되는 변수와 서버 전용을 명확히 구분한다.

1. 원칙

  • .gitignore.env* 등록, .env.example로 키 목록만 공유
  • 운영 비밀은 시크릿 매니저(Vault, AWS Secrets, 플랫폼 env)로
  • 프론트 노출 변수(NEXT_PUBLIC_*)에 비밀키 절대 금지

2. 유출됐을 때

단계조치
1해당 키 즉시 재발급(로테이션)
2git 히스토리에서 제거(filter-repo)
3접근 로그로 오남용 확인

3. 함정

  • 히스토리에서 지워도 이미 복제·캐시됐을 수 있다 — 삭제보다 재발급이 핵심
  • NEXT_PUBLIC_·VITE_ 접두사는 번들에 그대로 들어간다(공개됨)
  • CI 로그에 env를 echo하지 말 것

자주 묻는 질문

실수로 .env를 커밋했는데 지우면 되나요?

파일을 지워도 히스토리·다른 클론·캐시에 남습니다. 가장 확실한 건 노출된 키를 즉시 재발급하는 것입니다. 히스토리 정리는 그다음입니다.

NEXT_PUBLIC_ 변수에 API 키를 넣어도 되나요?

안 됩니다. 그 접두사는 브라우저 번들에 포함돼 누구나 봅니다. 비밀키는 서버 전용 변수로만 다루세요.

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록