baize白泽明理

安全可信

Agent 出网管控:白名单开多宽才跑得动?

企业实施 Agent 出网管控时,沙箱默认拒绝所有出网流量,再按具体任务配置域名白名单与允许的请求方法。通过拆分依赖安装与任务执行阶段、限制宽域名写入方法并单独拦截私网网段,兼顾运行与防泄漏。

白泽明理

深墨绿底座上一只玻璃沙箱罩住灰色机器人,四周灰色围墙只开一个窄门,几条发光翡翠绿线路穿门连到外面的灰色服务器

做 Agent 出网管控,常见底线是沙箱默认拒掉所有出网流量,再按域名白名单逐项放行。白名单开多宽按单次任务定,不按整个 Agent 笼统放开:先把这次任务要连的模型接口、内部接口、依赖源和存储地址列出来,从空清单起手跑一遍,对照拦截记录补齐;能写死具体子域名就不用通配;代码托管、网盘这类能写又能传的宽域名默认不放,或者只放只读方法;内网私网网段单独写进拒绝清单;白名单改动走安全负责人审批留底,平时再按日志把长期不用的域名收回来。

从左到右四个小模型:装着清单的绿色玻璃沙箱、逐项加绿块的白色清单板、拦住上传箭头只放行眼睛的灰色门洞、印章和剪刀修剪清单,各配中文标注板
图:「Agent 出网管控」|「域名白名单」

先列任务到底要连哪些地址

配出网策略前,先把单次任务要连的外部地址列出来,主要是模型接口、内部业务接口、软件依赖源和存储地址。要是沙箱里接了外部工具服务,服务背后要连的外部地址同样进清单,接入前怎么查见 MCP 安全风险怎么查:接入前先审哪 4 项。

下发配置前先核清平台的规则优先级。有的平台要求域名白名单跟拒绝全部一块配,只配白名单忘了配拒绝全部,白名单不生效,其余流量照样往外跑;有的平台是放行压过拒绝,同一个目标两边都命中时按放行算,动手前得先看明白。

挂了对象存储或网络文件系统的沙箱,改出网策略前要先放开对应的存储地址,否则挂载和读写会断。放行的主机名在连出去前会先解析一次,解析到回环地址、云元数据地址的会被拒掉;私网网段默认不拒,运维要单独把私网网段写进拒绝清单。

白名单从空开始怎么补

要放行的域名往往得来回试几轮才能找全。开发团队可以先在测试环境把任务跑通、把名单试出来,测试环境怎么搭见 Agent 测试环境:接 CRM 前先用模拟数据?。从零补齐域名白名单分三步:

  • 准备和执行分开配:先从源码托管、包管理这类常用依赖预设清单起手,再逐步往回收;装依赖的准备阶段可以配置成开网,进了 Agent 执行阶段默认断网,两段分开配。
  • 看应用层返回补缺:被拒掉的连接在沙箱里有时仍显示连接成功,放没放行要看应用层返回;有的代理拦下请求后会返回明确的拒绝提示,照着拦截记录把漏掉的子域名补进清单。
  • 按任务动态收紧:沙箱建好后策略还能更新,可以配置成按当前任务动态收紧出网范围,能写具体子域名的不用通配子域名。

域名过滤一般只管 HTTP 和 HTTPS,靠 HTTP 的 Host 头和 TLS 握手里的主机名判断;别的端口只能按 IP 或网段过滤,基于 UDP 的协议有的不支持按域名过滤。不走代理的程序直接连不出去。代理默认不解密 HTTPS 内容,只看客户端报的主机名,存在被域前置绕过的可能。

宽域名和写方法为什么要单独卡

沙箱开网有四类风险:网页内容里的提示词注入、代码或密钥外泄、下载恶意或带漏洞的依赖、引入有许可证限制的内容。把公共代码托管站点整站放进白名单,等于允许 Agent 往任意仓库推代码,直接留出数据外泄通道。

管住宽域名和外部凭据,可以配置三道卡子:

  • 请求方法只留只读:只放行需要的域名和 HTTP 方法,可以配置成只放过 GET、HEAD、OPTIONS 这些只读方法,POST、PUT、PATCH、DELETE 这类写方法一律拦下。
  • 真凭据不进沙箱:密钥和令牌不进沙箱,沙箱里只摆占位值,可以配置成出网时由代理把占位值换成真值。
  • 复查输出与日志:定期翻看 Agent 的输出和工作日志,排查异常外发或违规依赖。

白名单谁批与怎么定期收窄

开发团队在测试环境摸清任务所需的域名和 HTTP 方法后,附上用途说明交安全负责人审批。公共代码托管、网盘、通用搜索这类宽域名默认不放行,确实要读公开资料的只批只读方法,批过并留好记录后才推上线。

规则跑起来以后,运维和安全团队要定期拉出放行日志和拦截日志对账,把长期没走过流量的域名和口子过宽的通配规则从域名白名单里删掉,按任务留住最小出网范围。

Agent 出网管控:常见问题

沙箱里调外部接口要用密钥,怎么防 Agent 把密钥发出去?

可以配置成凭据不进沙箱。沙箱内部只摆占位值,Agent 读环境变量也拿不到真密钥;请求发往白名单允许的目标地址时,再由出网代理在边界上把占位值换成真值发出。

为什么沙箱里看连接显示成功,但接口调用还是失败?

被拒掉的连接在沙箱底层看,有时仍显示连接成功。出网代理收到请求后才检查 HTTP 的 Host 头或 TLS 握手主机名,不在名单里就拦断,有的会返回拒绝提示。查错要看应用层返回和代理拦截记录。

域名白名单只放了几个域名,Agent 为什么还是装不上依赖?

常见原因有四个。头一个是依赖源常有多个下载子域名和镜像地址,光放主域名不够,得看拦截记录补进域名白名单;第二个是准备阶段和执行阶段没分开配,装依赖的准备阶段可以配置成用常用依赖预设清单开网,进执行阶段再断网;第三个是有的命令行工具不走代理,在沙箱里直接连不上;第四个是挂了对象存储或网络文件系统的沙箱,改策略前忘了先放行对应存储地址,读写会断。