shell.exec 的
deny、一个 egress 白名单——而且你相信它是对的。但把它对照生产智能体
流量切换上线是一次信仰之跃:一条过宽的规则,你就会拦下你的智能体正当
发出的调用。
防火墙影子模式就是那个安全上线开关。它是一个逐策略的标志,告诉网关
完全像在生产中那样评估该策略、记录一切,但不拦截任何东西。每个执行性
判定都被降级为 audit,事件原因前缀为 [shadow] would …,这样你就能
精确读出该策略本来会做什么——而它还什么都没做。
影子模式是一个策略上的标志,在控制台中设置(或通过
/api/workspace/firewall/policies 管理路由,它们使用你的会话 / 访问
令牌——而非一个中继 sk-orca-… 密钥)。切换它是一个 Developer+
操作。你智能体的 /v1/* 中继调用不改变。1. 防火墙影子模式做什么
当一条策略的shadow_mode 标志开启时,网关运行完整的评估——解析策略、
按优先级顺序遍历规则、挑选一个判定——然后,就在判定生效之前,降级任何
本来会改变该调用的东西:
| 解析出的判定 | 在影子模式下 |
|---|---|
deny | → audit,原因 [shadow] would deny — … |
sanitize | → audit,原因 [shadow] would sanitize — … |
pending_approval | → audit,原因 [shadow] would pending_approval — … |
allow / audit | 不变(已是非拦截性的) |
2. 一次具体的上线
假设你有一条策略prod-agents,带有一条针对破坏性 shell 命令的 deny
规则,而你想确认它不会在任何正当的东西上触发。
打开影子模式
在 Security → Firewall → Policies 中,打开
prod-agents,把
Shadow mode 切换为开启并保存。该策略保留它的绑定和它的规则——它
只是停止执行。读取本来会发生的拒绝
打开 Events 并按
[shadow] 原因
过滤。每一行显示工具、执行面、运行以及匹配到的规则——所以一次
shell.exec 调用上的 [shadow] would deny — destructive shell command
正是你在生产中会看到的,只是少了 HTTP 400。关闭影子模式
一旦信息流显示该策略在你预期的内容上触发、在你不预期的内容上不
触发,就把 Shadow mode 切换为关闭。从下一次调用起,那些
[shadow] would deny 事件就变成真实的
firewall_blocked 拒绝。deny
规则——那就在仍处于影子模式时修复该规则(收紧
glob 或添加一个
参数子句),再次观察信息流。
你对照真实流量迭代,杀伤半径为零。
3. 影子模式不软化什么
影子模式是对该策略的预览,而非一个主关闭开关。 还有几个值得了解的边界:allow 和 audit 判定不受触动
allow 和 audit 判定不受触动
只有执行性判定(
deny、sanitize、pending_approval)被降级。一个
allow 或 audit 已经放行该调用,所以没有东西可软化——那些事件仍
携带影子徽标,这样你就能分辨它们被记录时该策略处于影子。cap_cost 在降级之前解析
cap_cost 在降级之前解析
一条
cap_cost 规则会基于该运行累积
的花费解析为一个具体的 allow 或 deny,而影子模式随后降级的就是
那个解析出的判定——一次本来会触发上限的拒绝会像其他任何一样显示为
[shadow] would deny。它是逐策略的,而非逐工作区
它是逐策略的,而非逐工作区
影子模式独立地存在于每条策略上。你可以让一条全新的策略处于影子,同时
一条久经考验的策略继续执行——没有一个工作区范围的影子开关让你忘了
关掉。
4. 影子模式 vs. 其他上线旋钮
防火墙给你三个不同的”先别破坏任何东西”的控制项。它们解决不同的问题:| 控制项 | 范围 | 它回答的问题 |
|---|---|---|
| 影子模式 | 单条策略 | ”如果我执行这条策略,它会拦截什么?“ |
audit 默认判定 | 单条策略 | ”记录任何规则都没点名的一切,不拦截任何东西。“ |
| 观察模式 | 工作区 | ”哪些工具在运行时没有任何策略覆盖它们?” |
audit 的
默认判定
针对的是一条策略中未匹配的尾部;观察模式则是关于工作区范围内的覆盖
缺口,而非某条特定策略的执行。
你可以把它们叠加。一条处于影子模式的新默认拒绝策略是可能最温和的上线:
即便是默认拒绝底线也只记录
[shadow] would deny 而非拦截,所以你在拒绝
上线之前就能看到你的 allow 规则尚未覆盖的全部调用集合。5. 合规包先落入影子
当你以观察(非执行)模式 安装一个合规包 时,它物化出的防火墙 策略会以影子模式开启创建——它们对照你的流量评估和记录而不拦截任何 东西。把该包晋级为执行会把那些策略切出影子。同样的机制,为你应用: dry-run 这些控制,读取本来会发生的判定,然后执行。6. 切换它
在控制台中,影子模式是策略编辑器上的一个切换开关。同一个标志在管理 API 上作为策略对象上的shadow_mode 暴露——这些路由使用你的会话 / 访问
令牌并需要 Developer+:
| 方法与路径 | 角色 | 说明 |
|---|---|---|
PUT /api/workspace/firewall/policies | Developer+ | 在请求体中对该策略设置 shadow_mode: true / false。 |
GET /api/workspace/firewall/policies/:id | Member | 读取一条策略当前的 shadow_mode 状态。 |
version 整数,所以打开和关闭影子本身也被追踪。
接下来去哪里
创建并绑定一条策略
影子模式上线的两步设置——创建策略,绑定一个密钥。
事件日志
[shadow] would … 出现的地方——过滤、钻取到运行和规则。判定
影子模式降级的执行性判定,以及每一个在实时下做什么。
执行模式
影子、审计和观察如何契合更广的执行模型。
