文章总结: 本文解析GitHubAgenticWorkflows的安全架构,旨在解决CI/CD环境中智能体的运行风险。文章详述四大核心原则:通过分层隔离实现深度防御,利用代理与容器技术确保零凭证暴露,采用分阶段验证限制写入操作,并实施全面日志记录。该架构通过严格约束与隔离机制,有效防止凭证泄露与恶意操作,确保智能体在自动化流程中的安全可控。
综合评分: 88
文章分类: AI安全,安全建设,应用安全
GitHub Agentic Workflows的安全架构揭秘
原创
GitHub
GitHub
安全行者老霍
2026年3月17日 09:00
美国
作者:Landon Cox & Jiaxiao Zhou
发布时间:2026年3月9日
GitHub Agentic Wokfolws基于隔离机制、输出限制和全面日志记录构建。了解我们的威胁模型与安全架构如何帮助团队在 GitHub Actions 中安全运行智能体。
无论您是开源维护者还是企业团队成员,早晨醒来发现文档已修正、新的单元测试完成、重构建议就绪,绝对是“很爽时刻”。但自动化也引发关键担忧:如何为可访问仓库和互联网的智能体设置防护栏?您是否会担心智能体引用了可疑网站的文档,或推送了包含 API 密钥的提交?若某天它决定在每个待办事项添加冗余评论呢?自动化必须可预测才能提供持久价值。
那么在CI/CD等现有自动化流程中添加智能体的最安全方案是什么?智能体具有非确定性:它们必须处理不可信输入、分析仓库状态并在运行时做出决策。允许智能体在CI/CD中脱离实时监督运行虽能扩展软件工程能力,但也需要创新的防护机制来避免引发安全隐患。
GitHub Agentic Workflows 基于 GitHub Actions 运行。默认情况下,动作中的所有内容都在同一信任域中执行。恶意智能体可能干扰 MCP 服务器、访问认证密钥,并向任意主机发起网络请求。若存在漏洞或被注入指令的智能体获得这些资源的无限制访问权限,便可能引发不可预知且不安全的行为。
正因如此,GitHub Agentic Wokfolws将安全性深植于架构设计中。我们将代智能体执行视为 CI/CD 模型的延伸而非独立运行时环境,通过将开放式编写与受控执行分离,将工作流编译为带有明确约束的 GitHub Action,包括权限、输出、可审计性及网络访问等限制。
本文将阐述我们如何从零开始构建安全导向的Agentic Wokfolws,首先从威胁模型及其所需的安全架构切入。
- 威胁模型
Agentic Wokfolws具有两项特性,改变了自动化系统的威胁模型。
首先,智能体能够分析仓库状态并自主行动的能力使其价值非凡,但也意味着它们无法被默认信任–尤其在存在不可信输入时。
其次,GitHub Actions 提供高度开放的执行环境。共享信任域的确定性自动化特性,能实现广泛访问、可组合性和良好性能。但当与不可信智能体结合时,单一信任域在发生故障时可能造成巨大破坏范围。
在此模型下,我们假定智能体可能尝试读写不应访问的内容、通过非预期通道通信,并滥用合法通道执行恶意操作。GitHub Agentic Wokfolws默认采用严格安全模式运行,其设计遵循四大安全原则:深度防御、拒绝向智能体泄露机密凭证、对所有写操作进行分阶段验证,以及全面日志记录。
- 深度防御
GitHub Agentic Workflows 提供分层安全架构,包含底层、配置层和规划层。各层通过强制执行符合其假设的独特安全属性,限制上层故障的影响。
底层基于 GitHub Actions 运行器虚拟机 (VM) 及多个受信任容器,限制智能体可访问的资源。底层架构通过组件隔离、特权操作与系统调用中介机制、内核强制通信边界等措施,即使用户层组件遭入侵并在容器隔离边界内执行任意代码,这些防护机制仍能持续生效。
基底层之上是配置层,包含声明性构件及其解释工具链,用于实例化安全系统结构与连接性。该层决定组件加载顺序、连接方式、通信通道许可及权限分配。连接外部的令牌(如智能体API密钥和GitHub访问令牌)是关键输入项,用于约束组件的外部影响–配置机制控制哪些令牌加载到哪些容器中。
最终的防御层是规划层。配置层决定了哪些组件存在以及它们如何通信,但并不决定哪些组件在时间维度上处于活动状态。规划层的主要职责是创建分阶段的工作流,并在各阶段之间建立明确的数据交换机制。安全输出子系统(下文将详细阐述)是安全规划的核心实践。
- 切勿让智能体接触机密凭证
我们始终坚持workflow agent零接触机密凭证原则。基于GitHub Actions运行的Agentic workflows中,各组件共享运行器虚拟机上的单一信任域。在此模型下,智能体认证令牌和MCP服务器API密钥等敏感信息存储于环境变量和配置文件中,虚拟机内所有进程均可访问。
这种设计存在安全隐患,因为智能体易受提示注入攻击:攻击者可构造恶意网页或仓库问题等输入,诱使智能体泄露敏感信息。例如,被注入提示的智能体若具备shell命令工具访问权限,便能读取配置文件、SSH密钥、Linux /proc状态及工作流日志,从而获取凭证等机密信息。随后可将这些机密上传至网络,或编码嵌入仓库问题、拉取请求、评论等公开可见的GitHub对象中。
我们的首项缓解措施是将智能体隔离在专属容器中,并严格管控其出站通信:通过防火墙限制互联网访问,经可信MCP网关访问MCP服务器,通过API代理调用LLM接口。为限制互联网访问,agentic workflow在智能体与防火墙间创建私有网络。MCP网关运行于独立可信容器中,负责启动MCP服务器并独占访问MCP认证材料。
尽管Claude、Codex和Copilot等智能体必须通过认证通道与LLM通信,但我们避免将认证令牌直接暴露于智能体容器。取而代之的是将LLM认证令牌存放于隔离的API代理中,并配置智能体通过该代理转发模型通信流量。
零机密凭证智能体需在安全与实用性间进行根本性权衡。编码工作负载需要广泛访问编译器、解释器、脚本及仓库状态,但扩展容器内配置将重复现有操作配置逻辑,并增加防火墙必须放行的网络目标集。
为此,我们通过容器卷挂载谨慎暴露主机文件与可执行程序,并在chroot jail、中运行智能体。首先将整个虚拟机主机文件系统以只读方式挂载至/host目录,随后用空的tmpfs层覆盖选定路径,并在以/host为根目录的chroot jail中启动智能体。此方案既保持主机端配置完整,又将智能体的可写入及可发现范围严格限制在其工作所需的边界内。
- 分阶段验证所有写入操作
即便是无法访问密钥的提示注入式智能体,仍可能造成危害。例如恶意智能体可向仓库滥发无意义的问题和拉取请求以压垮维护者,或在仓库对象中植入不当URL及其他内容。
为防范此类行为,agentic workflow编译器将工作流分解为显式阶段,并为每个阶段定义:
- 该阶段的活跃组件及权限(读取 vs. 写入)
- 该阶段输出的数据工件
- 这些工件的合法下游消费者
智能体运行期间,可通过 GitHub MCP 服务器读取 GitHub 状态,并仅能通过安全输出 MCP 服务器暂存更新。智能体退出后,由安全输出 MCP 服务器缓存的写入操作将通过安全输出分析套件进行处理。
首先,安全输出功能允许workflow作者指定智能体可执行的写入操作。作者可选择允许的 GitHub 更新子集,例如创建问题、评论或拉取请求。其次,安全输出限制了允许的更新数量,例如限制智能体在单次运行中最多创建三个拉取请求。第三,安全输出通过分析更新内容移除不良模式,例如通过输出净化移除URL。仅通过完整安全输出管道的工件才能被传递,确保每个阶段的副作用均明确且经过审核。
- 全面日志记录
即便在零机密凭证且写入受控的情况下,智能体仍可能以非预期方式转换仓库数据、调用工具,或试图突破我们设定的限制。智能体程序会不择手段完成任务,其手段之多样令人惊讶。若智能体行为异常,事后分析需全面追溯执行路径。
agentic workflow通过在每个信任边界进行深度日志记录,使可观测性成为架构的核心特性。防火墙层记录网络及目标层级活动,API代理捕获模型请求/响应元数据与认证请求,MCP网关及MCP服务器则记录工具调用。我们还在智能体容器内嵌入内部监控机制,用于审计环境变量访问等潜在敏感操作。这些日志共同支持端到端取证重建、策略验证及异常智能体行为的快速检测。
全面日志记录同时为未来信息流控制奠定基础。所有可观察通信的位置,皆可实施通信中介。Agentic workflow工作流已支持GitHub MCP服务器的锁定模式,未来数月我们将引入更多安全控制措施,基于可见性(公开/私有)及仓库对象作者角色,在MCP服务器间强制执行策略。
Under the hood: Security architecture of GitHub Agentic Workflows
(完)
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:安全行者老霍 GitHub
GitHub《GitHub Agentic Workflows的安全架构揭秘》