跳转到主要内容
你有一个智能体在 api.orcarouter.ai 上使用的密钥,而你希望该密钥发出的 每一次工具调用都受治理——被拦截、审计、脱敏或挂起等待审批——而无需 触碰你的智能体代码。这就是一个两步的智能体防火墙设置:创建一次 防火墙策略,然后把密钥指向它。从下一次调用起, 该密钥发出的每一个工具都会在网关上被对照策略检查。 本页是创建并绑定的路径。完整的策略模型(执行面、判定、解析)参见 防火墙概览;规则语法参见 防火墙规则
所有策略与密钥配置都发生在控制台中(或 /api/workspace/firewall/* 管理路由,它们使用你的会话 / 访问令牌——而非一个中继 sk-orca-… 密钥)。只有你智能体的 /v1/* 调用才使用中继密钥。创建并绑定一条策略 是一个 Developer+ 操作。

1. 智能体防火墙设置一览

一条防火墙策略是一个命名的、工作区限定的对象:一个有序的规则列表, 外加一个针对没有任何规则匹配的一切的默认判定。一个密钥通过它的 firewall_policy_id 字段选择加入一条策略。你技术栈中的其他一切都不改变。

创建策略

给它命名、挑一个默认判定、添加规则——或者从一个自治级别 / 预设 播种再编辑。

绑定一个密钥

把密钥的 firewall_policy_id 设为该策略,或将该策略标记为工作区 默认,这样每个未绑定的密钥都会继承它。

2. 在控制台中创建一条策略

  1. 打开 Security → Firewall → Policies 并选择 New policy
  2. 为它命名(工作区内唯一)并保持 Enabled 开启。
  3. 挑选一个默认判定——参见 §3
  4. 在规则编辑器中添加规则,或者从空开始,稍后让 Discovered tools 从真实流量驱动编写。
  5. 保存。该策略存在,但在某个密钥指向它或你将它设为工作区默认之前, 它不治理任何东西。
不想先手工编写规则?应用一个 自治级别balanced 是推荐的起点)—— 它会物化出真实、可编辑的策略与防护栏行,你随后可以调优。或者从一个 内置 preset 开始一条规则再编辑它。无论哪种方式,你最终都到达同一个 地方:一条你绑定到密钥的命名策略。

3. 挑选默认判定

默认判定是当没有规则匹配一次工具调用时策略所做的事。它是你姿态 的底线。它只接受恰好三个值:
default_verdict当没有规则匹配时……
audit (默认)放行该调用,但记录它。观察一切,不拦截任何东西——安全的起点。
allow放行并记录,无审查记录。
deny拦截任何规则没有明确允许的东西——一种你与 allow 规则搭配的默认拒绝姿态。
deny默认拒绝:你的规则没有明确允许的任何工具调用都会被拦截。 强大,但它会拦下你忘记加入白名单的调用。先在 影子模式 下上线一条默认拒绝策略, 并在执行之前先观察事件信息流。
一条规则能产生的判定(allowauditdenysanitizepending_approvalcap_cost)在 判定 中讲解——默认判定仅限于上面这三个。

4. 把策略绑定到一个密钥

一个密钥通过它的 firewall_policy_id 选择加入一条策略。在控制台中:
  1. 打开 Keys,编辑你智能体使用的密钥。
  2. Firewall policy 设为你创建的那条策略(这会写入 firewall_policy_id)。
  3. 保存。该密钥发出的下一次调用就受治理。
绑定关系存在于密钥上,在网关中——你的智能体继续发送相同的 Authorization: Bearer sk-orca-… 和相同的请求体。你智能体的工具调用 代码无任何改变。
# Your agent's relay call is unchanged. The attached policy is enforced
# at the gateway before any tool call in the response is dispatched.
curl https://api.orcarouter.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o",
    "messages": [{"role": "user", "content": "delete the staging table"}],
    "tools": [{"type": "function", "function": {"name": "db.query"}}]
  }'
如果一条规则在 inbound 执行面上拒绝了一次工具调用,那次调用会作为 HTTP 400 带着 firewall_blocked 码返回,点名工具与原因——参见 拦截的表现形式

5. 解析:绑定的 → 工作区默认值

对于任何一次工具调用,网关按此顺序解析哪条策略适用:
如果发起调用的密钥的 firewall_policy_id 指向一条存在且已启用 的策略,则该策略适用。
否则,工作区已启用的 is_default 策略适用(若设置了一个)。每个 工作区最多只能有一条策略作为默认值;晋级一个新默认值会在同一事务中 降级旧的那个。
既无绑定也无默认值,意味着没有策略。在 观察模式 开启时,该调用被放行并 记录为一个覆盖缺口;在它关闭时,该调用被静默放行。
一条被禁用的绑定策略会回退到工作区默认值——它不会关闭执行。 (这与 防护栏 不同,在 防护栏中一个被禁用的绑定会解析为。)要把一个密钥移出防火墙范围, 请解绑它(把 firewall_policy_id 设为 0),而不要仅仅禁用它的策略。
要把一条策略设为每个未绑定密钥的默认值,请编辑它并将它设为工作区 默认,而不是一个一个地绑定密钥——参见 管理策略

6. 验证它已生效

在依赖它之前,确认该策略以你预期的方式触发:
  • 测试它——沙箱 Test 标签对一个样本工具调用 dry-run 该策略, 并返回判定、匹配到的规则和原因。不派发任何内容,不持久化任何内容。 参见 测试规则
  • 观察事件信息流——一旦该密钥承接实时流量, Events 会显示每一次评估,可按判定、 执行面、工具和运行过滤。
先在 影子模式 背后上线任何执行性 策略:它会完全像在生产中那样进行评估和记录,但把每个执行性判定降级为 audit 并给原因加上前缀 [shadow] would …。一旦事件信息流显示它在你 预期的内容上触发、在你不预期的内容上不触发,就关闭影子模式。

接下来去哪里

编写规则

完整的匹配语言——工具 glob、参数子句、egress 列表、sanitizer。

工具白名单

把一个 deny 默认判定与明确的 allow 规则搭配。

管理策略

默认值、启用/禁用、版本管理以及还原。

为什么零信任

为什么治理动作——而不只是文本——对智能体很重要。
关于一条策略意在阻止的威胁,参见 危险工具调用过度代理