1. 最小权限检查清单
在密钥编辑器(/console/token)中让每个密钥——新的或现有的——
经过这六道门。设置其中任何一个都需要 Developer 角色或以上;
两个策略平面(§5–6)单独编写,并在此处绑定。
model_limits —— 钉住模型
model_limits —— 钉住模型
把
model_limits 设为这个智能体所需的精确列表(并启用
model_limits_enabled)。一次对任何列表之外模型的调用会在它
离开网关之前被拒绝,因此一个被劫持的智能体无法升级到一个
更贵或能力更强的模型。
检查: 列表是否短到工作所允许的程度——理想情况下一个模型?
深度:模型限制。allow_ips —— 钉住源
allow_ips —— 钉住源
把
allow_ips 设为智能体实际从中调用的源地址或 CIDR。一个从
其他任何地方出示的泄露密钥会在认证层被拒绝。空意味着允许所有
IP。
检查: 对于一个固定主机或定时智能体,列表是否非空且限定到
那个出口?深度:IP 允许列表。credit_limit_usd —— 限定花费
credit_limit_usd —— 限定花费
把
credit_limit_usd 设为智能体在其生命周期内永远不应跨越的
天花板。网关对照密钥的花费执行它。0 意味着无限——一个
失控循环可以耗尽你的整个余额。
检查: 上限是一个真实的预算,而非 0?深度:
配额、上限与到期。expired_time —— 给它一个截止时间
expired_time —— 给它一个截止时间
把
expired_time 设为一个绝对到期——sprint、部署或 CI 运行的
结束。-1 意味着永不到期。一个短寿命密钥无法作为被遗忘的
攻击面滞留。
检查: 一个短暂或承包商密钥是否有一个真实的到期,而非
-1?深度:到期密钥。guardrail_id —— 绑定一个内容策略
guardrail_id —— 绑定一个内容策略
通过
guardrail_id 附加一个 防护栏,
使请求(以及在支持的地方,响应)文本在它到达模型之前被筛查
PII、密钥和注入意图。
检查: 一个处理敏感提示词的密钥是否绑定了一个防护栏,或
继承一个工作区默认值?参见 §5。firewall_policy_id —— 绑定一个工具策略
firewall_policy_id —— 绑定一个工具策略
通过
firewall_policy_id 附加一个
防火墙策略,使该密钥发出的每一次工具
调用、MCP 派发和 egress 都对照一个智能体合法需要之物的允许
列表被评估。
检查: 一个调用工具的智能体是否绑定了一个防火墙策略,或
继承工作区默认值?参见 §6。2. 做什么 / 多久一次 / 在哪里
三个问题把检查清单从一项一次性杂务变成一种姿态。做什么
上面的六道门,按顺序:
model_limits → allow_ips →
credit_limit_usd → expired_time → guardrail_id →
firewall_policy_id。多久一次
在每个密钥创建时,以及在一次周期性审查中——当一个
智能体的范围变更时、当你 轮换 一个
密钥时,以及对长寿命密钥按固定节奏。
在哪里
在控制台密钥编辑器(
/console/token)中,作为一个
Developer+。两个策略在它们自己的控制台中编写,然后在密钥上
绑定。3. 一个具体的最小权限密钥
一个用一个廉价模型、从单一主机汇总支持工单的定时智能体,几乎 不需要任何权限。一个完全加固的密钥:| 字段 | 取值 | 原因 |
|---|---|---|
model_limits | 一个汇总模型 | 无法升级到前沿模型 |
allow_ips | 调度器的出口 CIDR | 泄露的密钥在别处无用 |
credit_limit_usd | 一个每周上限 | 失控循环无法耗尽余额 |
expired_time | 部署结束 | 自动到期,无法滞留 |
guardrail_id | 一个 PII 脱敏防护栏 | 请求文本被筛查 |
firewall_policy_id | 只允许它的工具 | 没有意外的工具调用 |
4. /v1 中继调用 vs 控制台
检查清单在控制台中用你的会话(一个 Developer+ 用户)配置。 你的智能体从不触碰那些配置路由——它在/v1/* 推理调用上出示它
范围限定的中继密钥(sk-orca-…),而上面的限制和绑定策略在每一个
上被执行。
model_limits 不包含 openai/gpt-4o-mini,这个调用
在它离开网关之前就被拒绝。如果调用方的 IP 不在 allow_ips 中,
它在认证层被拒绝。智能体代码保持不变;密钥决定影响半径。
5. 第 5 道门——绑定的防护栏
guardrail_id 把一个工作区限定的、有序的内容策略绑定到密钥。
解析是密钥的显式防护栏(如果它存在且已启用),否则工作区默认值,
否则无。
防护栏在被禁用时是一个严格的关闭开关:一个被禁用或被删除的
guardrail_id 意味着该密钥得到无防护栏——它不会回退到
工作区默认值。这与防火墙平面(§6)相反,所以要验证绑定的防护栏
是已启用的,而不只是已附加。block、mask 或 flag。
例如 PII Shield 预设,在请求到达模型之前就脱敏请求中的 PII。
作为 Developer+ 编写和附加防护栏——参见
防护栏 和
绑定策略。
6. 第 6 道门——绑定的防火墙策略 + 网关范围
firewall_policy_id 绑定一个工作区限定的工具调用策略。它治理
一个智能体所采取的动作——声明的工具、模型发出的 tool_calls、
MCP 派发和出站 egress——对照一个有序规则列表,其判定为
allow、audit、deny、sanitize、pending_approval 或
cap_cost。
防火墙平面的解析与防护栏不同:一个被禁用的被附加防火墙
策略回退到工作区默认值,它不关闭执行。所以绑定一个策略并
禁用它会把密钥还原到工作区默认值——它永远不会静默地失去防护。
tight / balanced / permissive)
的单一开关,支持一键撤销。参见
防火墙 §8。
7. 检查清单之后
安全智能体基线
推荐的起始姿态——一个自治开关,然后从真实流量调优。
绑定策略
guardrail_id 和 firewall_policy_id 如何附加和解析。过度代理
这份检查清单旨在遏制的那种威胁。
泄露密钥
一个限定范围密钥暴露的那一刻该做什么。
