Vibe Coder

Credential 管理:存對地方、輪換、洩漏後知道怎麼救

Credential 包含 API Key、OAuth Token、資料庫密碼、JWT Secret 四種類型,本機開發用 .env,雲端服務用平台的環境變數,企業級生產環境要升級到 Secrets Manager。一旦懷疑洩漏,第一步永遠是立刻撤銷,不要等確認。
Credential 管理:存對地方、輪換、洩漏後知道怎麼救

Credential 管理:存對地方、輪換、洩漏後知道怎麼救

OpenAI API Key 洩漏,一個晚上產生幾萬元的帳單,這是真實發生過的案例。Key 的安全從來不是小事,但 AI 生的程式預設會把 Key 寫死在程式碼裡,不會主動提醒你。這一課給你一套完整的 Credential 管理方法,從日常儲存到出事後的急救流程。

出事的時候,前五分鐘最關鍵。這一課最後的急救 SOP,就是要讓你在真的遇到洩漏時,不用臨時現查,能立刻按表操課把損害降到最低。

你將學到什麼

四種 Credential 類型

API Key、OAuth Token、資料庫密碼、JWT Secret 的特性與儲存方式。

儲存策略

從本機的 .env 檔案,一路升級到企業級 Secrets Manager。

輪換策略

什麼時候要換、怎麼換才能做到零停機。

洩漏急救 SOP

不小心把 Key commit 上 GitHub 之後,正確的處理順序。

Credential 的四種類型

類型例子特性儲存方式
API KeyOpenAI、Stripe、SendGrid 的 Key長期有效,需要手動輪換.env 或 Secrets Manager
OAuth TokensGoogle、GitHub 的 Access、Refresh Token有過期時間,可自動更新資料庫加密,嚴格保護
資料庫密碼PostgreSQL、MySQL 的連線字串長期有效,包含敏感連線資訊Secrets Manager 或 .env,不能進 Git
JWT Secret簽名 JWT 用的 secret key洩漏後所有 JWT 都可偽造Secrets Manager,定期輪換
這些前綴一定不能出現在程式碼裡任何以 sk 開頭、pk_ 開頭、rk_ 開頭(Stripe)、ghp_ 開頭(GitHub)、AIza 開頭(Google)的字串都不能寫死在程式碼裡。AI 生的程式裡看到這些前綴,立刻要求改成環境變數。

儲存策略:從 .env 到 Secrets Manager

方式適用優點缺點
.env 檔案本機開發簡單,直接不能用在多台伺服器,容易誤 commit
平台環境變數單一雲端服務平台提供介面,安全只能在那個平台用
Doppler多環境、小團隊集中管理,支援多環境需要安裝 CLI
AWS Secrets Manager企業級生產環境最安全,支援自動輪換有費用,設定較複雜

各平台設定環境變數的位置不同:Vercel 在專案設定裡的環境變數頁面;Railway 在服務的變數頁面;Render 在服務的 Environment 頁面;GitHub Actions 則在 Repository 設定的 Secrets and variables 裡。

Doppler:最推薦的升級方案Doppler 讓你在一個地方管理所有環境(開發、測試、正式)的 secret,一句 CLI 指令就能自動注入環境變數,不需要 .env 檔案,團隊共享也安全。免費方案對小型專案已經夠用。
.env本機開發平台環境變數Doppler多環境集中管理Secrets Manager企業級生產環境安全性與管理成本隨規模提升
規模越大,儲存方式就該跟著往上升級。

輪換策略:何時換、怎麼換不斷服

Credential 不是設定好就永遠不管,需要定期更換,也需要在特定事件後立刻更換:每 90 天定期輪換一次;有人員離職時立刻輪換所有他有存取權的 Credential;只要有任何懷疑洩漏,立刻輪換不要等確認;系統被入侵後,所有 Credential 一律重新申請。

  1. 申請新 Key:在 API 提供商後台申請一個新的 Key,舊的先不要刪除。
  2. 更新環境變數:在雲端平台的環境變數設定裡,把 Key 換成新的,新部署的實例會用新 Key。
  3. 驗證新 Key 可用:確認服務正常運作、API 呼叫有成功。
  4. 撤銷舊 Key:確認沒有服務還在用舊 Key 後,在 API 提供商後台撤銷舊 Key。

洩漏急救 SOP

  1. 立刻撤銷:不管是不是真的洩漏,有疑慮就先撤銷,去 API 提供商後台找撤銷或刪除按鈕。
  2. 申請新 Key:立刻申請新的 Credential 並更新到所有使用它的地方。
  3. 查帳單:到 API 提供商後台確認有沒有異常使用記錄,聯絡客服申請退款,很多提供商對首次洩漏有保護政策。
  4. 清除 Git 歷史:如果 Key 是 commit 進 Git 的,要用專門工具從歷史記錄中徹底清除。

AI 生成程式的 Credential 安全檢查清單

收到 AI 生的任何程式碼,先用這份清單過一遍再使用。

  • 程式碼裡有沒有任何看起來像 API Key 的字串?
  • 有沒有使用環境變數讀取函式來讀取敏感設定?
  • .env 檔案有沒有在忽略清單裡?
  • 資料庫連線字串、密碼有沒有寫死在程式碼裡?
  • JWT Secret 是從環境變數讀取的嗎?
  • 程式裡有沒有把 API Key 或 secret 印出來的程式碼?
要求 AI 做安全審查的提示詞在收到 AI 的程式碼後,固定追問:請審查這段程式碼的 Credential 安全性,有沒有寫死的 API Key 或密碼,有沒有把敏感資訊印出來,所有 secret 是否都從環境變數讀取。

延伸學習

把這篇文章分享給需要的人FacebookLINEThreadsX

常見問答

為什麼 API Key 洩漏的後果可以這麼嚴重?
API Key 洩漏後,任何拿到它的人都能用你的額度呼叫付費 API,一個晚上就可能累積出驚人帳單,這是真實發生過的案例,Key 的安全性不能輕忽。
本機開發用 .env 就夠了嗎?
本機開發用 .env 是夠用的,但正式生產環境建議升級到雲端平台的環境變數設定,或用 Doppler 這類工具集中管理多個環境,企業級專案則建議用 Secrets Manager。
Credential 多久要輪換一次?
參考 OWASP 建議,一般每 90 天輪換一次 API Key;此外人員離職、懷疑洩漏、發生重大資安事故時,都要立刻輪換,不用等到排定的週期。
不小心把 API Key commit 到公開 GitHub repo 怎麼辦?
立刻到提供商後台撤銷這個 Key,申請新的並更新到所有使用的地方,查帳單確認有沒有異常使用,最後用專門工具從 Git 歷史記錄裡徹底清除含有 Key 的 commit。