2026年4月26日 2 分钟阅读

AI 智能体不该持有密钥:用 Agent Vault 实现零信任凭证管理

tinyash 0 条评论

你的 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 会自动:

  1. 创建一个 scoped session
  2. 设置 HTTPS_PROXY 和 CA 信任环境变量
  3. 启动你的智能体进程

智能体内部照常调用 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,频率如何,是否有异常行为。

适用场景

  1. 多智能体系统:多个 Agent 共享同一组凭证,但各自有独立的 scoped session
  2. 沙箱环境:在 CI/CD 中运行 AI 编码工具,防止密钥泄露
  3. 企业部署:集中管理 API 凭证,审计所有 Agent 的 API 调用
  4. 开发环境:本地开发时不用在 .env 文件中存储敏感密钥

和传统 Secret 管理的区别

维度传统 Secret 管理Agent Vault
凭证暴露面Agent 进程内存中持有密钥Agent 永远看不到密钥
提示注入风险可能被诱导输出密钥无密钥可输出
审计粒度知道谁取了密钥知道每个 API 调用
沙箱集成需要额外配置内置容器沙箱

总结

Agent Vault 解决了一个被忽视但越来越重要的问题:当你的代码是由 AI 编写和执行的,传统的”给服务一个 API Key”模型不再安全。

通过代理层注入凭证,Agent Vault 让智能体在不需要持有密钥的情况下调用外部 API。对于正在构建或运行 AI 智能体的团队来说,这是一个值得加入架构的组件。

相关链接:

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。