内容提要
Docker Sandboxes的balanced网络策略默认拒绝多数流量,仅放行197条开发常用域名规则,拦截宿主机localhost、局域网、云metadata端点及遥测域名。排查用`sbx policy log`,放行用`sbx policy allow network --sandbox`,改动即时生效。建议按需精确放行,避免全局开放。
延伸解读
balanced 策略的默认拒绝范围
balanced 并非“基本全开”,而是默认拒绝多数流量,仅放行 197 条开发常用域名规则。除了 example.com 这类陌生站点,宿主机 localhost、局域网私有地址、云平台 metadata 端点(169.254.169.254)以及 VS Code 和 Microsoft 的遥测域名默认都被拦截。这意味着容器内进程无法访问宿主机服务或云元数据,有助于防止凭证窃取等风险。
DNS 层与连接层的双重拦截
balanced 策略不仅在 HTTP 代理层拦截,还会在 DNS 解析阶段直接阻断。同一域名可能同时出现两条日志:一条是连接被 403,另一条是 DNS 查询被拒。因此,排查时需注意请求可能因 DNS 解析失败而无法发起,而不仅仅是连接被拒。使用 `sbx policy check` 可在不实际发起请求的情况下预判域名是否被放行。
按需精确放行,避免全局开放
放行例外时,建议使用 `--sandbox` 参数仅对特定 sandbox 生效,而非全局放行。这样既能满足单个 sandbox 的访问需求,又不会扩大所有 sandbox 的攻击面。改动即时生效,无需重启。同时,注意 kit 可能额外添加规则,实际生效的规则集合可能比全局策略更宽,排查时需一并考虑。
Q&A
Docker Sandboxes 的 balanced 网络策略默认会拦截哪些流量?
balanced 策略默认拒绝多数流量,仅放行 197 条开发常用域名规则,包括模型 API、包管理器(如 PyPI、npm)、代码托管(如 GitHub)和容器 Registry。它默认拦截宿主机 localhost、局域网私有地址、云平台 metadata 端点(如 169.254.169.254)以及 VS Code 和 Microsoft 的遥测域名。
如何查看某个 sandbox 的网络请求被拦截的日志?
使用 `sbx policy log` 命令,它会按 sandbox 分组列出被拦截和放行的请求,包括代理类型、命中次数和原因。例如,可以看到某个域名在 HTTP 层被 403,或在 DNS 层被阻止。
如何为单个 sandbox 添加一条网络放行规则?
使用命令 `sbx policy allow network --sandbox <sandbox-name> <host>`,例如 `sbx policy allow network --sandbox my-sandbox example.com`。规则添加后立即生效,无需重启 sandbox。
如何在不实际发起请求的情况下检查某个域名是否被放行?
使用 `sbx policy check network <domain>` 命令,它会直接返回该域名是否被允许,例如 `sbx policy check network api.anthropic.com` 会显示 Allowed。
balanced 策略默认拒绝云平台 metadata 端点(169.254.169.254)有什么安全意义?
云平台 metadata 端点(169.254.169.254)通常包含实例的凭证和配置信息,容器内进程访问它可能尝试窃取敏感信息。balanced 默认拒绝该地址,有助于防止恶意或意外访问,增强安全性。
如何撤销一条针对特定 sandbox 的网络放行规则?
使用命令 `sbx policy rm network --sandbox <sandbox-name> --resource <host>`,例如 `sbx policy rm network --sandbox my-sandbox --resource example.com`。
为什么同一个域名在 sbx policy log 中会出现两条记录?
因为 balanced 策略在 HTTP 代理层和 DNS 层都可能拦截。如果 DNS 解析被阻止,会显示一条 DNS lookup blocked;如果连接被拒绝,会显示一条 No matching allow rule。所以同一个域名可能同时出现两条记录。
除了全局策略,还有哪些因素会影响 sandbox 的实际网络放行规则?
除了全局 local-policy,sandbox 可能还会应用来自 kit 的额外规则。例如,OpenCode 的 sandbox 模板会声明自己的 allow 规则,这些规则可能比全局策略更宽。因此,排查问题时需要同时检查全局策略和 kit 规则。