ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

CubeSandbox网络策略示例:按域名与CIDR精细化控制出口流量

2026/9/16 11:58:09 拓冰建站 浏览量
CubeSandbox网络策略示例:按域名与CIDR精细化控制出口流量 CubeSandbox网络策略示例按域名与CIDR精细化控制出口流量【免费下载链接】CubeSandboxInstant, Concurrent, Secure Lightweight Sandbox for AI Agents.项目地址: https://gitcode.com/GitHub_Trending/cu/CubeSandbox本文带你用CubeSandbox 网络策略快速掌握沙箱出口流量的精细化管控通过CIDR 白名单/黑名单和域名级放行两类规则在 MicroVM 内核层面阻断数据外泄、屏蔽云厂商元数据端点并支持对运行中的沙箱动态更新策略。全部示例代码开箱即用面向新手与普通用户编写。为什么 AI Agent 需要精细化出口控制当 AI Agent 在沙箱里执行不可信代码时最常见的安全隐患是代码可能把敏感数据偷偷传到外部服务器或者探测宿主机/云平台的内部地址。CubeSandbox 的网络策略解决的就是这个问题✅不可绕过策略在 Cubelet 的 TAP 网络设备层eBPF 内核数据路径生效包离开虚拟机的瞬间就已被检查沙箱内任何进程都无法绕过✅粒度灵活支持「完全断网」「CIDR 白名单」「CIDR 黑名单」「域名白名单」四种常见形态✅动态更新无需重建沙箱即可修改策略被收回权限的已有连接会被立即重置而不是放任其继续存活。 完整架构原理可参考官方文档docs/architecture/network.md四种模式速查选对策略只需 30 秒模式关键参数效果典型场景完全断网allow_internet_accessFalse所有公网流量被丢弃纯代码执行、数据处理杜绝数据外泄CIDR 白名单allow_out只允许列出的网段仅访问内部 DNS、对象存储等固定服务CIDR 黑名单deny_out列出网段被丢弃其余放行屏蔽元数据端点保留公网访问域名白名单allow_out中写域名域名解析出的 IP 自动放行CDN、云 API 等 IP 动态变化的服务官方示例目录位于 examples/network-policy/每个模式对应一个独立脚本完全断网network_no_internet.pyCIDR 白名单network_allowlist.pyCIDR 黑名单network_denylist.py动态更新network_dynamic_update.pyCIDR 白名单配置只放行内部服务适合「沙箱只需要访问内部数据库/对象存储其余目的地一律拒绝」的场景。只需在创建沙箱时传入network.allow_outSandbox.create( templatetemplate_id, allow_internet_accessFalse, # 默认拒绝 network{ allow_out: [10.0.0.53/32, 10.0.1.0/24], # 内部 DNS 对象存储子网 }, )运行 network_allowlist.py 后你会看到内部地址可达、外部地址被拦截的验证输出。CIDR 黑名单配置屏蔽元数据与内网管理段Agent 需要上网装依赖但必须挡住「云元数据端点」和「内网管理段」防止横向探测。此时开启公网、写入deny_outSandbox.create( templatetemplate_id, allow_internet_accessTrue, network{ deny_out: [ 169.254.0.0/16, # AWS/GCP/腾讯云元数据段 100.100.100.200/32, # 阿里云元数据端点 10.0.0.0/8, # 内部管理子网 ], }, ) 提示无论策略如何配置CubeVS 都会永远拒绝10.0.0.0/8、127.0.0.0/8、169.254.0.0/16等私有与链路本地地址沙箱天然无法探测宿主机或其他沙箱。域名白名单动态 IP 也能精准放行CDN、云 API 的 IP 经常变化写 CIDR 白名单既不现实也不安全。CubeSandbox 的域名规则通过监听沙箱自己的 DNS 查询来工作你在策略中放行某个域名支持精确匹配与*.example.com通配子域沙箱发起 DNS 查询时eBPF 程序记录该查询响应返回时解析出的 IP 被自动写入 CIDR 白名单并带上 TTL 过期时间过期后由后台清理协程自动回收全程零人工维护。sandbox.update_network( network{ allow_out: [api.openai.com, *.cdn.example.com], allow_internet_access: False, } )⚠️ 注意域名放行依赖「默认拒绝」前提即allow_internet_accessFalse否则公网全通、白名单就失去意义了。动态更新运行中沙箱的策略收权限即刻生效Agent 任务往往「先收紧、中途再授权」。CubeSandbox 提供sandbox.update_network()Node 端为updateNetworkGo 端为UpdateNetwork原地替换运行中沙箱的出口策略不丢失文件系统与进程状态。两个关键特性值得记住是替换不是补丁没写的键会被清空update_network(network{allow_internet_access: False})等于收回一切权限⚡能打到已建立的连接新策略不再允许的存量连接会被主动 RST而不是苟活到对端关闭——这正是「权限回收真正生效」的含义。此外L7 规则如按 SNI 拦截某主机、注入请求头也可以在运行中途开启详见 network_dynamic_update.py。三步上手从零跑通第一个网络策略示例第 1 步创建模板cubemastercli tpl create-from-image \ --image cube-sandbox-int.tencentcloudcr.com/cube-sandbox/sandbox-code:latest \ --writable-layer-size 1G \ --expose-port 49999 --expose-port 49983 \ --probe 49999第 2 步配置环境变量或复制.env.example为.envexport E2B_API_KEYe2b_000000 export E2B_API_URLhttp://your-node-ip:3000 export CUBE_TEMPLATE_IDtemplate-id第 3 步运行示例pip install -r examples/network-policy/requirements.txt python examples/network-policy/network_allowlist.py # 白名单 python examples/network-policy/network_denylist.py # 黑名单 python examples/network-policy/network_dynamic_update.py # 动态更新完整步骤与预期输出见 examples/network-policy/README.md。常见问题排查现象可能原因解决办法无法访问预期地址白名单 CIDR 未覆盖目标 IP核对 CIDR 是否包含目标元数据端点仍可访问黑名单缺项在deny_out加入169.254.0.0/16update_network返回 409沙箱处于暂停态先恢复沙箱再更新更新后域名解析失败域名全被移除隐式 DNS 放行也一并撤回保留至少一个域名目标或把解析器 IP 加入allow_out核心资料索引网络策略示例总览examples/network-policy/README.md网络架构深度文档docs/architecture/network.md网络虚拟化源码eBPF Go 控制面CubeNet/cubevs/域名策略解析 BPF 实现CubeNet/src/dns_query.h系统整体架构图docs/assets/cube-sandbox-arch.png【免费下载链接】CubeSandboxInstant, Concurrent, Secure Lightweight Sandbox for AI Agents.项目地址: https://gitcode.com/GitHub_Trending/cu/CubeSandbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考