Skip to content

当沙箱尝试访问需要你审批的目标地址时,该请求会被拦截,sbx 会记录一条审批请求。 批准它可以为该沙箱放行该目标地址,忽略它则会让该目标地址继续被拦截。无论请求审批 的是本地策略还是组织策略,你的回应方式都一样。

以下情况下请求需要审批:

  • 本地策略:在 Balanced 或 Locked Down 预设下,沙箱访问了没有任何规则允许或拒绝的目标 地址。在 Open 预设下,请求永远不会要求审批,因为 Open 允许所有目标地址。仅在没有 为你强制执行组织策略时才适用。
  • 组织策略:某个网络访问策略允许该目标地址,但要求先获得审批。有关更多细节,请参阅 需要审批的访问。

被拒绝规则匹配的请求会被直接拦截,不会询问。

列出待处理的审批请求 ​

当请求需要审批时,沙箱会收到一条指明目标地址的消息:

plaintext
Approval required for api.example.com.

Review and respond with:
  sbx policy approval ls

列出等待回应的目标地址:

console
$ sbx policy approval ls
APPROVAL                                              SANDBOX      TITLE                 DETAIL                                                                              OPTIONS
network:cWtN-4xUrNjxh4ouezcstgjrky6Rg57QfeRe3WEkyyY   my-sandbox   api.example.com:443   Protocol: TCP Resource type: domain approval required by policy "default network"   allow (Allow), dismiss (Dismiss)

每个条目都指明目标地址、提出请求的沙箱,以及它为什么需要审批。当有组织策略对你强制 执行时,该原因会指明策略,如上所示。在本地策略下,原因是没有任何匹配的允许规则覆盖 该目标地址。被 HTTP 规则匹配的请求还会显示方法和路径,例如 GET api.example.com:443/v1/data。

重复的尝试会合并为一个条目,因此循环重试的沙箱只会留下一个需要回应的请求,而不是 一串重复项。

要查看单个条目的详情,把它的 ID 传给 sbx policy approval inspect:

console
$ sbx policy approval inspect network:cWtN-4xUrNjxh4ouezcstgjrky6Rg57QfeRe3WEkyyY

批准或忽略请求 ​

通过选择条目提供的选项来回应:

console
$ sbx policy approval respond network:cWtN-4xUrNjxh4ouezcstgjrky6Rg57QfeRe3WEkyyY --option allow

选择 allow 会授予对该目标地址的访问权限。选择 dismiss 会让它继续被拦截,并且 沙箱下次尝试访问该目标地址时会再次发起请求。

触发审批的那个请求不会等待你的答复。它会被拒绝,而批准该目标地址会影响后续请求。会 重试失败请求的智能体会在下一次尝试时使用新的访问权限。对于其他工具,请重新运行该 操作。

批准会记录一条允许沙箱实际请求的那个目标地址的规则,其作用域限定为提出请求的沙箱:

  • 该规则覆盖一个目标地址,而不是一个模式。一个带审批地允许 *.example.com 的策略会 分别询问 api.example.com 和 cdn.example.com。
  • 目标地址包含其端口,因此 api.example.com:443 和 api.example.com:8443 会被 分别批准。
  • 其他沙箱访问同一目标地址时会再次询问。

当策略中的某条 HTTP 规则 与请求 匹配时,批准覆盖的是沙箱请求的方法和精确路径,而不是整个目标地址。同一主机上的 GET /v1/data 和 POST /v1/data 会被分别批准。方法或路径无法记录为规则的请求 (例如带百分号编码的路径)会被拦截,不会留下可回应的条目。

查看并移除已批准的目标地址 ​

已批准的目标地址会保持允许,直到你移除对应规则。列出它们:

console
$ sbx policy ls --wide --created-via approval

按规则 ID 移除其中一个,方式与移除其他本地规则相同:

console
$ sbx policy rm network --sandbox my-sandbox --id <RULE_ID>

有关更多细节,请参阅移除规则。