AI 智能体不该持有密钥:用 Agent Vault 实现零信任凭证管理
你的 AI 智能体正在用明文密钥调用 API?这可能比你想的更危险。
问题:AI 智能体的凭证管理是个盲区
传统的安全方案假设调用方是可信的——你给一个服务一个 API Key,它去调用后端 API,一切正常。但 AI 智能体不同:它们是非确定性系统,可能被提示注入攻击操控,也可能在调试日志中无意间泄露密钥。
Infisical 团队新开源的 Agent Vault 提供了一个全新的思路:与其让智能体持有凭证,不如让凭证永远不离开代理层。
Agent Vault 是什么?
Agent Vault 是一个 HTTP 凭证代理和保险库,部署在你的 AI 智能体和后端 API 之间。核心设计理念很简单:
- 智能体永远看不到凭证:凭证存储在加密的保险库中,通过本地 HTTPS 代理注入
- 任何能发 HTTP 请求的智能体都能用:Python、TypeScript、Claude Code、Cursor、Codex,无需修改代码
- 加密存储:AES-256-GCM 加密,可选 Argon2id 主密码保护
架构对比
传统方式:
AI Agent ──[持有 API Key]──→ 外部 API
问题:API Key 存在于 Agent 的进程内存、环境变量或配置文件中,可能被泄露。
Agent Vault 方式:
AI Agent ──→ HTTPS Proxy (Agent Vault) ──[注入凭证]──→ 外部 API
优势:Agent 只发送普通 HTTP 请求,凭证在代理层注入,Agent 完全不知道密钥的存在。
快速上手
安装
curl -fsSL https://get.agent-vault.dev | sh
或者用 Docker:
docker run -d -p 14321:14321 -p 14322:14322 \ -e AGENT_VAULT_MASTER_PASSWORD=your-password \ -v agent-vault-data:/data \ infisical/agent-vault
启动服务
agent-vault server -d
服务启动后,HTTP API 运行在 localhost:14321,HTTPS 透明代理在 localhost:14322。
实战:用 Agent Vault 保护 Claude Code
这是最直接的用法——用 agent-vault run 包装你的智能体进程:
# 包装 Claude Code agent-vault run -- claude # 包装 Codex agent-vault run -- codex # 包装自定义 Agent 脚本 agent-vault run -- python my_agent.py
agent-vault run 会自动:
- 创建一个 scoped session
- 设置
HTTPS_PROXY和 CA 信任环境变量 - 启动你的智能体进程
智能体内部照常调用 API:
import requests
# Agent 完全不需要知道 API Key
response = requests.get("https://api.github.com/user")
print(response.json())
Agent Vault 在代理层自动注入对应的凭证,转发请求。
容器沙箱模式
对于不信任的智能体(比如用户提交的代码),Agent Vault 提供了容器沙箱:
agent-vault run --sandbox=container --share-agent-dir -- claude
这会:
- 在 Docker 容器中启动智能体
- 通过 iptables 锁定出口,容器只能访问 Agent Vault 代理
- 挂载
~/.claude目录,复用你的登录状态
即使智能体被提示注入攻击,它也无法直接访问外部网络或窃取凭证。
TypeScript SDK:在编排器中使用
如果你的智能体运行在容器编排系统中,可以用 SDK 创建 session:
import { AgentVault, buildProxyEnv } from "@infisical/agent-vault-sdk";
const av = new AgentVault({
token: "YOUR_TOKEN",
address: "http://localhost:14321",
});
// 创建 session
const session = await av
.vault("default")
.sessions.create({ vaultRole: "proxy" });
// 生成代理环境变量
const certPath = "/etc/ssl/agent-vault-ca.pem";
const env = buildProxyEnv(session.containerConfig!, certPath);
// 注入到容器环境变量,挂载 CA 证书
// 容器内的 Agent 只需正常调用 HTTP API
支持 Docker、Daytona、E2B、Firecracker 等任何容器运行时。
请求审计日志
Agent Vault 会记录每个被代理的请求:
- HTTP 方法、主机、路径
- 响应状态码和延迟
- 涉及的凭证密钥名称(不记录请求体、Header 和查询参数)
这让你能看到每个智能体调用了哪些 API,频率如何,是否有异常行为。
适用场景
- 多智能体系统:多个 Agent 共享同一组凭证,但各自有独立的 scoped session
- 沙箱环境:在 CI/CD 中运行 AI 编码工具,防止密钥泄露
- 企业部署:集中管理 API 凭证,审计所有 Agent 的 API 调用
- 开发环境:本地开发时不用在
.env文件中存储敏感密钥
和传统 Secret 管理的区别
| 维度 | 传统 Secret 管理 | Agent Vault |
|---|---|---|
| 凭证暴露面 | Agent 进程内存中持有密钥 | Agent 永远看不到密钥 |
| 提示注入风险 | 可能被诱导输出密钥 | 无密钥可输出 |
| 审计粒度 | 知道谁取了密钥 | 知道每个 API 调用 |
| 沙箱集成 | 需要额外配置 | 内置容器沙箱 |
总结
Agent Vault 解决了一个被忽视但越来越重要的问题:当你的代码是由 AI 编写和执行的,传统的”给服务一个 API Key”模型不再安全。
通过代理层注入凭证,Agent Vault 让智能体在不需要持有密钥的情况下调用外部 API。对于正在构建或运行 AI 智能体的团队来说,这是一个值得加入架构的组件。
相关链接: