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. 它如何契合其余的密钥卫生
掩码是凭据纵深防御姿态的一层:管理密钥
创建、禁用和吊销密钥——列表中每个掩码行背后的生命周期。
令牌对象
一个密钥携带的每个字段,包括限定一个泄露密钥影响半径的限制。
密钥轮换
当你无法恢复或信任一个旧密钥时,向一个全新密钥的零停机交接。
泄露密钥响应
你怀疑一份凭据暴露的那一刻该做什么。
