跳至主要内容

Key Rotation & Emergency Kill

本小節定義金鑰輪替與緊急失效的設計原則、操作流程,以及對系統可用性與安全性的影響範圍。

核心目標與威脅模型

金鑰輪替的目的是降低長期金鑰暴露的風險,避免單一密鑰在長時間內成為攻擊漏洞。緊急失效機制則用於應對「已知或高度懷疑洩漏」的情境,例如私鑰外洩、內部帳號被入侵,或發現 Token 被大量濫用。

在正常情況下,金鑰輪替應對使用者與服務透明;在緊急情況下,系統可用性讓位於安全性,允許短時間內的大量 Token 失效。

金鑰版本

每一把簽章金鑰都必須具備唯一識別(ID),Token 在發行時必須明確標示其所使用的 ID,驗證端只根據 ID 對應的公鑰或驗證金鑰進行驗證。

輪替後,系統同時維護 Active KeyPassive Key,分別用於簽發新的 Token 以及用來驗證現有的 Token。

提示

Passive Keys 的存活時間不得短於最長 Token 有效期限,否則會造成合法 Token 無法驗證。

輪替週期

與 Token 類型、權限綁定:

  • Access Token:高頻輪替,通常以分鐘或小時為單位(以 AWS 為例子,Session 最多不會超過 24 小時)
  • Refresh Token 或長效憑證:低頻輪替,但允許主動撤銷
  • 高權限帳戶 (Admin/Root): 每 90 天輪替一次
  • 服務帳號 (Service Accounts): 每 180 天輪替一次
  • 臨時密鑰 (STS/Session Tokens): 效期不超過 12 小時

輪替機制

驗證端必須能在短時間內取得最新金鑰集合。因此新金鑰必須提前發佈,再切換為 Active。

  1. Generate : 在 Secret Manager 產生新 Version。
  2. Deploy : 讓應用程式同時讀取新舊密鑰(或確保新密鑰已同步至所有節點)。
  3. Verify : 監控日誌,確認系統已開始使用新密鑰進行請求。
  4. Revoke : 延遲 24 小時後停用並刪除舊金鑰。

緊急停權機制

在高風險事件中使用,例如:

  • 私鑰確定或高度疑似外洩
  • 金鑰被用於簽發未授權 Token
  • 上游或內部系統遭入侵,無法信任既有簽章

此時撤銷所有金鑰,這可能導致使用者被強制登出,或服務間請求大量失敗。但相比高風險性的資安事件,這是可以接受的損失。

  • 所有使用該金鑰簽發的 Token 立即視為無效
  • 驗證端不得接受任何快取中的舊金鑰
  • 客戶端必須重新進行完整的認證流程

且必須記錄:誰在什麼時間觸發、影響哪些範圍、金鑰的變更是雲端自動化的排程,還是有人手動觸發了。