.env 파일, 팀원이랑 어떻게 공유하지?
개발하다 보면 .env 파일을 .gitignore에 넣어서 관리하게 됩니다. API 키, DB 비밀번호 같은 민감한 정보가 들어있으니까 당연히 레포에 올리면 안 되죠. 근데 문제는, 이 파일 내용을 팀원들이랑은 공유해야 한다는 겁니다. 새로운 개발자가 들어오면 "env 파일 좀 주세요"가 첫마디일 정도로요.
이걸 어떻게 해결하면 좋을지 정리해봤습니다.
1. 가장 흔한 방법, .env.example
제일 많이 쓰는 방법입니다. 실제 값 대신 키 이름과 설명만 담은 .env.example 파일을 레포에 커밋하는 거죠.
# .env.example DATABASE_URL=여기에_DB_주소_입력 API_KEY=여기에_API_키_입력 SECRET_KEY=여기에_시크릿_키_입력
새 팀원이 오면 이 파일을 복사해서 .env를 만들고 실제 값을 채우면 됩니다. 실제 값은 노션이나 사내 위키에 정리해두면 되고요.
2. 비밀 관리 도구들
팀 규모가 커지면 전용 도구를 쓰는 방법도 있습니다.
Doppler는 환경변수 관리에 특화된 클라우드 서비스입니다. 대시보드에서 환경변수를 등록하면 팀원 모두가 동일한 값을 자동으로 받아 쓸 수 있습니다. 개발, 스테이징, 프로덕션 환경별로 따로 관리할 수 있고, 값이 바뀌면 즉시 반영됩니다. 무료 플랜도 있어서 소규모 팀이라면 부담 없이 시작할 수 있습니다.
다만 결국 외부 클라우드에 민감한 데이터를 맡기는 거라서, Doppler라는 회사를 신뢰할 수 있느냐의 문제는 있습니다.
HashiCorp Vault는 오픈소스 비밀 관리 도구입니다. 민감한 정보를 암호화해서 저장하고 접근을 제어합니다. 요청할 때마다 임시 비밀번호를 새로 만들어서 발급하고, 시간이 지나면 자동으로 폐기하는 기능도 있습니다. 보안은 강력한데, 직접 인프라를 운영해야 해서 소규모 팀이 .env 공유 용도로만 쓰기에는 과한 선택입니다. 금융이나 의료처럼 데이터가 외부로 나가면 안 되는 환경에서 주로 씁니다.
1Password도 팀용 플랜이 있습니다. 공유 볼트에 환경변수 값을 넣어두면 팀원끼리 함께 쓸 수 있고, CLI 연동으로 환경변수를 자동으로 불러올 수도 있습니다. 이미 팀에서 1Password를 쓰고 있다면 자연스럽게 확장해서 쓰기 좋습니다.
3. 암호화해서 레포에 포함하기
git-crypt 같은 도구를 쓰면 .env 파일을 암호화된 상태로 레포에 포함시킬 수 있습니다. git pull만 하면 자동으로 복호화되어 바로 쓸 수 있고, 팀원에게 GPG 키만 한 번 등록해주면 이후로는 신경 쓸 게 없습니다.
그냥 private 레포에 올리면 안 되나?
저도 이 생각을 했습니다. 어차피 private 레포에 접근할 수 있는 사람만 보는 건데, 노션에 적어두는 거랑 뭐가 다르냐는 거죠.
근데 안 되는 이유가 있습니다.
가장 큰 문제는 git 히스토리입니다. 한번 커밋된 내용은 파일을 삭제해도 히스토리에 영원히 남습니다. 나중에 API 키가 유출된 걸 알고 .env를 지워도, 과거 커밋을 뒤지면 그대로 보입니다. 히스토리를 정리하려면 git filter-branch나 BFG Repo Cleaner로 전체 히스토리를 다시 써야 하는데, 꽤 번거롭습니다.
레포 권한이 바뀔 수도 있습니다. 지금은 private이지만 나중에 오픈소스로 전환하거나, 팀원이 빠져나가거나, fork가 생기면 민감한 정보가 딸려 나갈 수 있습니다.
노션에 적어둔 건 필요 없으면 삭제하면 그만이고, 문서 접근 권한도 레포와 별도로 관리할 수 있어서 이런 위험이 적습니다.
결론
솔직히 Doppler나 Vault 같은 도구를 도입하는 게 오히려 더 피곤할 수 있습니다. 팀 규모가 5명 이하이고 환경변수가 자주 바뀌지 않는다면, .env.example을 레포에 커밋하고 실제 값은 노션에 정리해두는 게 가장 현실적인 방법입니다.
귀찮더라도 .env를 레포에 직접 커밋하지 않는 습관은 들여두세요. 이 한 단계를 분리해두는 게 나중에 사고를 막아줍니다.

댓글
댓글을 작성하려면 이 필요합니다.