Skip to content

网络访问策略是控制沙箱出站连接的组织策略。当对某位开发者强制执行组织策略时,他们的沙箱 只能访问你的网络规则所允许的目标地址。每条策略包含一条或多条规则,用于允许工作流所需的 主机、IP 范围和端口,或者阻止应当保持不可用的目标地址。规则还可以匹配请求的 HTTP 方法、 路径和查询参数,因此策略可以允许 API 的一部分,而不必允许整个 API。

开发者也可以在自己的机器上用本地策略添加网络规则,但在 强制执行组织策略的情况下,只有你的允许规则才会授予访问权限。更多细节请参阅 组织策略如何与本地规则和 Kit 规则相互关联。

对于希望由人确认的目标地址,策略可以要求审批,而不是直接授予访问权限。本页说明规则可以 匹配什么、审批如何工作,以及你的更改何时到达开发者。要创建网络访问策略,请参阅 创建和管理组织策略。

网络规则可以匹配什么 ​

每条规则都有一个可选的 Rule name、一个决定规则匹配什么的 Type,以及值为 Allow 或 Deny 的 Decision。类型要么是覆盖整个目标地址的 All traffic, 要么是覆盖对某一个目标地址的特定请求的 HTTP。

All traffic 规则 ​

All traffic 规则匹配对你列出的目标地址发起的每个请求,不限端口、方法和路径。

  • 在 Protocols 下,选择 TCP、UDP 或 Both。
  • 在 Destinations 下,添加该规则覆盖的主机、IP 地址或 CIDR 范围。除非你指定端口 (例如 example.com:8080),否则目标地址匹配任意端口。

HTTP 规则 ​

HTTP 规则只匹配方法、路径和查询参数符合你指定的 HTTP 请求。

  • 在 Destination 中,输入该规则覆盖的主机或 IP 地址。除非你指定端口,否则它匹配 任意端口。输入目标地址时不要带协议和路径,例如写 api.github.com,而不是 https://api.github.com/repos。
  • 在 HTTP methods 下,选择该规则适用的方法。用 Select all 选择所有方法,或用 Read-only 选择 GET、HEAD 和 OPTIONS。至少要选择一种方法。未选择任何方法的 规则无法通过校验。配置界面不会列出 CONNECT 或 TRACE,这与 CLI 不同,CLI 中的 --method ANY 匹配所有 HTTP 方法。
  • 在 Path patterns 下,添加该规则覆盖的一个或多个路径,例如 /repos/* 和 /v1/**。留空表示匹配任意路径。
  • 在 Query parameters 下,为请求必须包含的每个参数添加一条 name=value 条目,例如 ref=Release*。每条条目后按 Enter,或用 & 分隔各条目。只有包含全部条目的请求才会 匹配。留空表示匹配任意查询字符串。这些条目适用于该规则中的每个路径模式。

HTTP 规则的所有路径都属于它唯一的那个目标地址,因此要覆盖第二个主机上的路径,请添加 第二条规则。有关路径模式与查询参数的语法,以及 HTTP 规则如何与 All traffic 规则 组合,请参阅 HTTP 规则。

需要审批的访问 ​

网络访问策略可以要求审批,而不是直接授予访问权限。策略允许的目标地址在开发者确认之前 无法访问,这样既能让允许列表保持足够宽泛、便于使用,又能在智能体访问每个目标地址时 安排一个人把关。要在创建或编辑策略时开启该功能,请参阅 创建和管理组织策略。

在组织策略中,审批是策略本身的属性,而不是单条规则的属性,因此开启后它会应用于该策略 中的每一条允许规则。只有当没有任何允许该目标地址的策略要求审批时,该目标地址才会保持 可直接访问。如果某个要求审批的策略也匹配该请求,那么无论其他策略允许什么,该请求都 需要审批。

请求的处理方式如下:

mermaid
flowchart TD
  request["沙箱发出出站请求"] --> denied{"是否有任何拒绝规则匹配?"}
  denied -->|"是,来自任何来源"| block["阻止请求"]
  denied -->|"否"| orgallow{"是否有组织策略允许它?"}
  orgallow -->|"否"| block
  orgallow -->|"是"| needs{"是否有允许它的策略要求审批?"}
  needs -->|"否"| allow["允许请求"]
  needs -->|"是"| approved{"开发者此前是否已批准该目标地址?"}
  approved -->|"是"| allow
  approved -->|"否"| ask["阻止请求并要求开发者批准"]
  ask -.->|"批准后的后续请求"| allow

只有开发者此前已经批准过的目标地址才能满足该要求。预设规则、Kit 规则以及开发者用 sbx policy allow network 添加的规则都不满足它。审批也无法访问组织完全不允许的目标 地址,也无法覆盖拒绝规则。要撤销某个目标地址,请添加拒绝规则,它的优先级高于任何已 记录的审批。

开发者在命令行中响应审批请求。有关他们看到什么以及如何响应,请参阅 响应审批请求。

更改何时生效 ​

网络策略会在每个出站请求上进行评估。一旦策略更改 同步到开发者的机器,它就会立即适用于 后续请求。

审批要求从策略更改同步的那一刻起生效。开发者已经批准过的目标地址仍可访问,因为审批 记录保存在开发者的机器上。