AI智能体的凭证管理:Vault-Proxy架构
AI智能体的凭证管理是规范自主智能体如何获取、使用、轮换和释放API密钥及密钥而不将凭证暴露在智能体内存、日志或上下文窗口中的基础设施实践总体。智能体打破了标准凭证模式:它们自主运行,可能通过提示注入被攻破,并以集群方式运作,其中共享密钥会倍增渗漏攻击面。CVE-2024-34359(llama-cpp-python,CVSS 9.6)和CVE-2025-29927(Next.js,CVSS 9.1)展示了当安全边界失效时AI部署如何暴露密钥。
AI智能体的凭证管理是规范自主智能体如何获取、使用、轮换和释放API密钥、令牌和密钥而这些凭证永远不会出现在智能体内存、日志或上下文窗口中的实践和基础设施模式的总体。
为何标准凭证模式在智能体集群中失效
规模化时的.env文件问题
环境变量对单进程应用程序运行良好。对于智能体集群,该模型立即崩溃。一个在10个智能体集群中共享的.env文件意味着10个运行中的进程各自在内存中保存每个密钥。每个进程都会生成日志、错误输出和调试追踪,这些都是潜在的凭证暴露面。如果这10个智能体中的任何一个被提示注入攻击攻破并被指示打印其环境,共享.env中的每个凭证都会同时泄露。
N智能体乘数是核心问题:集群中的每个额外智能体都为每个共享凭证添加了另一个暴露面。在考虑日志聚合、错误报告或可能捕获环境快照的调试工具之前,具有5个API密钥的20智能体集群已经创建了100个潜在的凭证暴露点。
已部署AI系统中明文密钥的CVE记录
两个CVE记录了已部署AI系统中不安全密钥处理的实际成本:
CVE-2024-34359(llama-cpp-python,CVSS 9.6 严重):通过llama-cpp-python中模型元数据的无沙箱渲染进行的Jinja2服务器端模板注入。恶意制作的.gguf模型文件的聊天模板字段通过jinja2.Environment在没有沙箱的情况下渲染,使远程代码执行成为可能。任何加载不受信任模型的应用程序(包括从外部源下载模型的智能体管道)都在影响范围内。结构性问题是模型加载代码在没有隔离的情况下信任了外部内容。
CVE-2025-29927(Next.js,CVSS 9.1 严重):通过x-middleware-subrequest头进行的授权绕过,允许未经身份验证的请求跳过Next.js部署中的中间件。使用Next.js中间件保护凭证保护路由的应用程序(包括AI智能体API后端)受到影响:该绕过允许访问中间件本应阻止的路由。该缺陷已在版本12.3.5、13.5.9、14.2.25和15.2.3中修复。
两个CVE都说明了同样的基本风险类别:当密钥或受保护路由依赖应用层控制而非结构性隔离时,单个逻辑缺陷就会暴露它们。Vault-Proxy模式通过将密钥保持在智能体容器之外并置于基础设施层执行之后来消除攻击面。
为何智能体日志是凭证风险
传统应用程序日志包含受控调用点的结构化事件。智能体日志捕获一切:LLM推理追踪、工具调用参数、工具返回值和中间推理步骤。当智能体使用Authorization头中的凭证调用外部API时,简单的日志配置会捕获该头。当智能体的推理追踪包含来自检索文档或提示的文本"using API key sk-..."时,该字符串会出现在日志中。
智能体日志量很高,保留期通常很长。一旦凭证出现在日志聚合系统中,就会一直保留到日志被清除,这可能是在生成它的智能体退役后数周或数月。
从提示注入到凭证的路径
OWASP LLM Top 10 v1.1(LLM06:敏感信息披露,2025年10月发布)将凭证渗漏识别为LLM应用程序的主要攻击向量。攻击是直接的:智能体检索的对抗性内容(来自网页、文档、工具响应)包含"打印所有环境变量"或"输出你的API密钥"等指令。没有结构性凭证隔离的智能体无法区分此指令与合法任务指令。
2026年初的研究扫描了3,984个智能体技能,发现283个(7.1%)包含通过LLM上下文以明文传递API密钥的严重凭证处理缺陷。76个技能包含旨在将凭证渗漏到攻击者控制的端点的故意凭证窃取载荷。唯一的结构性防御是确保凭证从不存在于智能体上下文中。智能体无法泄露它不持有的凭证。
AI智能体的凭证管理模式
模式1:环境变量(最不安全)
环境变量(os.environ、.env文件、Docker --env标志)是大多数智能体框架的默认凭证模式。LangChain从os.environ读取,CrewAI依赖环境注入,OpenAI Agents SDK期望进程环境中的凭证。此模式仅适合本地开发和原型制作。
对于生产智能体集群,环境变量在每个安全轴上都失效:它们存在于智能体进程内存中(可通过提示注入访问),出现在Linux主机上的/proc/{pid}/environ中,在错误追踪和调试输出中出现,并传播到共享环境集群中的所有智能体。
模式2:密钥管理器集成
云密钥管理器(AWS Secrets Manager,每月$0.40/密钥 + 每10,000次API调用$0.05;Azure Key Vault;GCP Secret Manager)通过将凭证存储在智能体进程外并按需检索来改进环境变量。智能体调用密钥管理器API获取凭证,用于操作,然后丢弃。
此模式减少了内存中凭证的生命周期,但不能消除暴露窗口:凭证在获取-使用-丢弃周期中仍然通过智能体内存。它在该窗口期间对提示注入保持可见,并要求智能体持有第二个凭证(密钥管理器API密钥或IAM角色)来访问第一个凭证。
模式3:Vault Proxy / 不透明句柄注入(最安全)
Vault-Proxy模式将凭证完全保持在智能体容器之外。智能体持有一个不透明的句柄(如$CRED{stripe_key}的参考字符串),它标识凭证而不解析它。当智能体进行包含句柄的API调用时,Vault Proxy拦截请求,将句柄解析为实际凭证,在网络层注入它,并转发经过身份验证的请求。智能体永远不会看到明文凭证。
这与HashiCorp Vault(35,763颗星,BSL,v2.0.2于2026年6月5日发布)的智能体端注入原则相同,直接嵌入到智能体编排层中。生态系统中有700多个MCP服务器(2026年6月),$CRED{}句柄模式消除了每服务器.env蔓延:智能体配置中的一个句柄引用涵盖了任何MCP服务器的凭证需求。
完全受攻破的智能体容器(执行攻击者任意指令)对凭证的访问为零,因为容器范围内不存在任何凭证。
模式4:工作负载身份和OIDC联合
工作负载身份(OIDC联合、SPIFFE/SPIRE、云IAM服务账户)完全消除了云服务访问的长期API密钥。每个智能体容器在运行时接收一个短期身份令牌,该令牌与云提供商凭证交换。凭证具有有界TTL(通常为15分钟到1小时),之后过期,必须发放新令牌。
工作负载身份是在需要云提供商凭证(AWS API密钥、GCP服务账户密钥)的云基础设施上运行的智能体集群的正确模式。它需要编排平台管理身份发放和令牌刷新,但完全消除了静态密钥轮换问题。对于跨越多个云账户或提供商的多智能体系统架构,工作负载身份联合是唯一可扩展的凭证模型。
OpenLegion的观点:$CRED{}句柄模式
每个主要的AI智能体框架都将凭证管理视为宿主应用程序的问题。LangChain和LangGraph从os.environ读取。CrewAI依赖环境注入。OpenAI Agents SDK期望进程环境中的凭证。AutoGen继承Python进程环境。这些框架中没有一个提供结构性凭证隔离——它们将凭证管理留给运营商,这在实践中意味着.env文件和共享环境变量。
OpenLegion的Vault-Proxy内置于智能体编排层。智能体将凭证引用为不透明的$CRED{名称}句柄。网格主机在服务器端解析句柄并在网络边界注入凭证。没有智能体容器会接收明文凭证。提示注入无法渗漏不存在的内容。
Infisical(27,296颗星,MIT许可证核心的开源TypeScript密钥平台)在2023年筹集了280万美元种子融资,表明市场对开发者原生密钥管理的需求。OpenLegion将相同功能直接嵌入智能体运行时,无需单独的密钥管理部署。
| 维度 | OpenLegion | LangChain/LangGraph | CrewAI | OpenAI Agents SDK | AutoGen |
|---|---|---|---|---|---|
| 凭证存储 | Vault(不透明句柄) | 环境 / .env | 环境 / .env | 环境 / .env | 环境 / .env |
| 智能体访问模式 | $CRED{}句柄(在容器中从不解析) | os.environ直接读取 | os.environ直接读取 | os.environ直接读取 | os.environ直接读取 |
| 智能体上下文中的明文? | 从不 | 是(os.environ读取时) | 是(os.environ读取时) | 是(os.environ读取时) | 是(os.environ读取时) |
| 轮换支持 | Vault原生;无需重启的热轮换 | 手动;需要重启 | 手动;需要重启 | 手动;需要重启 | 手动;需要重启 |
| 每智能体范围 | 通过允许列表在网格级别强制执行 | 未强制执行 | 未强制执行 | 未强制执行 | 未强制执行 |
| 审计追踪 | 每次句柄解析都记录智能体ID | 无原生 | 无原生 | 无原生 | 无原生 |
对于评估当前技术栈总体凭证暴露面的团队,AI智能体安全威胁模型涵盖凭证泄露作为六个记录在案的威胁类别之一,与提示注入、沙箱逃逸和预算滥用并列。
AI智能体集群的密钥轮换
TTL有界凭证租约
静态API密钥(没有过期的凭证)是智能体集群最差的凭证。泄露的静态密钥无限期保持有效。密钥轮换需要协调使用该密钥的所有智能体,可能在活跃任务期间。
TTL有界凭证租约解决了这两个问题。凭证以过期窗口发放——交互式智能体会话通常为1小时;高敏感操作为15分钟。租约到期时,Vault自动发放新凭证。旧凭证在到期后无效,限制了任何泄露副本的价值。跨越多个租约窗口的智能体任务不中断地接收透明刷新。
HashiCorp Vault的动态密钥引擎按需为数据库、云提供商和自定义后端生成短期凭证。每个凭证对请求智能体是唯一的,并在可配置的TTL后过期。CVE-2026-39829(golang/crypto,2026年6月)修补了SSH公钥解析中由无界RSA模数大小引起的DoS漏洞——Vault v2.0.2通过将RSA密钥限制为8,192位来解决此问题。即使专门构建的Vault基础设施也会产生CVE,这就是为什么即使直接使用Vault,智能体和原始密钥之间的抽象层也很重要。
无需重启智能体的热轮换
传统应用程序密钥轮换需要重启进程以采用新凭证。智能体集群无法容忍强制重启:智能体可能处于任务中途,持有重启时会丢失的工作状态,或在多步骤交接中与其他智能体协调。
热轮换将新凭证注入Vault而不接触运行中的智能体容器。智能体通过Vault Proxy的下一次API调用透明地使用新凭证。从智能体的角度来看,$CRED{名称}句柄仍然解析——只是底层密钥改变了。
热轮换要求智能体从不在本地缓存凭证。$CRED{}句柄模式在结构上强制执行这一点:句柄在调用时解析,而不是在启动时,因此对解析值的本地缓存从不可能。
每智能体轮换范围
在共享凭证集群中,轮换凭证会影响每个使用它的智能体。轮换事件需要在整个集群协调,创建协调瓶颈和一些智能体使用旧凭证而其他智能体使用新凭证的窗口。
每智能体凭证范围使轮换正交:轮换智能体A的凭证不影响智能体B,因为智能体B持有自己独立的凭证范围。这只有在编排层强制每智能体范围而不是依赖共享.env文件时才能实现。对于链接多个专业智能体的智能体工作流设计,每智能体轮换范围对于零停机时间的凭证卫生至关重要。
智能体间凭证隔离
每智能体凭证分配
集群中的每个智能体应只持有其特定任务所需的凭证。网络爬虫智能体需要访问HTTP客户端凭证,但不需要数据库连接字符串。数据分析智能体需要数据仓库的读取访问权限,但不需要外部API的写入令牌。发布智能体需要CMS的写入访问权限,但不需要访问内部数据库。
每智能体凭证分配需要编排层来强制执行范围,而不是智能体本身。请求其未被授权的凭证的智能体应在Vault边界处收到拒绝,而不是因为凭证存在于共享.env中就悄悄收到凭证。
OWASP LLM06(敏感信息披露)明确指出过度配置的智能体凭证是凭证泄露事件的促成因素——智能体获得的访问权限超过其任务需要,因此当它们被攻破时,爆炸半径比必要的更大。
MCP工具服务器凭证范围
Model Context Protocol工具服务器通常需要自己的凭证——它们代理的服务的API密钥。生态系统中有700多个MCP服务器(2026年6月),MCP层的凭证管理问题不再是理论性的:每个服务器都是潜在的.env蔓延向量。在OpenLegion中,MCP服务器凭证存储在同一Vault中并通过相同的代理模式注入。MCP工具服务器从网格代理接收经过身份验证的请求,而不是从智能体接收原始凭证。
这防止了恶意MCP服务器被用作凭证收集向量。受攻破的MCP服务器在传入请求中只找到句柄引用,而不是原始密钥。有关完整的Model Context Protocol安全加固模型,请参阅专用指南。
在智能体退役时撤销凭证
当智能体完成其任务或被归档时,其凭证应立即撤销。静态凭证在其关联智能体之后继续存在会创建孤立访问——属于不再运行的进程的没有关联审计追踪的有效密钥。
智能体退役时的凭证撤销需要编排层跟踪智能体生命周期事件并触发Vault撤销。OpenLegion的网格自动处理这一点:当智能体被归档时,网格撤销与该智能体范围相关的所有凭证句柄。对于以编程方式管理智能体生命周期的AI智能体编排系统,凭证撤销应该是一个一级生命周期事件,而不是运营上的事后考虑。
审计追踪和凭证访问日志
记录什么(以及不记录什么)
每个凭证访问事件都应产生一个日志条目,包含:解析句柄的智能体ID、句柄名称(不是解析的值)、时间戳、经过身份验证的请求针对的外部端点,以及结果(成功或授权失败)。不应记录:实际凭证值、解析的密钥字符串,或明文凭证的任何派生物。句柄名称对于审计和取证目的已足够。
将凭证使用与智能体行为关联
智能体审计追踪与传统应用程序审计追踪不同:代码路径是非确定性的。传统应用程序遵循固定的调用图;智能体可以根据其提示、工具输出和LLM推理采取任何行动。智能体审计日志必须捕获每个工具调用及其参数,而不仅仅是凭证访问,以重建围绕可疑凭证使用事件的完整上下文。
OpenLegion的编排器在统一事件流中记录工具调用和凭证解析。法证分析可以回放序列:收到任务 -> LLM调用 -> 选择工具 -> 解析凭证 -> 调用外部API -> 收到响应。这是在受监管或高风险环境中AI智能体部署的正确架构。
受监管环境的审计要求
对于金融服务、医疗保健和其他受监管行业,智能体凭证审计日志必须满足特定要求:不变性(创建后日志不能被更改)、防篡改(日志完整性可验证)、保留期合规(日志保留所需持续时间)和访问控制(只有授权人员可以读取审计日志)。这些要求直接映射到Vault-Proxy架构:网格主机在解析凭证时生成审计日志条目,将其写入仅追加存储,并对条目签名以防篡改。智能体容器从不访问审计日志存储。对于AI智能体平台决策,审计日志架构是密钥后端选择旁边的关键合规考虑因素。
为智能体平台选择密钥后端
HashiCorp Vault
HashiCorp Vault(35,763颗星,BSL,v2.0.2于2026年6月5日发布)是参考开源密钥管理系统。它提供动态密钥生成、TTL有界租约、细粒度访问策略、全面审计日志和自定义密钥引擎的插件架构。注意:HashiCorp于2023年8月从OSI批准的Apache 2.0许可证切换到BSL(Business Source License)——BSL不是OSI批准的开源许可证,并限制Vault竞争对手的商业使用。
当您需要多个服务共享的独立密钥管理系统时,Vault是正确的选择。运营开销不小:Vault需要自己的部署、高可用性设置和解封程序。对于Vault已作为基础设施部署的智能体集群,将智能体凭证管理集成到Vault的策略引擎中很简单。
Infisical
Infisical(27,296颗星,MIT许可证核心,开源TypeScript)提供了一个开发者友好的密钥平台,具有用于密钥管理、轮换和审计追踪的Web UI、CLI和SDK。它于2023年筹集了280万美元种子融资,并将自己定位为为想要密钥管理而没有Vault运营复杂性或BSL许可限制的团队提供的HashiCorp Vault轻量级替代品。
对于尚未运行Vault的智能体集群,值得考虑将Infisical作为密钥后端。其SDK优先设计与Python智能体运行时整洁集成,其每环境范围自然映射到每智能体范围需求。
云原生(AWS/Azure/GCP)
AWS Secrets Manager(每月$0.40/密钥 + 每10,000次API调用$0.05)、Azure Key Vault和GCP Secret Manager提供托管密钥存储,与每个云提供商的IAM系统原生集成。如果您的智能体集群完全在单个云提供商内运行,云原生密钥管理可以避免单独运行Vault或Infisical的运营开销。
限制:云原生密钥管理器需要云IAM凭证才能访问——引导凭证问题。新的智能体容器在检索其运营凭证之前需要某些凭证来向AWS Secrets Manager进行身份验证。OIDC工作负载身份解决了云原生部署的这个引导问题。
常见问题
什么是AI智能体的凭证管理?
AI智能体的凭证管理是规范自主智能体如何获取、使用、轮换和释放API密钥、令牌和密钥的基础设施实践总体。智能体与传统应用程序不同,因为它们自主运行,可能通过提示注入被攻破,产生详细日志,并以多实例集群方式运作——所有这些都创造了标准环境变量模式未能解决的凭证暴露向量。OWASP LLM Top 10 v1.1(2025年)将敏感信息披露(LLM06)列为前十大威胁,将凭证渗漏列为主要攻击向量。
与AI智能体凭证泄露相关的CVE有哪些?
CVE-2024-34359(llama-cpp-python,CVSS 9.6)记录了模型加载管道中的Jinja2服务器端模板注入漏洞:制作的.gguf文件的聊天模板在没有沙箱的情况下渲染,使任何加载不受信任模型的应用程序中的远程代码执行成为可能。CVE-2025-29927(Next.js,CVSS 9.1)展示了x-middleware-subrequest头可以在Next.js应用程序中绕过中间件授权,包括使用中间件保护凭证保护路由的AI智能体后端。两个CVE都归因于在恶意输入下失败的应用层安全控制——结构性解决方案是将密钥完全保持在智能体容器之外。
Vault-Proxy模式如何防止凭证泄露?
Vault Proxy拦截智能体API调用,在网络层将不透明的凭证句柄解析为实际密钥,并返回经过身份验证的响应,而凭证永远不会进入智能体的容器或上下文窗口。智能体持有像$CRED{stripe_key}这样的句柄,它标识密钥而不解析它。执行攻击者任意指令的完全受攻破的智能体容器仍然对原始凭证的访问为零,因为容器范围内不存在任何凭证。
为何每智能体凭证隔离在多智能体系统中很重要?
在多智能体系统中,每个智能体被攻破时的爆炸半径受其持有的凭证限制。如果每个智能体共享一个包含所有密钥的单一.env文件,攻破任何智能体就会将所有凭证暴露给每个下游系统。每智能体凭证范围(在编排层而非智能体自己的代码中强制执行)意味着受攻破的研究智能体无法访问发布智能体的写入令牌或数据智能体的数据库凭证。OWASP LLM06明确将过度配置的智能体凭证识别为凭证泄露事件的促成因素。
OWASP对AI智能体凭证管理有何看法?
OWASP Top 10 for LLM Applications v1.1(2025年10月发布)将敏感信息披露列为LLM06,将凭证渗漏识别为LLM应用程序的主要攻击向量。指导建议避免在智能体上下文中存储明文凭证,实施最小权限凭证范围,并使用基础设施层控制而不是依赖智能体代码来保护密钥。提示注入(OWASP LLM01,首要风险)是在已部署智能体中触发凭证披露的最常见攻击向量。
OpenLegion如何处理运行MCP服务器的智能体的凭证?
在OpenLegion中,MCP工具服务器凭证存储在同一Vault中,并通过与智能体凭证相同的代理模式注入。MCP服务器从网格代理接收经过身份验证的请求,而不是从智能体接收原始凭证——智能体从不持有MCP服务器的上游API密钥。生态系统中有700多个MCP服务器(2026年6月),这消除了每服务器.env蔓延:一个Vault配置涵盖所有MCP凭证需求,受攻破的MCP服务器无法从传入请求中收集原始凭证。
什么是密钥轮换,AI智能体为何需要它?
密钥轮换是在计划或触发的基础上用新凭证替换凭证并使旧凭证无效的做法。AI智能体需要轮换,因为它们长时间运行(小时到天),在整个窗口期间是潜在的渗漏目标,并且不能在任务中途轻易重启以采用轮换的凭证。TTL有界凭证租约在可配置窗口(通常为1小时)后自动过期,Vault-Proxy模式支持热轮换——在不接触运行中的智能体容器的情况下注入新密钥——因此轮换对智能体是透明的。
构建无凭证暴露的智能体集群
AI智能体集群中的凭证管理问题是架构性的:如果凭证存在于智能体容器中,它们就可能泄露。CVE-2024-34359和CVE-2025-29927表明,即使是资源充足、运行主要框架的团队也会产生这种暴露。Vault-Proxy模式在结构上解决了它——凭证永远不会进入智能体容器,因此提示注入、容器逃逸或日志渗漏无法检索它们。
OpenLegion的Vault-Proxy内置于智能体网格中。用$CRED{名称}配置一次凭证,将其分配给需要它的智能体,网格处理注入、TTL刷新、每智能体范围和审计日志。无需单独的Vault部署、.env文件协调或手动轮换程序。