1. 為何要在顯示時遮罩 API 金鑰值
完整金鑰是一張持有者憑證:任何讀到它的人都能以你的 身份呼叫閘道,到那把金鑰的限制為止。主控台檢視不斷被 複製進截圖、螢幕分享、支援工單與錯誤報告—— 所以在一份金鑰清單中顯示存活密鑰,會把那其中的每一個 都變成一次憑證洩漏。 遮罩透過分離兩個通常被混為一談的需求來解決這件事:- 辨識——這是哪一把金鑰?由一個穩定、遮罩的 指紋回答,你能一眼讀出。
- 使用——密鑰是什麼? 在建立時恰好回答一次,並 在那之後藏在一個刻意的角色閘控重新顯示之後。
一把遮罩的金鑰不是一張可用的憑證。它無法驗證一個
請求。只有你在建立時複製的完整明文(
sk-orca-…),或
透過閘控端點重新顯示的明文,才能呼叫閘道。2. 遮罩形式的樣子
主控台顯示金鑰的品牌前綴、然後一串固定的星號、 然後最後四個字元——足以分辨兩把金鑰,不 足以重建任一把。| 你建立的 | 主控台顯示 |
|---|---|
sk-orca-9f3aK2…long…7Qm4 | sk-orca-9f3****7Qm4 |
sk-orca- 前綴與幾個開頭字元;
最後四個字元是你在交叉參照一條日誌行或一個錯誤時
會辨識的尾段。介於其間的一切都被摺疊
成一個固定的遮罩——那串星號是一個常數,所以它的寬度永遠不會
洩漏金鑰的真實長度。
3. 何時顯示明文——以及何時不顯示
完整金鑰恰好有一個瞬間屬於你去複製,並有一條 單一閘控路徑可再次取回它。建立時——顯示一次
建立時——顯示一次
當你鑄造一把金鑰時,主控台顯示完整的
sk-orca-… 明文
一次。那時把它複製進你的密鑰管理器。那把金鑰之後的每一次
檢視——清單、詳情面板、搜尋結果——都只顯示
遮罩形式。建立之後——重新顯示受閘控
建立之後——重新顯示受閘控
你可以按需重新顯示一把一般金鑰的明文,但它是一個
刻意的動作,藏在 Developer+ 角色之後——而非預設
清單會曝露的東西。重新顯示一把閘道範圍限定金鑰
(
is_firewall_gateway)需要 Admin(或 Owner)角色,因為
那個權杖能讀取已註冊的 MCP 伺服器憑證。其他任何地方——永遠遮罩
其他任何地方——永遠遮罩
列出金鑰、開啟一把金鑰的詳情、搜尋,以及每一次讀取
權杖物件,都會傳回遮罩形式。明文絕不會被包含在
一個清單或搜尋回應中。
4. 一個具體範例:辨識那把外洩金鑰
假設一個警示觸發了——一把金鑰正從一個非預期的 IP 發出 呼叫——而那條日誌行攜帶遮罩尾段…7Qm4。你不需要明文就能
採取行動:
- 開啟主控台的 Keys 清單(
/console/token)。每一列顯示它的 遮罩指紋——sk-orca-9f3****7Qm4與它的environment標籤。 - 把
…7Qm4尾段(與prod標籤)對應到那一列違規的。 遮罩形式正是你在這裡需要的識別符——清單、警示, 或你對它的截圖中都沒有密鑰被曝露。 - 停用那把金鑰以暫停它,或刪除它以徹底撤銷—— 兩者都是遮罩安全的動作,永遠不會印出明文。參見 管理金鑰與 外洩金鑰回應。
5. 在你自己的日誌與工具中遮罩
閘道遮罩它自己的表層;你掌控你這一側。同樣的 原則套用於一把金鑰可能落到你堆疊中的任何地方:- 絕不記錄
Authorization標頭或原始sk-orca-…值。 如果 你必須記下哪一把金鑰發出了呼叫,記錄主控台所用的同一個 形狀——前綴與最後四個字元——而非完整密鑰。 - 只在密鑰管理器中儲存明文,絕不放在原始碼控制、 CI 日誌,或一個簽入儲存庫的設定檔中。金鑰在 主控台中被遮罩,正是為了讓你自己的系統成為存活密鑰 存在的唯一地方。
- 狹窄地為金鑰設定範圍,使即使一張外洩憑證也有一個界定的 波及範圍——一個模型、一個 IP 範圍、一個花費上限。參見 最小自主檢查清單。
遮罩減少顯示暴露;它不減少一把確實外洩之金鑰的
威力。日誌中一個遮罩的指紋是安全的,但密鑰管理器中的
存活金鑰仍然完整地驗證——這正是為何狹窄範圍與
快速輪替與遮罩同等重要。
6. 這如何契合金鑰衛生的其餘部分
遮罩是憑證縱深防禦姿態的一層:管理金鑰
建立、停用與撤銷金鑰——清單中每個遮罩列背後的
生命週期。
權杖物件
一把金鑰所攜帶的每個欄位,包括界定一把外洩金鑰
波及範圍的限制。
金鑰輪替
當你無法復原或信任一把舊金鑰時,到一把全新金鑰的零停機
交接。
外洩金鑰回應
一旦懷疑一張憑證暴露的當下該怎麼做。
