VCA

API 金鑰與密碼放哪:secret 管理入門

金鑰寫進前端或 commit 進 Git 就等於公開。新手該懂的 secret 放法、使用原則,以及外洩了怎麼補救。

發布於 更新於 審閱於 閱讀約 1 分鐘編輯方針#實作指南#安全#金鑰
屬於路線SaaS 路線

一句話解釋

secret 一旦進到前端或版本控制就等於公開——這篇講該放哪、怎麼用、外洩了怎麼救。

你會做出什麼

知道金鑰 / 密碼該放哪(環境變數 / 平台 secret)、絕不能放哪,以及外洩後的正確補救。

什麼是 secret

Secret 是「不能讓別人看到的鑰匙」:API 金鑰、資料庫密碼、第三方服務的 token、簽章用的密鑰。它們一旦外流,別人就能假冒你、用你的帳單、偷你的資料。所以重點不只是「會用」,更是「藏好」。

絕不能放的地方

  • 前端 JavaScript:任何進到瀏覽器的東西,使用者都看得到。前端的 secret=公開的 secret。
  • commit 進 Git:就算之後刪掉,它仍在歷史紀錄裡,等於洩漏。公開 repo 更是被機器人秒掃。

該放哪

  • 環境變數 / 平台的 secret 設定:把 secret 放在部署平台(如 Cloudflare)的 secret store 或環境變數,程式從那裡讀,不寫死在程式碼。
  • 本機開發.env 之類的檔案,但一定加進 .gitignore、絕不 commit。

這就是業界慣例「設定與程式分離」(12-factor 的 config 原則):同一份程式碼,換個環境換組 secret 就能跑。

用的原則

  • 最小權限:金鑰只給它需要的權限,別都用最大權限的 root key。
  • 會過期、能撤銷:盡量用可設效期、可隨時作廢的金鑰,外洩時能止血。
  • 不同環境用不同 secret:正式與測試分開,測試外洩不波及正式。

外洩了怎麼辦

立刻 rotate(換掉並作廢舊的)——這是唯一可靠的補救。記住:只要進過前端、進過 Git 歷史、進過聊天記錄或截圖,就視為已洩漏,不要心存僥倖。把舊金鑰作廢、產新的、更新到 secret store。

下一步

常見問題

我不小心把金鑰 commit 進 Git 了,刪掉那行就好嗎?

不夠。刪掉只是讓「現在」看不到,但**它仍留在 Git 歷史紀錄裡**,任何人翻歷史就能拿到,公開 repo 更會被機器人秒掃。唯一可靠的補救是立刻 rotate:把那把金鑰作廢、產一把新的、更新到 secret store。

前端真的不能放任何金鑰嗎?

凡是進到瀏覽器的東西,使用者就能看到——所以「機密」金鑰一律不能放前端。需要呼叫第三方服務時,正解是讓**後端**保管金鑰、由後端代呼叫。少數「本來就公開、權限受限」的金鑰(例如某些只能讀的公開 key)才適合放前端,但仍要在服務端限制它能做什麼。

參考來源

  1. Secrets Management Cheat SheetOWASP
  2. The Twelve-Factor App — Config12factor

SaaS 路線 的下一步: 儲存