핵심 요약
비밀키는 코드가 아니라 환경변수로 분리하고, .env는 절대 깃에 올리지 않는다(.gitignore 등록 + .env.example만 커밋). 한 번이라도 푸시됐다면 키는 이미 유출된 것이니 즉시 로테이션(재발급)해야 한다. 프론트에 노출되는 변수와 서버 전용을 명확히 구분한다.
1. 원칙
.gitignore에.env*등록,.env.example로 키 목록만 공유- 운영 비밀은 시크릿 매니저(Vault, AWS Secrets, 플랫폼 env)로
- 프론트 노출 변수(NEXT_PUBLIC_*)에 비밀키 절대 금지
2. 유출됐을 때
| 단계 | 조치 |
|---|---|
| 1 | 해당 키 즉시 재발급(로테이션) |
| 2 | git 히스토리에서 제거(filter-repo) |
| 3 | 접근 로그로 오남용 확인 |
3. 함정
- 히스토리에서 지워도 이미 복제·캐시됐을 수 있다 — 삭제보다 재발급이 핵심
- NEXT_PUBLIC_·VITE_ 접두사는 번들에 그대로 들어간다(공개됨)
- CI 로그에 env를 echo하지 말 것
자주 묻는 질문
실수로 .env를 커밋했는데 지우면 되나요?
파일을 지워도 히스토리·다른 클론·캐시에 남습니다. 가장 확실한 건 노출된 키를 즉시 재발급하는 것입니다. 히스토리 정리는 그다음입니다.
NEXT_PUBLIC_ 변수에 API 키를 넣어도 되나요?
안 됩니다. 그 접두사는 브라우저 번들에 포함돼 누구나 봅니다. 비밀키는 서버 전용 변수로만 다루세요.

댓글 0