shell.exec
的文本筛查,或从不注意到一个信用卡号在提示词里离开的工具防火墙。
通往一个完整智能体安全基线最快的方式是一次性设置两个平面。OrcaRouter 的
自治控制项——Secure Agents 基线——正是做这件事:一个单一的工作区级别
开关,在一个事务中一起写入一条 防火墙策略 和一个
防护栏,并支持一键撤销。你不必编写一条规则就能
受保护;你挑一个级别,稍后再调优。
这两个平面是互补的,而非冗余的。防护栏筛查提示词/响应的文本(PII、
密钥、越狱和注入意图);防火墙治理一个智能体所采取的动作(哪些工具、
MCP 调用和主机)。任何一个单独都会留下另一个所封闭的缺口——参见
防护栏 vs. 防火墙。
1. 为什么一个基线胜过两个半吊子
一次真实的智能体运行在单个请求中穿过两个平面。模型读取一个提示词(文本)、 决定调用db.query(动作),而该工具的结果反馈进下一个回合(又是文本)。
只保护一个平面会让另一个不设防:
只有防火墙
你拒绝破坏性 shell,但一个提示词仍把一个客户的 SSN 直送给模型——而一个
工具参数仍泄露一个 API 密钥。
只有防护栏
你在提示词中 mask PII,但智能体仍调用
rm -rf、触及一个云元数据端点,
或在一个失控工具上循环。2. 智能体安全基线:三个级别
每个级别都覆盖同样的两个平面。挑一个;它是你的底线,而你稍后用规则增加 精度。| 级别 | 防火墙 | 防护栏 | 观察模式 |
|---|---|---|---|
tight | 默认拒绝;拒绝破坏性 shell + fetch 形态工具 | 执行 PII Shield + Secrets Blocker | 关闭 |
balanced | 默认审计;拒绝破坏性 shell | PII Shield 仅审计(flag PII) | 关闭 |
permissive | 无执行性策略 | 无 | 开启——把每次调用记录为一个缺口 |
`tight` 在动作平面上拒绝什么
`tight` 在动作平面上拒绝什么
tight 把防火墙策略的默认判定盖章为 deny,然后为携带破坏性命令的
shell/exec 工具名叠加 deny 规则——shell.*、bash、cmd、
powershell、exec——并为携带 SSRF 的 fetch 形态工具名叠加——
http_fetch、web_search、fetch_url、request(以及它们的
<server>.* MCP 命名空间变体)。它拒绝这些工具名;它不附带一条
CIDR 或云元数据 egress 规则。如果你想按目的地拒绝 169.254.169.254
或 RFC-1918 范围,编写你自己的 egress 规则——参见
Egress 控制。`tight` 在内容平面上执行什么
`tight` 在内容平面上执行什么
PII Shield 和 Secrets Blocker 两个防护栏都处于活跃并执行状态。
PII Shield 在请求到达模型之前 mask 请求上的 PII;Secrets Blocker 捕获
请求中的凭据。工具参数中的密钥由这个防护栏在请求上捕获——防火墙默认不
剥除它们。
为什么 `balanced` 是推荐的起点
为什么 `balanced` 是推荐的起点
balanced 审计一切(默认判定 audit),这样你看到你智能体的真实
行为,同时仍然拒绝最具破坏性的那一类——破坏性 shell。PII Shield 以
仅审计模式运行(flag PII,不拦截)。你得到一份完整的追踪,几乎没有一次
意外拦截的风险,然后从可见性而非猜测出发去收紧。3. 一个具体示例:应用 balanced,观察两个信息流
应用一个级别是一次单一的控制台操作(Firewall → Posture)或一次 API 调用。
该路由在你的会话下运行并需要 Developer+。
audit_id——保留它;它是你传给撤销的东西。一旦应用,该
基线在下一次工具调用时上线。无需重新部署,无需修改智能体代码。现在你一次性
观察两个平面:
- Firewall → Events——每个工具调用判定(
audit、被拒绝的破坏性 shell 调用)。参见 事件日志。 - Guardrails → Matches——每次内容策略命中(PII Shield flag)。
balanced 写入一条真实的、可编辑的防火墙策略和一个真实的防护栏
(各自以该级别命名),所以你之后可以打开任何一个并调优它——该基线是一个
起点,而非一个锁定的预设。
4. 撤销是一次调用
每一次自治变更都可从它的审计快照逆转,恢复确切的先前状态——策略、规则、 防护栏和设置——而非一次通用重置。5. 推荐路径
从宽起步,观察,然后从一个可见性的位置去收紧:模拟 tight
GET /api/workspace/firewall/simulate?level=tight 并把它的拒绝与 Events
信息流实际显示的内容比较。如果 fetch 形态或破坏性 shell 调用是你正常
流程的一部分,先修复智能体。6. 组合基线的角色
自治控制项跨越两个平面,但每个操作都是角色门控的。| 操作 | 最低角色 |
|---|---|
| 模拟一个级别 / 查看防护栏 Matches / 查看 Discovered Tools | Member |
| 查看防火墙 Events 与 Runs | Developer+ |
| 应用一个自治级别 | Developer+ |
| 撤销一次自治变更 | Developer+ |
/api/workspace/firewall/* 和
/api/guardrail/*)。只有 /v1/* 中继调用使用一个 sk-orca-… 密钥;
网关密钥路由是一个独立的范围。参见
范围:密钥、策略、工作区。
7. 基线之后:在哪里调优每个平面
该基线让你在头 30 分钟内受保护。从那里起,每个平面都有它自己的参考用于 精度工作:防火墙概览
判定、执行面、参数谓词、审批——动作平面。
防护栏
keyword、regex、PII、llm_judge 和 grounding 规则——内容平面。
影子模式
在执行之前以仅审计上线一条收紧的防火墙策略。
Secure Agents 基线
自治控制项及其撤销语义的概念页面。
