本地策略是你——开发者——控制机器上的沙箱可以访问哪些网络目标地址的方式。你从一个预设 开始,它决定了沙箱拥有多少访问权限,然后用 sbx policy 命令允许工作所需的目标地址, 并阻止沙箱不应访问的目标地址。如果沙箱使用某个 Kit,该 Kit 会带来它的智能体所需的 规则,因此你不必自己添加它们。
本地策略只覆盖网络。你在创建沙箱时就已经决定了它挂载哪些主机路径,在注册 MCP 服务器 时就已经决定了它可以使用哪些 MCP 服务器。除非有组织策略对你生效,否则没有任何限制 会约束这些选择。
本地策略的工作方式
沙箱发出的每一个出站 TCP 请求(包括 HTTP 和 SSH)都会经过你宿主机上的一个代理, 它在请求离开你的机器之前会用你的规则检查该请求。一条规则指定一个目标地址,并说明是 允许还是拒绝它。其他协议默认被阻止。UDP 需要 允许出站 UDP中描述的实验特性,而 ICMP 始终 被阻止。
大多数规则匹配主机名,例如 api.github.com,或者 IP 地址或 CIDR 范围。对于 HTTP 流量,规则还可以匹配请求的方法、路径和查询参数,因此你可以允许某个 API 的一部分, 而不必允许它的全部。针对其他 TCP 流量(例如 SSH)的规则可以指定端口,例如 sbx policy allow network "myhost:22"。完整的模式语法,包括通配符,请参阅 网络和 HTTP 规则语法。
从预设开始
本地策略从一个网络预设开始,它决定了在你添加自己的规则之前,沙箱拥有多少网络访问 权限。如果你还没有选择预设,CLI 会在你在交互式终端中运行沙箱时提示你选择一个。如果 已经设置了预设,包括从之前的安装中沿用下来的预设,CLI 会直接使用它而不提示。
| 预设 | CLI 值 | 描述 |
|---|---|---|
| Open | allow-all | 允许所有出站 TCP 流量。等同于添加一条通配允许规则 sbx policy allow network "**"。 |
| Balanced | balanced | 默认拒绝,并带有一份基线允许列表,覆盖 AI 提供商 API、包管理器、操作系统软件包仓库、代码托管平台、容器镜像仓库、云服务和证书校验。 |
| Locked Down | deny-all | 没有基线允许规则。目标地址需要来自你或某个 Kit 的允许规则。 |
Balanced 预设的基线允许列表是大多数工作流的好起点。选择它之后,运行 sbx policy ls 查看它包含哪些规则。
要在不通过提示的情况下设置预设,或之后再次选择,请参阅 设置或重置预设。
添加你自己的规则
预设决定了你的全局规则,它们适用于你机器上的每个沙箱。在预设之外,你可以添加自己的 允许规则和拒绝规则,既可以是全局的,也可以按名称限定到某个沙箱。有关更多细节,请参阅 管理本地网络规则。
使用会添加规则的 Kit
Kit(包括内置的智能体 Kit)可以向使用它们的沙箱添加网络规则,例如智能体所需的 API 端点。有关更多细节,请参阅 使用 Kit。
规则如何组合
在没有组织治理的情况下,你的规则和 Kit 规则会组合:只要有任意一条规则允许某个目标 地址,该目标地址就被允许,而来自任意来源的拒绝规则都优先于允许规则。Kit 规则在任何 预设下都适用,包括 Locked Down,因为预设并不是一条显式的拒绝规则。
没有任何规则匹配的请求如何处理,取决于你的预设。在 Open 下,所有目标地址都被 允许。在 Balanced 和 Locked Down 下,请求会被拦截并向你请求审批,而不是直接 被拒绝,这样你可以在沙箱需要时逐个开放对目标地址的访问。有关更多细节,请参阅 回应审批请求。
当有组织策略对你强制执行时,它会改变你的哪些本地规则适用。有关更多细节,请参阅 组织策略如何与本地规则和 Kit 规则相互关联。
动手试一试
试用本地策略会引导你完成一个示例:为某个沙箱允许和阻止目标地址。