当沙箱尝试访问需要你审批的目标地址时,该请求会被拦截,sbx 会记录一条审批请求。 批准它可以为该沙箱放行该目标地址,忽略它则会让该目标地址继续被拦截。无论请求审批 的是本地策略还是组织策略,你的回应方式都一样。
以下情况下请求需要审批:
- 本地策略:在 Balanced 或 Locked Down 预设下,沙箱访问了没有任何规则允许或拒绝的目标 地址。在 Open 预设下,请求永远不会要求审批,因为 Open 允许所有目标地址。仅在没有 为你强制执行组织策略时才适用。
- 组织策略:某个网络访问策略允许该目标地址,但要求先获得审批。有关更多细节,请参阅 需要审批的访问。
被拒绝规则匹配的请求会被直接拦截,不会询问。
列出待处理的审批请求
当请求需要审批时,沙箱会收到一条指明目标地址的消息:
Approval required for api.example.com.
Review and respond with:
sbx policy approval ls列出等待回应的目标地址:
$ 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:
$ sbx policy approval inspect network:cWtN-4xUrNjxh4ouezcstgjrky6Rg57QfeRe3WEkyyY批准或忽略请求
通过选择条目提供的选项来回应:
$ 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 会被分别批准。方法或路径无法记录为规则的请求 (例如带百分号编码的路径)会被拦截,不会留下可回应的条目。
查看并移除已批准的目标地址
已批准的目标地址会保持允许,直到你移除对应规则。列出它们:
$ sbx policy ls --wide --created-via approval按规则 ID 移除其中一个,方式与移除其他本地规则相同:
$ sbx policy rm network --sandbox my-sandbox --id <RULE_ID>有关更多细节,请参阅移除规则。