OneCLI: 面向 AI Agent 的开源凭据网关

OneCLI: 面向 AI Agent 的开源凭据网关

OneCLI 是一个开源的凭据网关,旨在将 API 密钥与 AI Agent 解耦。通过在 Agent 与目标服务之间充当代理,OneCLI 确保 Agent 使用占位符密钥,而网关在对外请求中注入实际凭据,从而防止密钥泄露给 LLM 或 Agent 的运行环境。

核心架构与机制

OneCLI 利用“凭据代理 (credential broker)”模式来拦截 HTTP 请求并将虚假凭据替换为真实凭据。该系统由三个主要组件组成:

  • Rust Gateway: 一个高性能的 HTTP 网关,用于拦截对外请求。它使用 Proxy-Authorization 请求头来验证 Agent,并对 HTTPS 流量执行 MITM (中间人) 拦截。
  • Web Dashboard: 一个 Next.js 应用程序,用于管理 Agent、密钥和权限。它提供 API,供网关根据请求解析并决定注入哪些凭据。
  • Secret Store: 一个使用 AES-256-GCM 加密的存储系统。密钥在静态存储时是加密的,仅在请求时才进行解密,并作为请求头或 URL 查询参数进行注入。

当 Agent 发起调用时,它会使用一个占位符(例如 FAKE_KEY)。网关通过主机名和路径模式将请求与正确的凭据匹配,解密真实密钥,并在请求到达最终目的地之前替换占位符。

核心特性

OneCLI 为 AI Agent 身份验证提供了一个集中化的管理层:

  • 透明注入: Agent 执行标准的 HTTP 调用,无需处理复杂的身份验证逻辑。
  • 范围权限: 每个 Agent 都被分配了具有特定权限的访问令牌,从而可以对哪些 Agent 可以使用哪些密钥进行细粒度控制。
  • Vault 集成: 系统可以连接到外部密码管理器(如 Bitwarden),按需注入凭据,而无需将密钥存储在 OneCLI 服务器本身。
  • 灵活部署: 支持单用户本地模式(无需登录)以及利用 Google OAuth 用于团队环境的多用户模式。

技术实现与设置

OneCLI 使用现代技术栈构建,包括用于网关的 Rust、用于仪表板的 Next.js,以及用于数据库的 Prisma ORM 和 PostgreSQL。

若要在本地部署 OneCLI,用户可以使用一行安装脚本: curl -fsSL https://onecli.sh/install | sh

或者,可以通过 Docker Compose 进行部署: docker compose -f docker/docker-compose.yml up -d --wait

社区见解与不同观点

围绕 OneCLI 的讨论既强调了凭据代理模式的实用性,也指出了基于代理的安全性的局限性。

模式的验证

几位用户指出,这种方法反映了数据库领域中经过验证的设计,即客户端与底层存储分离,请求通过拥有凭据的服务器进行路由。

安全权衡

批评者认为,该系统本质上是用一个密钥换取另一个密钥,因为 Agent 仍然需要一个令牌来向网关进行身份验证。一位用户指出:

你只是在用一个密钥换取另一个密钥,无论你选择信任哪种抽象,在某个时刻,凭据最终还是会传递给你的本周 LLM。

改进建议

社区成员提出了几项功能改进建议,以提高 OneCLI 网关的实用性:

  • OAuth Client Credentials 支持: 在网关内部实现“OAuth 流程”,使其能够自动处理访问令牌的获取。
  • 请求韧性: 增加对请求重试和特定错误情况下的短路处理的支持。
  • 与现有工具集成: 与 Infisical、1Password 和 HashiCorp Vault 等其他密钥管理器进行比较,并指出对于某些用户来说,成熟的 SSO (SAML, OIDC) 可能是比增加另一个代理层更稳健的替代方案。

Sources