Key Rotation & Emergency Kill
本小節定義金鑰輪替與緊急失效的設計原則、操作流程,以及對系統可用性與安全性的影響範圍。
核心目標與威脅模型
金鑰輪替的目的是降低長期金鑰暴露的風險,避免單一密鑰在長時間內成為攻擊漏洞。緊急失效機制則用於應對「已知或高度懷疑洩漏」的情境,例如私鑰外洩、內部帳號被入侵,或發現 Token 被大量濫用。
在正常情況下,金鑰輪替應對使用者與服務透明;在緊急情況下,系統可用性讓位於安全性,允許短時間內的大量 Token 失效。
金鑰版本
每一把簽章金鑰都必須具備唯一識別(ID),Token 在發行時必須明確標示其所使用的 ID,驗證端只根據 ID 對應的公鑰或驗證金鑰進行驗證。
輪替後,系統同時維護 Active Key 與 Passive 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。
- Generate : 在 Secret Manager 產生新 Version。
- Deploy : 讓應用程式同時讀取新舊密鑰(或確保新密鑰已同步至所有節點)。
- Verify : 監控日誌,確認系統已開始使用新密鑰進行請求。
- Revoke : 延遲 24 小時後停用並刪除舊金鑰。
緊急停權機制
在高風險事件中使用,例如:
- 私鑰確定或高度疑似外洩
- 金鑰被用於簽發未授權 Token
- 上游或內部系統遭入侵,無法信任既有簽章
此時撤銷所有金鑰,這可能導致使用者被強制登出,或服務間請求大量失敗。但相比高風險性的資安事件,這是可以接受的損失。
- 所有使用該金鑰簽發的 Token 立即視為無效
- 驗證端不得接受任何快取中的舊金鑰
- 客戶端必須重新進行完整的認證流程
且必須記錄:誰在什麼時間觸發、影響哪些範圍、金鑰的變更是雲端自動化的排程,還是有人手動觸發了。