当前位置: 首页 > article >正文

技术速递|底层机制:GitHub Agentic Workflows 的安全架构

作者Landon Cox Jiaxiao Zhou排版Alan WangGitHub Agentic Workflows 构建于隔离、受限输出以及全面日志记录之上。了解我们的威胁模型和安全架构如何帮助团队在 GitHub Actions 中安全运行智能体。无论你是开源维护者还是企业团队的一员早上醒来看到文档修复、新的单元测试以及重构建议都会是一个真正的“aha”时刻。但自动化也带来了一个重要问题如何为能够访问你的代码仓库和互联网的智能体设置护栏你是否会担心你的智能体依赖了某个不可靠网站的文档或者提交了包含 API token 的 commit如果某一天它决定在每一个未关闭的 issue 下添加大量无意义评论怎么办自动化必须是可预测的才能提供长期价值。但将智能体引入现有自动化例如 CI/CD的最安全方式是什么智能体是非确定性的它们必须处理不可信输入、基于仓库状态进行推理并在运行时做出决策。在没有实时监督的情况下让智能体在 CI/CD 中运行可以帮助你扩展软件工程能力但这也需要新的护栏机制来避免引入安全问题。GitHub Agentic Workflows 运行在 GitHub Actions 之上。默认情况下一个 action 中的所有内容都运行在同一个信任域中。失控的智能体可能会干扰 MCP servers、访问认证密钥并向任意主机发起网络请求。一个存在缺陷或被提示注入的智能体如果对这些资源拥有不受限制的访问权限就可能以不可预期且不安全的方式运行。因此安全性从一开始就被嵌入到 GitHub Agentic Workflows 的架构中。我们将智能体执行视为 CI/CD 模型的扩展而不是一个独立的运行时。我们将开放式的编写authoring与受控的执行execution分离然后将工作流编译为一个带有明确约束的 GitHub Action例如权限、输出、可审计性以及网络访问。本文将解释我们如何从第一天起就以安全为核心构建 Agentic Workflows从威胁模型以及其所需的安全架构开始。威胁模型有两个智能体工作流的特性改变了自动化的威胁模型。首先智能体能够基于仓库状态进行推理并自主行动这使它们非常有价值但也意味着在默认情况下不能信任它们——尤其是在存在不可信输入时。其次GitHub Actions 提供了一个高度宽松的执行环境。共享信任域对于确定性自动化来说是一种特性它支持广泛访问、良好的可组合性以及高性能。但当与不可信智能体结合时单一信任域可能在出现问题时带来巨大的影响范围。在这一模型下我们假设智能体会尝试读取和写入其不应访问的状态通过非预期通道通信并滥用合法通道执行不希望发生的操作。默认情况下GitHub Agentic Workflows 在严格安全模式下运行并基于这一威胁模型进行设计其设计遵循四个安全原则纵深防御、不将密钥交给智能体、对所有写操作进行分阶段与审查以及全面记录日志。纵深防御GitHub Agentic Workflows 提供了一个分层安全架构由底层Substrate、配置层Configuration和规划层Planning组成。每一层通过执行与其假设一致的独立安全属性来限制其上层发生故障时的影响范围。底层建立在 GitHub Actions 的运行器虚拟机VM以及多个受信任的容器之上这些组件限制了智能体可以访问的资源。总体而言底层提供了组件间的隔离、对特权操作和系统调用的中介以及由内核强制执行的通信边界。即使某个不可信的用户级组件被攻破并在其容器隔离边界内执行任意代码这些保护仍然有效。在底层之上是配置层它包含声明式配置及解释这些配置以构建安全系统结构和连接关系的工具链。配置层决定加载哪些组件、组件如何连接、允许哪些通信通道以及分配哪些权限。外部生成的令牌例如智能体 API key 和 GitHub 访问 token是限制组件外部行为的关键输入——配置层控制这些 token 被加载到哪些容器中。最后一层防御是规划层。配置层决定系统中有哪些组件以及它们如何通信但并不决定在某一时刻哪些组件处于活动状态。规划层的主要职责是创建一个分阶段的工作流并在各阶段之间定义明确的数据交换。后文将详细介绍的安全输出子系统是安全规划的主要实现。不要让智能体接触密钥从一开始我们就希望工作流中的智能体完全无法访问密钥。Agentic Workflows 作为 GitHub Actions 执行其中各组件在运行器虚拟机之上共享单一信任域。在这种模型下诸如智能体认证 token 和 MCP server API key 等敏感信息通常存储在环境变量和配置文件中并对虚拟机中的所有进程可见。这非常危险因为智能体容易受到提示注入攻击攻击者可以构造恶意输入例如网页或仓库 issue诱导智能体泄露敏感信息。例如一个被提示注入的智能体如果可以执行 shell 命令就可能读取配置文件、SSH 密钥、Linux/proc状态以及工作流日志从而获取凭据和其他敏感信息。随后它可能将这些信息上传到网络或编码进公开的 GitHub 对象例如 issue、pull request 或评论中。我们的第一项缓解措施是将智能体隔离在一个专用容器中并严格控制其出站访问通过防火墙限制互联网访问通过受信任的 MCP 网关访问 MCP通过 API 代理访问 LLM API。为限制互联网访问agentic workflows 在智能体与防火墙之间创建一个私有网络。MCP 网关运行在单独的受信任容器中负责启动 MCP servers并独占访问 MCP 认证信息。尽管像 Claude、Codex 和 Copilot 这样的智能体必须通过认证通道与 LLM 通信但我们避免将这些 token 直接暴露给智能体容器。相反我们将 LLM 认证 token 放在隔离的 API 代理中并将智能体配置为通过该代理访问模型。零密钥智能体在安全性与实用性之间存在根本权衡。编码任务需要广泛访问编译器、解释器、脚本以及仓库状态但扩展容器内部环境会重复现有 action 的配置逻辑并增加防火墙需要允许的网络目标。因此我们通过容器卷挂载小心地暴露主机文件和可执行程序并在chrootjail 中运行智能体。具体做法是将整个虚拟机文件系统以只读方式挂载到/host然后在部分路径上叠加空的tmpfs层并以/host为根目录启动智能体的chrootjail。这种方式既保留了主机侧环境又将智能体可写和可发现的范围限制在其任务所需的最小集合。对所有写操作进行分阶段与审查即使智能体无法访问密钥被提示注入的智能体仍然可能造成破坏。例如一个失控的智能体可能向仓库大量创建无意义的 issue 和 pull request淹没维护者或者在仓库对象中加入不当链接和内容。为防止这种行为agentic workflows 编译器会将工作流拆解为多个明确阶段并为每个阶段定义活跃组件及其权限只读或读写该阶段产生的数据产物这些产物允许被哪些下游组件消费在智能体运行期间它可以通过 GitHub MCP server 读取 GitHub 状态并只能通过安全输出 MCP server 暂存其更新。当智能体执行结束后这些由安全输出 MCP server 缓存的写操作会被一系列安全分析处理。首先安全输出允许工作流作者指定智能体可以执行的写操作类型例如创建 issue、评论或 pull request。其次安全输出限制更新数量例如限制一次运行中最多创建三个 pull request。第三安全输出会分析更新内容移除不需要的模式例如通过输出清洗去除 URL。只有通过整个安全输出流程的产物才会被放行从而确保每个阶段的副作用都是明确且经过审查的。全面记录日志即使实现了零密钥和写操作审查智能体仍可能以非预期方式处理仓库数据或调用工具甚至尝试突破我们施加的约束。智能体为了完成任务会尝试各种手段其“工具箱”往往比预期更丰富。一旦行为异常事后分析需要完整的执行路径可见性。Agentic Workflows 将可观测性作为架构的一等属性在每个信任边界进行全面日志记录。防火墙层记录网络及目标访问行为API 代理记录模型请求/响应元数据及认证请求MCP 网关和 MCP servers 记录工具调用。我们还在智能体容器中加入内部监控用于审计环境变量访问等潜在敏感操作。这些日志共同支持端到端的取证重建、策略验证以及异常行为的快速检测。全面日志也为未来的信息流控制打下基础。任何可以观测通信的地方也可以进行控制。Agentic Workflows 已支持 GitHub MCP server 的 lockdown 模式未来几个月内我们还将引入更多安全控制根据可见性公开或私有以及仓库对象作者角色在 MCP servers 之间实施策略约束。接下来是什么我们非常希望你参与进来欢迎在社区讨论中分享你的想法或加入 GitHub Next Discord 中的 #agentic-workflows 频道与我们以及众多优秀开发者交流。期待看到你使用 GitHub Agentic Workflows 构建的成果。祝你自动化愉快也请关注后续更多更新社区讨论https://github.com/orgs/community/discussions/186451/?wt.mc_id3reg_webpage_reactorGitHub Next Discordhttps://gh.io/next-discord/?wt.mc_id3reg_webpage_reactor

相关文章:

技术速递|底层机制:GitHub Agentic Workflows 的安全架构

作者:Landon Cox & Jiaxiao Zhou排版:Alan WangGitHub Agentic Workflows 构建于隔离、受限输出以及全面日志记录之上。了解我们的威胁模型和安全架构如何帮助团队在 GitHub Actions 中安全运行智能体。无论你是开源维护者还是企业团队的一员&#x…...

HUNYUAN-MT 7B翻译终端Matlab科学计算集成:技术文档跨语言协作

HUNYUAN-MT 7B翻译终端Matlab科学计算集成:技术文档跨语言协作 如果你在科研或工程团队里工作,很可能遇到过这样的场景:团队里有来自不同国家的同事,大家用Matlab写的算法注释、实验报告、技术文档,语言五花八门。你想…...

效率提升:基于快马AI定制你的Win11右键菜单一键切换神器

效率提升:基于快马AI定制你的Win11右键菜单一键切换神器 Win11的右键菜单设计让不少用户感到困扰,尤其是从Win10升级过来的老用户。默认的折叠式菜单虽然看起来简洁,但每次都要多点击一次"显示更多选项"才能看到完整功能&#xff…...

OpenClaw多模型切换:GLM-4.7-Flash与Qwen混合使用指南

OpenClaw多模型切换:GLM-4.7-Flash与Qwen混合使用指南 1. 为什么需要多模型切换? 去年我在尝试用OpenClaw自动化处理技术文档时,发现单一模型很难满足所有需求。有些任务需要快速响应(如简单问答),有些则…...

Video2X:用AI突破视频质量瓶颈的全栈解决方案

Video2X:用AI突破视频质量瓶颈的全栈解决方案 【免费下载链接】video2x A lossless video/GIF/image upscaler achieved with waifu2x, Anime4K, SRMD and RealSR. Started in Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/video…...

3分钟免费制作AI视频:零基础也能成为数字导演

3分钟免费制作AI视频:零基础也能成为数字导演 【免费下载链接】auto-video-generateor 自动视频生成器,给定主题,自动生成解说视频。用户输入主题文字,系统调用大语言模型生成故事或解说的文字,然后进一步调用语音合成…...

Stable Yogi Leather-Dress-Collection实战:SpringBoot微服务集成与API开发

Stable Yogi Leather-Dress-Collection实战:SpringBoot微服务集成与API开发 最近在帮一个做时尚电商的朋友做技术方案,他们想在自己的商品详情页里,根据用户上传的真人照片,实时生成虚拟试穿效果。核心需求很明确:需要…...

OpenClaw知识库搭建:Qwen3-32B私有镜像消化PDF手册

OpenClaw知识库搭建:Qwen3-32B私有镜像消化PDF手册 1. 为什么需要本地化知识库 去年我接手了一个工业设备维护项目,客户提供了37份PDF格式的技术手册,总页数超过2000页。当我需要查询某个传感器的安装参数时,不得不使用CtrlF在所…...

Qwen3-Embedding-4B广告过滤应用:恶意内容识别系统实战

Qwen3-Embedding-4B广告过滤应用:恶意内容识别系统实战 1. 引言:当广告变成“牛皮癣”,我们如何反击? 想象一下,你运营着一个用户社区或内容平台。每天,用户都在热情地分享、讨论。但总有一些不速之客&am…...

Rustup工具链管理深度解析:多版本Rust环境实战指南

Rustup工具链管理深度解析:多版本Rust环境实战指南 【免费下载链接】rustup The Rust toolchain installer 项目地址: https://gitcode.com/gh_mirrors/ru/rustup Rustup作为Rust语言的官方工具链管理器,为开发者提供了稳定、测试版和夜间版多版本…...

Z-Image-Turbo_UI界面场景应用:快速制作电商产品概念图

Z-Image-Turbo_UI界面场景应用:快速制作电商产品概念图 1. 引言:电商产品概念图制作的新选择 在电商行业,产品概念图的制作一直是设计师和运营人员的痛点。传统方式需要专业设计软件和大量时间投入,而Z-Image-Turbo_UI界面提供了…...

Z-Image-Turbo-rinaiqiao-huiyewunv 保姆级部署:Ubuntu系统环境配置与模型启动

Z-Image-Turbo-rinaiqiao-huiyewunv 保姆级部署:Ubuntu系统环境配置与模型启动 你是不是刚拿到一个功能强大的AI图像生成镜像,比如这个Z-Image-Turbo-rinaiqiao-huiyewunv,看着名字挺酷,但一想到要在Ubuntu服务器上部署&#xff…...

3大核心方案破解戴森电池固件限制:让你的吸尘器重获新生

3大核心方案破解戴森电池固件限制:让你的吸尘器重获新生 【免费下载链接】FU-Dyson-BMS (Unofficial) Firmware Upgrade for Dyson V6/V7 Vacuum Battery Management System 项目地址: https://gitcode.com/gh_mirrors/fu/FU-Dyson-BMS 问题溯源:…...

OpenClaw飞书机器人实战:GLM-4.7-Flash智能问答系统搭建

OpenClaw飞书机器人实战:GLM-4.7-Flash智能问答系统搭建 1. 为什么选择OpenClaw飞书GLM组合? 去年我负责团队的知识库建设时,每天要处理上百条技术咨询。传统FAQ文档的维护成本高,而商业客服系统又超出预算。直到发现OpenClaw这…...

Z-Image Turbo提示词调试技巧:从失败案例反推有效表达逻辑

Z-Image Turbo提示词调试技巧:从失败案例反推有效表达逻辑 1. 为什么提示词调试如此重要 如果你用过AI绘画工具,一定遇到过这种情况:脑子里想的是赛博朋克少女,生成出来的却是模糊不清的怪异图像。这不是模型的问题,…...

开源扩展开发指南:构建个性化Notion工作空间

开源扩展开发指南:构建个性化Notion工作空间 【免费下载链接】notion-enhancer an enhancer/customiser for the all-in-one productivity workspace notion.so 项目地址: https://gitcode.com/gh_mirrors/no/notion-enhancer 在数字化工作环境日益复杂的今天…...

春联生成模型-中文-base行业落地:新能源车企‘碳中和’‘智驾’等科技春联生成

春联生成模型-中文-base行业落地:新能源车企碳中和智驾等科技春联生成 1. 引言:当传统春联遇上现代科技 春节贴春联是千百年来的传统习俗,但传统的"福禄寿喜"已经难以完全表达现代企业的科技内涵。特别是新能源车企,既…...

新手福音:利用快马一键生成mobaxterm中文界面配置脚本

作为一个经常需要远程连接服务器的用户,MobaXterm一直是我的主力工具之一。但刚开始使用时,全英文的界面确实让我这个新手有点手足无措。最近发现用InsCode(快马)平台可以快速生成配置脚本,简直不要太方便! 为什么需要中文界面 对…...

Mac上React Native 0.72.5集成开源鸿蒙SDK,CMakeLists路径配置避坑指南

Mac上React Native 0.72.5集成开源鸿蒙SDK的CMakeLists路径配置实战指南 如果你是一名在Mac上使用React Native进行跨平台开发的工程师,最近可能对开源鸿蒙(OpenHarmony)的跨平台支持产生了兴趣。本文将带你深入解决一个特别棘手的问题——在…...

打造高性价比DIY回音壁:从零开始的多媒体音箱制作指南

1. 为什么选择DIY回音壁? 每次看到商场里标价上万元的回音壁音箱,我都会想:这东西真的值这个价吗?作为一个玩了十几年音响的发烧友,我决定用不到500元的预算,打造一套属于自己的高性价比回音壁。你可能不知…...

Go的interface空值与类型断言的最佳实践

Go语言中的interface空值与类型断言是开发者经常遇到的核心概念,掌握其最佳实践能显著提升代码的健壮性和可维护性。interface的灵活性使其成为Go多态的重要工具,但空值处理和类型断言的不当使用可能导致运行时错误或逻辑漏洞。本文将深入探讨如何高效处…...

3D Face HRN快速上手:无需代码,Gradio界面三步完成人脸重建

3D Face HRN快速上手:无需代码,Gradio界面三步完成人脸重建 1. 从一张照片到3D人脸,只需三步点击 你是否曾想过,将一张普通的自拍照或证件照,瞬间转化为一张可用于3D建模、游戏角色或虚拟形象的“皮肤地图”&#xf…...

Codex CLI 配置避坑指南:从 TOML 语法到沙箱策略的 5 个实战技巧

Codex CLI 配置避坑指南:从 TOML 语法到沙箱策略的 5 个实战技巧 如果你已经初步了解 Codex CLI 的基本用法,但在实际配置过程中频繁踩坑,这篇文章就是为你准备的。我们将深入探讨那些官方文档没有详细说明的细节问题,以及如何通过…...

彻底清理C盘自带软件方法:2026最新版强力卸载预装软件工具教程

电脑用着用着C盘就满了,开机小助手总提醒“磁盘空间不足”。点进控制面板一看,全是买电脑时自带的那些从未用过的软件,想卸载又怕卸不干净,甚至担心把系统搞崩溃。其实,彻底清理这些自带软件有章可循,关键是…...

基于Mirage Flow的Java智能助手开发:SpringBoot集成与API封装

基于Mirage Flow的Java智能助手开发:SpringBoot集成与API封装 最近在做一个内部知识库项目,需要给系统加个智能问答的“大脑”。一开始想直接用现成的SaaS服务,但考虑到数据安全和定制化需求,还是决定自己动手,把大模…...

Python入门实战:调用MogFace-large完成你的第一个人脸检测程序

Python入门实战:调用MogFace-large完成你的第一个人脸检测程序 你是不是对AI人脸检测感到好奇,但又觉得它离自己很远,需要高深的数学和复杂的代码?今天,我们就来打破这个迷思。我将带你用Python,从一个纯新…...

从HDLbits的Verification题目看起:新手写Verilog代码最容易踩的3个坑(附避坑指南)

从HDLbits的Verification题目看起:新手写Verilog代码最容易踩的3个坑(附避坑指南) 当你第一次在仿真器里看到波形图像脱缰野马一样乱窜时,那种头皮发麻的感觉我至今记忆犹新。Verilog看似简单的语法背后,藏着无数让初学…...

C++ 模板类型推导的底层实现

C模板类型推导的底层实现 C的模板类型推导是现代C编程中不可或缺的核心机制,它使得泛型编程变得灵活而高效。从简单的函数模板到复杂的元编程,类型推导在编译期间自动推断模板参数,减少了冗余代码。其底层实现机制却鲜为人知。本文将揭开模板…...

零基础搭建知识库:5分钟部署通义千问3-Embedding-4B向量模型

零基础搭建知识库:5分钟部署通义千问3-Embedding-4B向量模型 1. 引言:为什么选择Qwen3-Embedding-4B? 想象一下,你手头有大量文档、报告或网页内容,想要快速建立一个能理解语义的智能知识库。传统的关键词搜索已经无…...

腾讯优图4B模型实测:轻量级多模态AI,图片描述、图表分析、目标检测,一个模型全解决

腾讯优图4B模型实测:轻量级多模态AI,图片描述、图表分析、目标检测,一个模型全解决 1. 开箱体验:4B参数的全能选手 当我第一次在CSDN星图镜像广场看到这个只有4B参数的腾讯优图多模态模型时,说实话是持怀疑态度的。毕…...