如何安全地向團隊成員傳遞 API 金鑰和 Secret
了解如何在開發團隊中安全地共享 API 金鑰、Secret Key 和環境變數。避免危險的共享方式,掌握金鑰管理的最佳實踐。
如何安全地向團隊成員傳遞 API 金鑰和 Secret
在開發過程中,經常需要向團隊成員傳遞 API 金鑰、Secret Key、資料庫密碼、伺服器登入資訊等。問題在於如何安全地共享這些敏感資訊,而不造成安全隱患。
危險的共享方式
首先來看絕對不應該使用的方法。令人驚訝的是,許多開發團隊至今仍在使用這些方式。
1. 提交到 Git 儲存庫
將 .env 檔案提交到 Git 是最常見也最危險的錯誤。
# 絕對不要這樣做
git add .env
git commit -m "新增環境變數"
git push origin main
一旦 Secret 進入 Git 歷史紀錄,即使用 git rm 刪除,它仍然存在於歷史中。如果是公開儲存庫,自動化機器人會在幾秒內偵測到。
2. 貼到 Slack/Discord
在即時通訊工具中直接貼上 API 金鑰同樣非常危險。
- 頻道中有權限的所有人都能看到
- 透過訊息搜尋可以在之後被發現
- 員工離職後訊息仍然保留
- 管理員可以查看所有訊息紀錄
3. 透過電子郵件傳送
電子郵件預設不加密。訊息在郵件伺服器之間傳輸時可能被截獲,憑證會永久留在收件人信箱中。
API 金鑰洩漏的實際損失
API 金鑰洩漏不僅是安全事件,更會直接造成經濟損失。
AWS 金鑰洩漏案例
| 案例 | 損失規模 |
|---|---|
| 個人開發者 AWS 金鑰暴露 | 一夜之間產生 $6,000 帳單 |
| 新創公司 GitHub 公開儲存庫 | 3天內超過 $50,000 帳單 |
| 企業內部文件洩漏 | 數百萬美元資料外洩事故 |
當 AWS、GCP、Azure 等雲端服務的金鑰洩漏後,攻擊者會在幾分鐘內建立大量運算資源,通常用於加密貨幣挖礦。
安全的 API 金鑰共享方法
方法一:LOCK.PUB 秘密備忘錄(即時共享)
需要立即向團隊成員傳遞金鑰時,這是最實用的方法。
工作流程:
- 在 LOCK.PUB 上建立秘密備忘錄
- 輸入 API 金鑰和相關資訊
- 設定密碼和較短的到期時間(如1小時)
- 透過即時通訊傳送連結,透過私訊單獨傳送密碼
# 秘密備忘錄內容範例
AWS_ACCESS_KEY_ID=AKIA...
AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI...
AWS_REGION=ap-east-1
注意:這些金鑰僅用於 staging 環境。
正式環境金鑰請另外申請。
優勢:
- 到期後自動刪除
- 需要密碼才能查看
- 在伺服器上加密儲存
- 聊天紀錄中不會留下金鑰原文
方法二:金鑰管理工具(團隊級別管理)
當團隊規模擴大時,需要引入專業的金鑰管理工具。
| 工具 | 特點 | 適合團隊 |
|---|---|---|
| HashiCorp Vault | 最強大的金鑰管理 | 大型企業 |
| AWS Secrets Manager | AWS 生態整合 | 以 AWS 為主的基礎設施 |
| 1Password Teams | 開發者友善的介面 | 新創公司、中小團隊 |
| Doppler | 環境變數自動同步 | DevOps 團隊 |
方法三:環境變數管理(.env.example 模式)
在專案中包含 .env.example 檔案是標準做法。務必在 .gitignore 中加入 .env。
金鑰管理最佳實踐
1. 定期輪換金鑰
API 金鑰應定期更換,以便在金鑰洩漏時將損失降到最低。
| 金鑰類型 | 建議輪換週期 |
|---|---|
| 正式環境 API 金鑰 | 90天 |
| 資料庫密碼 | 60天 |
| 服務權杖 | 30天 |
| 開發/測試金鑰 | 有人離職時立即更換 |
2. 按環境分離金鑰
為開發、測試、正式環境分別使用不同的金鑰。
3. 最小權限原則
為每個 API 金鑰僅授予必要的最小權限。
- 唯讀操作使用唯讀金鑰
- 發放僅能存取特定服務的金鑰
- 管理員金鑰限制在最少人員範圍內
4. 自動化洩漏偵測
使用 GitHub Secret Scanning、GitGuardian、TruffleHog 等工具自動偵測程式碼儲存庫中提交的金鑰。
使用 LOCK.PUB 的快速共享工作流程
新成員到職
新開發者加入時,將所有必要的環境變數整理在秘密備忘錄中,設定24小時到期,分享連結和密碼。
向外部合作夥伴共享金鑰
為合作方專門發放獨立金鑰,透過短到期時間的秘密備忘錄傳遞,合作結束後撤銷金鑰。
故障回應時緊急共享金鑰
伺服器故障需要緊急傳遞存取資訊時,建立1小時到期的秘密備忘錄,電話告知密碼,故障解決後輪換金鑰。
總結
API 金鑰和 Secret 管理是開發安全的基礎。在即時通訊中貼上金鑰或透過郵件傳送雖然方便,但一次洩漏可能造成數十萬甚至數百萬的損失。
如果你現在需要向團隊成員傳遞金鑰,試試秘密備忘錄。