Agent Substrate egress代理与SD Mint:Actor如何零信任安全访问互联网完整指南

发布时间:2026/9/21 15:33:09
Agent Substrate egress代理与SD Mint:Actor如何零信任安全访问互联网完整指南 Agent Substrate egress代理与SD MintActor如何零信任安全访问互联网完整指南【免费下载链接】substrateAgent Substrate: the core system项目地址: https://gitcode.com/GitHub_Trending/substrate7/substrate在 Agent Substrate 这个面向 AI Agent 的大规模沙箱运行时中egress 代理出口流量代理与 SD Mint 证书即时签发机制是保证每个 Actor 安全访问互联网的两大核心防线。本文将用大白话讲清楚Actor 的出站流量如何被透明拦截、如何凭证书证明身份、又如何通过 EgressPolicy 与 MITM 拦截精确控制能访问什么。为什么 Actor 需要出口代理Agent Substrate 把大量Actor如 AI Agent 应用高密度地复用到少数物理 Pod 上沙箱技术包括 gVisor 和 microVM。这些 Actor 绝大多数时间不可信它们可能执行任意代码、可能携带恶意指令。如果让它们自由直连互联网就意味着无法审计不知道 Actor 访问了谁、发了什么身份冒充外部服务无法知道请求来自哪个 Actor策略失控无法阻止 Actor 访问内网敏感地址或外泄数据。因此 Substrate 定下了一条硬性契约Actor 的所有出站流量TCP/UDP 目的端口 53 的 DNS 除外必须经过 egress 策略执行点PEP。详见 docs/network-egress.md。流量如何被透明拦截从沙箱到网关整个过程对 Actor 完全透明共四步拦截Worker Pod 内用 nftables 把 Actor 的 TCP 出站流量重定向到节点上的atunnel组件加密隧道atunnel与 egress 网关atenet-egress之间建立 mTLS 双向认证隧道并发送一条 HTTP/1.1CONNECT请求其中只携带原始目的 IP:端口身份验证网关验证atunnel出示的 Actor 专属客户端证书并向 ATE API 确认该 Actor 真实存在且正在运行策略裁决按该 Actor 的EgressPolicy决定放行、拒绝或进一步处理然后才把流量转发到真正的上游。这套信任边界非常严格网关绝不信任 Actor 自己声称的任何信息比如 Actor 在请求头里写的 Host只信任 Substrate 管控通道里携带的信息——证书和atunnel构造的 CONNECT 请求。Actor 沙箱(不可信) → nftables 重定向 → atunnel(mTLS隧道) → atenet-egress(验身份策略) → 授权的上游用证书证明身份ActorIdentity 扩展Actor 激活时atunnel会生成私钥并向 Substrate 申请一张短期客户端证书。这张证书由 Actor Identity CA 签发包含 atespace、Actor 名称、UID携带一个专门的ActorIdentityX.509 扩展标注用途为atunnel网关必须校验证书链、有效期并向 ate-api-server 二次确认这个 UID 对应的 Actor 此刻真实且正在运行。这意味着证书无法在 Actor 被删除重建后继续冒充它——UID 对不上就直接拒绝。持有普通 Pod 身份但没有 Actor 证书的客户端连 TLS 握手都过不去。EgressPolicy默认拒绝的目的地白名单即使身份合法Actor 默认不能访问任何地方——没有策略就没有隧道。管理员可以为 Actor 配置EgressPolicy规则按顺序匹配、首条命中生效常见两类规则规则类型匹配维度适用场景hostnames按域名模式需能读到内层请求的 Host只允许访问 api.example.comcidrs/all按 IP 网段在 CONNECT 阶段裁决允许访问整个 CIDR 或全部地址对于网关能直接读到的明文 HTTP 请求策略是逐请求裁决对于它解不开的加密流量则在 CONNECT 建连时按地址裁决。策略缓存 TTL 默认 10 秒删除策略后新请求立即变成拒绝。策略编译与求值逻辑见 internal/egresspolicy/egresspolicy.go。SD Mint如何连 HTTPS 也能逐请求检查普通网关面对 Actor 的 HTTPS 流量时只能看到加密字节只能按地址放行。如果想对 HTTPS逐请求执行策略比如检查 Host、未来注入凭证就需要网关看懂内层明文——这就是SD Mint的作用。SD Mint 是atenet内建的一个即时签发证书的 SDS 服务源码见 cmd/atenet/internal/sdsmint/包定义在 doc.go终止 TLSsdsmint 安装下的 egress 网关终结 Actor 打开的每个 TLS 连接按 SNI 即时制证针对每次连接请求的域名SNI网关用自己的 MITM CA 现场签发一张短期叶证书默认 TTL 15 分钟核心实现见 minter.go重发起连接网关验证该证书合法后再以真实域名作为 SNI 向上游重新建立 TLS并校验上游证书逐请求裁决解密后的明文进入egress_tls_mitm检查链按 Host 对所有策略规则逐请求求值。由于 Actor 看到的是网关签发的证书而非上游真证书Actor 的信任配置必须指向网关 CA。Substrate 的做法是通过systemInfo卷把网关 CAtrustBundle: egress-mitm.ate.dev投射到沙箱文件系统如/run/ate/trust-bundle.pem再配合SSL_CERT_FILE/SSL_CERT_DIR等环境变量让运行时只信任这张 CA。完整的配置指南在 docs/egress-trust-bundle.md三种检查链egress/egress_cleartext/egress_tls_mitm的分工说明见 cmd/atenet/internal/router/README.md。⚠️ 注意sdsmint 是实验特性安装时加--experimental-use-sdsmint对应清单 manifests/ate-install/atenet-egress-with-sdsmint.yaml。在非 sdsmint 环境配置信任包会直接让 Actor 起不来——因为没有任何东西会向它出示由网关 CA 签发的证书。快速上手跑通 egress 演示仓库提供了一个端到端演示展示透明隧道 身份认证 策略放行的完整闭环支持 Envoy默认或 agentgateway 两种数据面。步骤概要装系统./hack/install-ate-kind.sh --deploy-ate-system可选--atenet-dataplaneagentgateway部署演示./hack/install-ate.sh --deploy-demo-egress再kubectl ate create actor egress-demo -a ate-demo-egress --template egress跑自动化测试./demos/egress/test-egress.sh—— 它会验证正例真实 Actor 经网关成功请求目标服务看到的客户端 IP 正是网关与反例无 Actor 证书的 Pod 无法建立隧道观察日志Envoy 的[egress]访问日志会记录 CONNECT 目标与已验证的 Actor 证书 SAN。完整操作手册含 MITM 变体 egress-mitm.yaml.tmpl见 demos/egress/README.md。小结三层防线一张信任链层面机制解决的问题身份Actor 专属短期证书 ActorIdentity扩展 API 复核请求方是谁且无法冒充策略默认拒绝的EgressPolicy按序首条命中请求能去哪可见性SD Mint 按 SNI 即时签发 信任包投射连 HTTPS 也能逐请求审计三层叠加构成Actor 不可信、平台全托管的零信任出口Actor 只需像平时一样发起连接安全裁决全部发生在它看不见的可信通道里。延伸阅读出口流量契约传输、信任边界、服务端 TLSdocs/network-egress.mdMITM 信任包配置指南docs/egress-trust-bundle.md威胁模型与信任边界docs/threat-model.md术语表Actor、atenet、atunnel 等docs/glossary.md网关 egress 处理链源码cmd/atenet/internal/router/README.md【免费下载链接】substrateAgent Substrate: the core system项目地址: https://gitcode.com/GitHub_Trending/substrate7/substrate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考