1. 三个范围
三个概念相互嵌套:- 工作区——租户边界。工作区的每个成员共享相同的防护栏和 防火墙策略目录。没有任何东西跨越工作区边界——在工作区 A 中编写的策略对工作区 B 不可见。
- 策略——一个命名的、工作区限定的规则集(防护栏或防火墙 策略)。编辑策略会在下一次请求时对附加到它的每个密钥生效, 无需重新部署。
- 密钥——身份加附加项。密钥携带自己的约束,并指向治理它的 策略。
2. 密钥携带什么
每个 API 密钥是限制和附加项的捆绑包。在密钥编辑器 (/console/token)中设置这些——创建或编辑密钥需要 Developer
角色或以上。
| 字段 | 它限制什么 | 设置所需的最低角色 |
|---|---|---|
model_limits | 将密钥限制到特定的模型列表——对该列表之外任何模型的调用在离开网关之前被拒绝。 | Developer |
allow_ips | IP 允许列表。来自任何未列出地址的请求在认证层被拒绝。空意味着允许所有 IP。 | Developer |
credit_limit_usd | 以 USD 计的消费上限。0 表示无限制。网关对密钥的终身消费执行此上限。 | Developer |
expired_time | 绝对到期时间戳。-1 表示密钥永不过期。 | Developer |
environment | 一个自由格式标签(例如 prod、staging、dev),用于组织密钥和过滤日志。 | Developer |
guardrail_id | 将特定防护栏附加到此密钥。该密钥发出的每一次调用都由该防护栏筛查。 | Developer |
firewall_policy_id | 将特定防火墙策略附加到此密钥。该密钥发出的每一次工具调用都由该策略评估。 | Developer |
is_firewall_gateway | 将密钥标记为网关限定令牌——调用 MCP 派发和 evaluate hook 路由所需。普通密钥在那些路由上得到 403。读取网关密钥的明文需要 Admin。 | Admin(启用和读取明文) |
3. 策略解析顺序
对于任何请求,OrcaRouter 独立地解析活跃的防护栏和防火墙策略:- 密钥附加——如果密钥有明确的
guardrail_id(或firewall_policy_id)且该策略存在且已启用,它就适用。 - 工作区默认值——如果密钥没有附加,工作区的已启用
is_default防护栏(或策略)适用。 - 无执行——如果两者都没有设置,请求通过,没有内容筛查或 工具调用执行。
当附加的策略被禁用时,两个平面有所不同:
- 被禁用或删除的防护栏附加意味着密钥得到没有防护栏—— 禁用它就是关闭开关;它不回退到工作区默认值。
- 被禁用的防火墙附加回退到工作区默认防火墙策略—— 因此禁用防火墙附加会将密钥恢复到工作区默认,而不是关闭执行。
0/未设置)的附加总是回退到工作区默认;两者都没有意味着
无执行。4. 最小权限密钥——每个智能体一个密钥
最安全的配置是给每个智能体其自己的窄范围密钥,而不是在所有 调用者之间共享一个工作区密钥。 一个只调用一个模型并运行计划任务的智能体的精心限定范围的密钥 可能看起来像这样:model_limits:["openai/gpt-4o-mini"]——智能体不能切换到 更昂贵或更强大的模型。allow_ips:调度器的出站 CIDR——没有其他来源可以呈现此密钥。credit_limit_usd:每周预算上限——失控的循环不能耗尽你的 工作区余额。expired_time:冲刺或部署生命周期的结束——密钥自动过期, 不能被重复使用。guardrail_id:针对此智能体数据敏感性的防护栏——比工作区 默认值更严格。firewall_policy_id:只允许此智能体合法需要的工具的策略。
仅为 MCP 派发或 evaluate hook 执行面创建网关限定密钥
(
is_firewall_gateway)——绝不用于一般推理流量。推理路径上的
网关密钥让调用者访问 /api/v1/firewall/* 路由,这比它需要的
能力更广。一个密钥,一个目的。5. 策略在哪里编写
防护栏和防火墙策略都是工作区限定的,并在所有成员之间共享, 但变更需要正确的角色:- 读取任何防护栏、策略或密钥——任何工作区成员。
- 创建或更改防护栏、防火墙策略、MCP 服务器、自治级别、 审批动作和普通 API 密钥——Developer+。
- 在密钥上启用
is_firewall_gateway;读取网关密钥的 明文——Admin+。
6. 下一步
安全智能体基线
推荐的起始姿态——一个自治级别开关,然后从真实流量调优。
获取 API 密钥
创建你的第一个密钥,并在控制台中附加防护栏或防火墙策略。
