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) 可能是比增加另一个代理层更稳健的替代方案。