跳转到主要内容
大多数团队都太晚才采用智能体安全,而且一次只配一个平面——这里给提示词加个 正则,那里弄个工具黑名单。结果是一个有漏洞的姿态:从不看到一个 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默认审计;拒绝破坏性 shellPII Shield 仅审计(flag PII)关闭
permissive无执行性策略开启——把每次调用记录为一个缺口
几个值得钉住的具体点,因为它们塑造每个级别实际捕获什么:
tight 把防火墙策略的默认判定盖章为 deny,然后为携带破坏性命令的 shell/exec 工具名叠加 deny 规则——shell.*bashcmdpowershellexec——并为携带 SSRF 的 fetch 形态工具名叠加—— http_fetchweb_searchfetch_urlrequest(以及它们的 <server>.* MCP 命名空间变体)。它拒绝这些工具;它附带一条 CIDR 或云元数据 egress 规则。如果你想按目的地拒绝 169.254.169.254 或 RFC-1918 范围,编写你自己的 egress 规则——参见 Egress 控制
PII ShieldSecrets Blocker 两个防护栏都处于活跃并执行状态。 PII Shield 在请求到达模型之前 mask 请求上的 PII;Secrets Blocker 捕获 请求中的凭据。工具参数中的密钥由这个防护栏在请求上捕获——防火墙默认不 剥除它们。
balanced 审计一切(默认判定 audit),这样你看到你智能体的真实 行为,同时仍然拒绝最具破坏性的那一类——破坏性 shell。PII Shield 以 仅审计模式运行(flag PII,不拦截)。你得到一份完整的追踪,几乎没有一次 意外拦截的风险,然后从可见性而非猜测出发去收紧。
permissive 不执行任何东西——它存在是为了以零意外拦截风险观察一个全新 的智能体。观察模式保持开启,所以每一次工具调用仍被记录为一个覆盖缺口 (在 Discovered Tools 中可见)。用它来了解一个智能体的形态,然后移到 balancedtight

3. 一个具体示例:应用 balanced,观察两个信息流

应用一个级别是一次单一的控制台操作(Firewall → Posture)或一次 API 调用。 该路由在你的会话下运行并需要 Developer+
# Configure in the console, or POST under your session token (Developer+):
POST /api/workspace/firewall/autonomy
Content-Type: application/json

{ "level": "balanced" }
响应携带一个 audit_id——保留它;它是你传给撤销的东西。一旦应用,该 基线在下一次工具调用时上线。无需重新部署,无需修改智能体代码。现在你一次性 观察两个平面:
  • Firewall → Events——每个工具调用判定(audit、被拒绝的破坏性 shell 调用)。参见 事件日志
  • Guardrails → Matches——每次内容策略命中(PII Shield flag)。
因为 balanced 写入一条真实的、可编辑的防火墙策略和一个真实的防护栏 (各自以该级别命名),所以你之后可以打开任何一个并调优它——该基线是一个 起点,而非一个锁定的预设。
在你承诺之前预览。GET /api/workspace/firewall/simulate?level=tight (Member,只读)准确显示 tight 对照你当前状态改变什么——不应用任何 东西。在 balanced 上运行一两天后跑它,以确认 tight 不会拒绝属于你正常 流量一部分的调用。

4. 撤销是一次调用

每一次自治变更都可从它的审计快照逆转,恢复确切的先前状态——策略、规则、 防护栏和设置——而非一次通用重置。
# Developer+; :audit_id is the value returned when you applied the level.
POST /api/workspace/firewall/autonomy/undo/:audit_id
对于一个其快照超过审计日志大小限制的非常大的工作区,应用仍然成功,但该 变更的一键撤销不可用——你改为重新应用你想要的级别。这很罕见,但在你 收紧一个繁忙的生产工作区之前值得知道。

5. 推荐路径

从宽起步,观察,然后从一个可见性的位置去收紧:
1

应用 balanced

完整的审计追踪;只有破坏性 shell 被拒绝;PII 被 flag。正常运行你的智能体 一两天。
2

模拟 tight

GET /api/workspace/firewall/simulate?level=tight 并把它的拒绝与 Events 信息流实际显示的内容比较。如果 fetch 形态或破坏性 shell 调用是你正常 流程的一部分,先修复智能体。
3

应用 tight

一旦模拟没有意外,切换到 tight。如果生产坏了,撤销就在一次调用之外。
4

用规则调优

该基线是你的底线。用 防火墙规则 和命名 防护栏 划出例外或添加它不覆盖的控制。把一条 特定策略或防护栏绑定到一个单独的密钥以获得更细的范围。

6. 组合基线的角色

自治控制项跨越两个平面,但每个操作都是角色门控的。
操作最低角色
模拟一个级别 / 查看防护栏 Matches / 查看 Discovered ToolsMember
查看防火墙 Events 与 RunsDeveloper+
应用一个自治级别Developer+
撤销一次自治变更Developer+
所有配置都在控制台中于你的会话下运行(/api/workspace/firewall/*/api/guardrail/*)。只有 /v1/* 中继调用使用一个 sk-orca-… 密钥; 网关密钥路由是一个独立的范围。参见 范围:密钥、策略、工作区

7. 基线之后:在哪里调优每个平面

该基线让你在头 30 分钟内受保护。从那里起,每个平面都有它自己的参考用于 精度工作:

防火墙概览

判定、执行面、参数谓词、审批——动作平面。

防护栏

keyword、regex、PII、llm_judge 和 grounding 规则——内容平面。

影子模式

在执行之前以仅审计上线一条收紧的防火墙策略。

Secure Agents 基线

自治控制项及其撤销语义的概念页面。
该基线是一次性封闭两个平面的底线;规则是你抬高天花板的方式。关于这些层如何 组合,参见 保护 AI 智能体控制栈;关于这个基线最直接回答的 威胁,参见 过度代理