HTTP 凭证代理与保险库
一个由 Infisical 开发的开源凭证代理,位于您的智能体和他们调用的 API 之间。
智能体不应该持有凭证。Agent Vault 通过代理访问消除了凭证泄露风险。
新朋友?发布博客文章 拥有 Agent Vault 的完整故事。
传统的机密管理是将凭证返回给您的应用和服务。这对 AI 智能体来说会出问题,因为它们可能通过提示注入被诱骗而泄露机密。这就是凭证外泄问题。
Agent Vault 的创建就是为了解决所有 AI 智能体的凭证外泄问题。与其直接向 AI 智能体提供凭证,不如将凭证存储在 Agent Vault 中(例如 ANTHROPIC_API_KEY、GITHUB_PAT 等),并强制您的智能体通过它路由 HTTP 请求。Agent Vault 拦截每个请求,在转发到目标出站 API 之前将凭证附加到请求上。
特性:
__anthropic_api_key__ 这样的占位符值替换为真实凭证,或完全替换出站请求中的认证头,来实现这种代理访问。HTTPS_PROXY 并与 Agent Vault 的 MITM 架构兼容。mitmproxy 或 squid)需要修改才能执行凭证代理并与智能体良好集成。Agent Vault 专为适应所有类型智能体用例的人机工程学而设计,拥有专用 CLI、多租户以及由 Infisical 支持的智能体特定路线图。默认情况下,与任何服务不匹配的请求会作为普通代理流量转发;将保险库切换到严格拒绝模式(unmatched_host_policy=deny)可拒绝这些请求并返回 403。
阅读 Agent Vault 的完整背景故事在此。
Agent Vault 适用于各种 AI 智能体用例,包括安全的远程编码智能体、通用智能体、自定义智能体 + 框架、安全的短暂沙箱等。
ANTHROPIC_API_KEY 和 GITHUB_PAT,使 Claude Code 能够与 Anthropic 和 GitHub API 交互以编写代码、发起 PR 等。同样的原则适用于其他编码智能体。Agent Vault 既是一个保险库,也是一个代理服务,它以一个单一二进制文件的形式提供,同时充当服务器和 CLI 客户端。它存储凭证,并使用 MITM 代理架构将这些凭证代理给您的 AI 智能体。根据设计,Agent Vault 应部署在与 AI 智能体不同的机器上,以提供必要的安全保障,使 AI 智能体无法直接访问 Agent Vault 内的凭证。
┌─────────────────────────────────────────────────────────────────┐
│ 公共互联网 │
│ │
│ api.anthropic.com api.github.com api.stripe.com ... │
│ ▲ ▲ ▲ │
└──────────┼───────────────────┼──────────────────┼───────────────┘
│ │ │
└───────────────────┼──────────────────┘
│ 出站 HTTPS,Agent Vault
│ 在出站时注入凭证
┌──────────────────────────────┼──────────────────────────────────┐
│ 私有网络 │ │
│ │ │
│ ┌───────────────────────────┴────┐ ┌────────────────────┐ │
│ │ Agent Vault │ │ AI 智能体 │ │
│ │ :14321 管理界面 / API │◀────│ HTTPS_PROXY= │ │
│ │ :14322 MITM 代理 │ │ agent-vault:14322 │ │
│ └────────────────▲───────────────┘ └────────────────────┘ │
│ │ │
└───────────────────┼─────────────────────────────────────────────┘
│ 操作员访问:保持私有,或通过
│ TLS + 认证(SSO 反向代理、IP
│ 白名单或 VPN)前端化,如果需要远程管理
│
操作员
您可以按照以下步骤配置 Agent Vault 为 AI 智能体代理凭证:
curl --proto '=https' --proto-redir '=https' --tlsv1.2 -fsSL https://get.agent-vault.dev | sh
启动 Agent Vault 服务器并为其设置一个主密码(存储在安全的地方);该密码用于其数据加密机制,并且在初始读取后从进程中清除。
export AGENT_VAULT_MASTER_PASSWORD=your-password
agent-vault server -d
您也可以使用 Docker 部署 Agent Vault:
docker run -it -p 14321:14321 -p 14322:14322 \
-e AGENT_VAULT_MASTER_PASSWORD=your-password \
-v agent-vault-data:/data infisical/agent-vault
服务器在 14321 端口启动 HTTP API,在 14322 端口启动透明 HTTP/HTTPS 代理;同一个监听器处理 https:// 上游的 CONNECT 方法和 http:// 上游的绝对形式正向代理请求。
Web UI 可通过 http://<host>:14321 访问,系统会提示您创建第一个用户,称为实例所有者。
在 Agent Vault 中创建一个保险库,输入您的凭证,并配置服务规则。您可以通过管理 UI 或在 Agent Vault 机器上通过 CLI 来完成。例如,您可以为 ANTHROPIC_API_KEY 创建一个凭证,并为 Agent Vault 创建一个服务规则,以将占位符值 __anthropic_api_key__ 替换为真实的密钥。
创建一个智能体来表示一个长期运行的智能体,并为其获取一个令牌。或者,如果您正在启动短暂的沙箱智能体,您可以使用智能体来表示一个编排器后端,并使用它生成一个短期的令牌传递给沙箱,以便智能体使用并通过 Agent Vault 代理请求。
在您的 AI 智能体环境中设置以下环境变量:
AGENT_VAULT_ADDR=http://<your-addr>:14321
AGENT_VAULT_TOKEN=<agent-token-from-agent-vault>
AGENT_VAULT_VAULT=<vault-in-agent-vault>
...
ANTHROPIC_API_KEY=__anthropic_api_key__ // 将被 Agent Vault 替换的占位符密钥
curl --proto '=https' --proto-redir '=https' --tlsv1.2 -fsSL https://get.agent-vault.dev | sh
从此工作流发布的归档文件附带一个构建来源证明,该证明与生成它的 GitHub Actions 运行相关联。使用 gh CLI 进行验证(无需额外工具,无需密钥管理):
gh attestation verify agent-vault_*.tar.gz --repo Infisical/agent-vault
checksums.txt 也包含在同一个证明中,其 cosign 签名继续可以用 cosign verify-blob 验证,供偏好该方式的用户使用。
agent-vault run -- claude
agent-vault vault run -- agent
agent-vault vault run -- codex
agent-vault vault run -- opencode
或者,如果您的智能体使用 Docker 运行,您可以通过将二进制文件复制到自己的镜像并用于启动智能体进程的方式,通过 Dockerfile 安装 Agent Vault CLI:
# 将此行添加到现有 Dockerfile 中,紧接在您的智能体或应用程序设置旁边。
COPY --from=infisical/agent-vault:latest /usr/local/bin/agent-vault /usr/local/bin/agent-vault
...
ENTRYPOINT ["agent-vault", "run", "--", "claude"]
部署 Agent Vault 并集成 AI 智能体的方法有很多种。我们建议查阅更完整的文档。
观看 Agent Vault 如何为 AI 智能体代理凭证:一次存储您的密钥,通过代理路由每个出站请求,让智能体在从未看到密钥的情况下调用真实 API。
想要完整的部署演练?请参阅在 VPS 上运行 Hermes,这是一个在独立机器上使用代理智能体的端到端示例。
延迟:您应将 Agent Vault 与 AI 智能体共同部署在同一个网络内,以减少请求延迟。
令牌:您应在 Agent Vault 中创建一个智能体来表示长期存在的智能体。对于短暂的沙箱,您可能更倾向于为沙箱中的智能体生成短期、限制于保险库的令牌,以供其通过 Agent Vault 代理请求。
默认情况下,Agent Vault 在本地 SQLite 数据库中存储所有状态,无需任何设置。对于生产部署或运行多个实例时,请设置 DATABASE_URL 环境变量(或 --database-url 标志)为 PostgreSQL 连接字符串,Agent Vault 将切换到使用 Postgres 作为其后端。所有实例共享同一个数据库,因此状态在副本之间保持一致。
在切换之前,使用 agent-vault migrate-db --to postgres://... 迁移现有数据。请参阅 PostgreSQL 指南 了解部署示例(Kubernetes、Docker Compose)、架构说明和操作细节。
Agent Vault 提供一个 TypeScript SDK,以防您希望编排器生成一个短期令牌并将代理配置传递给沙箱中的智能体,从而使其通过 Agent Vault 代理请求。
npm install @infisical/agent-vault-sdk
import { AgentVault, buildProxyEnv } from "@infisical/agent-vault-sdk";
const av = new AgentVault({
token: "YOUR_TOKEN", // 智能体令牌
address: "http://localhost:14321",
});
const session = await av
.vault("my-vault")
.sessions.create({ vaultRole: "proxy" });
// certPath 是您将在沙箱内部挂载 CA 证书的路径。
const certPath = "/etc/ssl/agent-vault-ca.pem";
// env: { HTTPS_PROXY, HTTP_PROXY, NO_PROXY, NODE_USE_ENV_PROXY,
// SSL_CERT_FILE, NODE_EXTRA_CA_CERTS, REQUESTS_CA_BUNDLE,
// CURL_CA_BUNDLE, GIT_SSL_CAINFO, DENO_CERT }
const env = buildProxyEnv(session.containerConfig!, certPath);
const caCert = session.containerConfig!.caCertificate;
// 将 `env` 作为环境变量传递,并将 `caCert` 挂载到 `certPath`
// 在您的沙箱中——Docker、Daytona、E2B、Firecracker 或任何其他运行时。
// 配置完成后,里面的智能体只需正常调用 API:
// fetch("https://api.github.com/...") — 无需 SDK,无需凭证。
请参阅 TypeScript SDK README 获取完整文档。
make build # 构建前端 + Go 二进制文件
make test # 运行测试
make web-dev # Vite 开发服务器,支持热重载(端口 5173)
make dev # Go + Vite 开发服务器,支持热重载
make docker # 构建 Docker 镜像
此仓库在 MIT expat 许可证 下可用,但 ee 目录除外,该目录将包含需要 Infisical 许可证的高级企业功能。
如果您对 Infisical 感兴趣,或者希望探索 Agent Vault 更商业化的道路,请查看我们的网站或与我们预约会议。
无论大小,我们都欢迎贡献。Agent Vault 遵循与 Infisical 相同的贡献指南。
查看我们的指南,了解如何开始。
不知道从哪里开始?您可以:
如果您正在阅读此文,那么您很可能喜欢我们创建的产品。
您也可能成为我们团队的优秀成员。我们正在快速发展,希望您能加入我们。
预览。 Agent Vault 正在积极开发中,API 可能会发生变化。在部署之前,请查阅安全文档。