出口流量与网络访问控制
用于注入凭据的同一个proxy_config 也控制着沙盒可以访问哪些目标地址。
默认出口策略
默认情况下(未配置access_control):
- 允许到任何主机的 HTTP 和 HTTPS(端口 80 和 443)。 出站 HTTP(S) 请求会被透明地通过代理路由,您的
rules和callbacks在此过程中注入凭据。 - 所有其他原始 TCP 流量被阻止。 除非您明确允许,否则到非 HTTP 端口的连接——数据库(5432 端口的
psql/dbt)、SSH (22)、Redis (6379) 等——将被丢弃。
access_control 按主机和端口开放。
允许列表和拒绝列表
在proxy_config 中添加一个 access_control 对象,使用仅 allow_list 或 deny_list 之一(不能同时设置两者——如果同时设置,请求将被拒绝):
原始 TCP 出口(例如 5432 端口的 PostgreSQL)只能通过指定了明确非 HTTP 端口(
host:PORT)的 allow_list 条目来启用。默认策略和 deny_list 模式仅允许 HTTP/HTTPS。模式语法
每个allow_list/deny_list 条目使用以下形式:
连接数据库(原始 TCP)
要让沙盒代码通过psql、dbt 或任何驱动程序访问外部 PostgreSQL 数据库,请将主机及其端口添加到允许列表。因为 allow_list 默认拒绝,所以还需要列出沙盒需要的任何 HTTP(S) 主机:
db.example.com:5432 的连接在 TCP 层透传,不会被拦截,因此 PostgreSQL 线路协议——以及 TLS、主机密钥检查和其上的任何其他端到端协议——可以正常工作。
通过 SDK 配置
配置认证代理规则
在创建沙盒时添加proxy_config,或者通过修补现有沙盒的 proxy_config 来更新。每条规则指定:
头类型
每个头都有一个type,控制其值的存储和显示方式:
认证 AWS 请求
当沙盒代码需要使用 AWS SDK 或 CLI 调用 AWS 服务时,请使用 AWS 认证规则。代理将真正的 AWS 凭据保留在沙盒外部,然后使用 AWS SigV4 对支持的出站 HTTPS 请求进行签名。 当代理代码需要检查 S3 对象、调用 Bedrock 或使用另一个支持的 AWS HTTPS 端点,而又不想在沙盒文件、环境变量、shell 历史记录或日志中暴露长期有效的 AWS 访问密钥时,这非常有用。沙盒会收到兼容性 AWS 凭据占位符,以便 SDK 凭据检测正常工作,而代理则使用配置的凭据对出站请求进行签名。 AWS 认证规则与头注入规则不同:- 将
type设置为aws。 - 将凭据放在
aws对象下。 - 不要设置
match_hosts、match_paths或headers;AWS 主机匹配内置于代理中。 - 每个沙盒最多配置一个 AWS 认证规则。
通过 SDK 配置 AWS 认证
AWS 认证代理规则目前支持访问密钥 ID 和秘密访问密钥凭据。它们不包括会话令牌或角色代入配置。
认证 GCP 请求
当沙盒代码需要使用 Google SDK 或 CLI 调用 Google API 时,请使用 GCP 认证规则。代理将服务账号 JSON 保留在沙盒外部,然后对沙盒代理匹配的 Google API 主机的受支持出站 HTTPS 请求进行身份验证。 当代理代码需要检查 GCS 对象或调用另一个 Google API,而又不想在沙盒文件、环境变量、shell 历史记录或日志中暴露服务账号 JSON 时,这非常有用。沙盒会收到兼容性凭据,以便 SDK 凭据检测正常工作,而代理则使用配置的服务账号对出站请求进行身份验证。 GCP 认证规则与头注入规则不同:- 将
type设置为gcp。 - 将凭据放在
gcp.service_account_json下。 - 将
gcp.scopes设置为非空的 OAuth 作用域列表。 - 代理会自动匹配 Google API 主机,并使用配置的服务账号对这些请求进行身份验证。
- 每个沙盒最多配置一个启用的 GCP 认证规则。
gcp_auth 和 gcpAuth 辅助函数会构建相同形状的规则。
通过 SDK 配置 GCP 认证
单个 API 示例
创建一个自动将 OpenAI API 密钥注入出站请求的沙盒:多个 API 示例
添加多条规则以同时对多个服务进行身份验证:GitHub 示例
Open SWE 通过在沙盒外部生成一个短期的 GitHub App 安装令牌,然后使用写入专用的opaque 代理规则修补沙盒,来对 GitHub 访问进行身份验证。这使短期的 GitHub 访问令牌不会出现在沙盒文件系统中,也不会出现在部署环境变量中。
配置两条规则:
Python
configure_github_proxy。GitHub App 安装令牌会过期,因此每当您为新的运行重用沙盒时,请刷新代理配置。
在沙盒内部,当 CLI 在发送请求前需要本地凭据时,设置一个非保密的占位符令牌:
gh CLI 的本地检查。代理会将真实的 Authorization 头注入到出站请求中。
通过 SDK 配置
回调凭据示例
静态workspace_secret 规则在应用代理配置时从您的工作区拉取凭据,而 opaque 规则允许您的应用程序修补短期凭据,例如 GitHub 令牌示例。对于必须由您自己的服务在代理时解析的凭据,请使用回调。代理会向您提供的 URL 发送 POST 请求,您的端点返回要注入的头,代理缓存结果。
回调与 proxy_config 下的规则一起配置:
静态规则优先。 如果
rules 中的任何规则匹配该主机,则会跳过该主机的回调。在规则中,首次匹配优先;如果多个回调匹配,规则之间也适用此规则。
回调契约
每当代理需要解析缓存未命中(cache miss)的匹配主机的凭据时,会发出以下请求:2xx 响应,并包含 JSON 主体:
ttl_seconds 秒。任何非 2xx 响应、传输错误或格式错误的 JSON 都会导致失败关闭(fail closed):沙盒的请求会被拒绝,并返回 502 callback resolution failed(不注入头,不缓存响应)。
示例
当您的 OAuth 令牌由您自己的服务按需生成时,请使用回调:通过 SDK 配置
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

