如何安全地與團隊共享 .env 檔案和環境變數
別再用 LINE 傳資料庫密碼和 API 金鑰了。這篇指南教你如何安全地把 .env 檔案分享給團隊成員,從臨時方案到長期解決策略。

如何安全地與團隊共享 .env 檔案和環境變數
「我 LINE 傳給你」
新同事加入團隊了。在設定本地開發環境時,他問了一句:
「.env 檔案可以傳給我嗎?」
接下來的劇情毫不意外。資深工程師打開 LINE,把資料庫密碼、API 金鑰、各種第三方 Secret 整段複製貼上。這則訊息從此永遠留在聊天紀錄裡。
這比你想像的更常見,也比你想像的更危險。
為什麼不能隨意共享 .env 檔案
.env 檔案裡全是敏感資訊:
- 資料庫連線資訊 — 主機、埠號、帳號、密碼
- API 金鑰 — Stripe、AWS、Firebase 等付費服務的金鑰,被濫用就會產生費用
- 第三方 Secret — OAuth Client Secret、Webhook 簽章金鑰
- 內部服務 Token — 微服務間的認證令牌
用 LINE 或 Slack 傳送的訊息會儲存在伺服器上。任何有工作區存取權限的人都能透過搜尋找到它們,離職同事的裝置上也可能還留著這些資訊。
常見但危險的共享方式
| 方式 | 風險 |
|---|---|
| LINE / Slack 私訊 | 永久儲存在伺服器,可被搜尋 |
| Email 附件 | 留存在郵件伺服器,可被轉寄 |
| 共享 Google Docs | 連結外洩後任何人可存取,修改紀錄會保留內容 |
| 提交到 Git | 即使刪除也留在 git log 歷史中,機器人幾秒內就能掃描 |
| Notion / Confluence | 工作區全員可搜尋 |
其中最致命的是誤提交到 Git。推送到 GitHub 的金鑰會在幾秒內被自動掃描機器人發現。
安全共享 .env 檔案的方法
1. 使用密鑰管理服務
Doppler、HashiCorp Vault、AWS Secrets Manager 等專業工具可以集中管理環境變數,提供細緻的權限控制和稽核日誌。團隊規模較大時,這是最理想的方案。
2. 團隊密碼管理工具
1Password Teams 和 Bitwarden Organization 的共享保管庫可以儲存 .env 內容。只有授權成員才能檢視,所有資料端對端加密。
3. 帶密碼的自毀備忘錄
如果還沒導入密鑰管理系統,或者只需要臨時共享一次,LOCK.PUB 的秘密備忘錄功能就很實用。把 .env 內容貼到備忘錄中,設定密碼和到期時間,然後把連結透過 Slack 傳送,密碼透過 LINE 另外傳送。到期後內容自動消失,不留任何永久紀錄。
4. GPG 加密檔案
安全要求較高的團隊可以用 GPG 加密 .env 檔案後再共享。不過這需要每位成員都熟悉 GPG 金鑰管理,有一定的入門門檻。
.env 管理最佳實踐
- 立即加入
.gitignore— 建立專案後第一件事就該做這個。 - 維護
.env.example檔案 — 用佔位符標明需要哪些變數,不暴露真實值。 - 每個環境使用不同的憑證 — 開發、預發布、正式環境絕不共用同一組金鑰。
- 定期輪換金鑰 — 至少每季更新一次。
- 離職時立即回收權限 — 成員離開後,必須立即更換該成員接觸過的所有金鑰。
現在就能做的設定
在 .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 建立帶到期時間的加密備忘錄,關鍵是改掉在聊天工具裡貼上明文金鑰的習慣。
現在就去搜尋一下你團隊的 LINE 群組或 Slack 頻道,試試搜 DATABASE_URL 或 API_KEY,結果可能會讓你嚇一跳。