Developer Security
6분

.env 파일을 팀원에게 안전하게 공유하는 방법

환경 변수와 .env 파일에 담긴 시크릿을 팀원에게 안전하게 전달하는 실전 가이드. Slack DM으로 보내는 습관이 왜 위험한지, 어떤 대안이 있는지 정리했습니다.

LOCK.PUB
.env 파일을 팀원에게 안전하게 공유하는 방법

.env 파일을 팀원에게 안전하게 공유하는 방법

"그거 카톡으로 보내줄게"

새로운 개발자가 팀에 합류했습니다. 로컬 환경 세팅을 하다가 묻습니다.

".env 파일 좀 보내줄 수 있어요?"

그러면 보통 이런 일이 벌어집니다. 선임 개발자가 카카오톡이나 Slack DM으로 데이터베이스 비밀번호, API 키, 서드파티 시크릿이 줄줄이 적힌 텍스트를 통째로 보냅니다. 그 메시지는 대화 기록에 영원히 남습니다.

이건 생각보다 흔한 일이고, 생각보다 훨씬 위험합니다.

.env 파일을 함부로 공유하면 안 되는 이유

.env 파일에는 외부에 노출되면 치명적인 정보가 가득합니다.

  • 데이터베이스 접속 정보 — 호스트, 포트, 사용자명, 비밀번호
  • API 키 — Stripe, AWS, Firebase 등 과금이 발생하는 서비스 키
  • 서드파티 시크릿 — OAuth 클라이언트 시크릿, 웹훅 서명 키
  • 내부 서비스 토큰 — 마이크로서비스 간 인증 토큰

카카오톡이나 Slack으로 보낸 메시지는 서버에 저장됩니다. 워크스페이스에 접근 권한이 있는 누구든 검색으로 찾을 수 있고, 퇴사한 직원의 디바이스에도 남아 있을 수 있습니다.

흔하지만 위험한 공유 방법들

방법 위험 요소
Slack / 카카오톡 DM 서비스 서버에 수년씩 저장되는 경우가 많음(Slack은 관리자가 내보내기·eDiscovery로 열람 가능), 기기 분실 시 노출
이메일 첨부 메일 서버에 저장, 전달·포워딩 가능
Google Docs 공유 링크 유출 시 누구나 접근, 버전 기록에 잔존
Git 커밋 (삭제해도) git log에 히스토리 잔존, force push해도 복구 가능
Notion / Confluence 기본적으로 워크스페이스 전체에 공개되는 경우가 많고, 제한하지 않으면 만료되지 않음

특히 Git에 실수로 커밋한 경우가 가장 치명적입니다. GitHub에 push된 시크릿은 봇이 수 초 내에 스캔합니다.

안전하게 .env 파일을 공유하는 방법

1. 시크릿 매니저 사용

Doppler, HashiCorp Vault, AWS Secrets Manager 같은 전문 도구를 도입하면 환경 변수를 중앙에서 관리하고, 팀원별 접근 권한을 세밀하게 제어할 수 있습니다. 팀 규모가 크다면 가장 이상적인 방법입니다.

2. 팀 비밀번호 관리 도구

1Password Teams나 Bitwarden Organization의 공유 볼트에 .env 내용을 저장해두면, 권한이 있는 팀원만 열람할 수 있고 접근 로그도 남습니다.

3. 비밀번호가 걸린 일회성 메모

시크릿 매니저를 도입하기 전이거나, 빠르게 한 번만 공유해야 하는 상황이라면 LOCK.PUB의 비밀 메모 기능이 유용합니다. .env 내용을 메모에 붙여넣고 비밀번호를 건 뒤, 한 번만 열리게 하거나 만료 시간을 정하고(Pro), 링크는 Slack으로, 비밀번호는 카카오톡으로 나눠서 보내면 됩니다. 그 뒤로는 링크가 더 이상 열리지 않으니 Slack에는 시크릿 대신 열리지 않는 링크만 남습니다. Pro가 아니라면 일회용 비밀 메모 도구에서 첫 일회용 메모를 무료로 보낼 수 있습니다.

4. GPG 암호화 파일

보안에 민감한 팀이라면 .env 파일을 GPG로 암호화한 뒤 공유하는 방법도 있습니다. 다만 팀원 모두가 GPG 키 관리에 익숙해야 한다는 진입 장벽이 있습니다.

.env 관리 베스트 프랙티스

  1. .gitignore에 반드시 추가 — 프로젝트 생성 직후 가장 먼저 할 일입니다.
  2. .env.example 파일 유지 — 실제 값 대신 플레이스홀더를 넣어 구조만 공유합니다.
  3. 환경별 자격 증명 분리 — 개발, 스테이징, 프로덕션 각각 다른 키를 사용합니다.
  4. 정기적인 시크릿 로테이션 — 최소 분기마다 한 번 키를 갱신합니다.
  5. 퇴사 시 즉시 권한 회수 — 팀원이 떠나면 해당 인원이 접근했던 모든 시크릿을 즉시 교체합니다.

지금 바로 할 수 있는 설정

프로젝트 루트의 .gitignore에 다음을 추가하세요.

# 환경 변수
.env
.env.local
.env.*.local

그리고 .env.example을 만들어 팀원이 어떤 변수가 필요한지 바로 알 수 있게 합니다.

# .env.example
DATABASE_URL=postgresql://user:password@localhost:5432/mydb
STRIPE_SECRET_KEY=sk_test_xxxxxxxxxxxx
FIREBASE_API_KEY=your_firebase_api_key_here
NEXT_PUBLIC_BASE_URL=http://localhost:3000

마무리

.env 파일 공유는 사소해 보이지만, 보안 사고의 시작점이 되기 쉽습니다. 시크릿 매니저를 도입하든, LOCK.PUB의 비밀 메모로 만료 시간을 걸어 공유하든, 중요한 건 평문 메시지로 시크릿을 주고받는 습관을 멈추는 것입니다.

지금 팀의 Slack이나 카카오톡 대화방을 검색해보세요. DATABASE_URL이나 API_KEY로 검색하면 놀라운 결과가 나올 수도 있습니다.

메모 생성

메모 생성

관련 키워드

.env 파일 공유
환경 변수 안전하게 공유
개발자 시크릿 관리
.env 파일을 팀원에게 안전하게 공유하는 방법 | LOCK.PUB Blog