从零信任视角重构 AI Agent 凭证管理——Keygate 的架构设计与实现

问题背景

Snyk 2025 报告披露,2025 年上半年 GitHub 上泄露了 2865 万个硬编码凭证,同比增长 34%。TechRadar 的数据进一步指出,AI 辅助代码提交使密钥泄露率翻倍。OWASP 2025 MCP Top 10 将 Token 管理列为 AI Agent 安全首要风险。Wiz Research 的扫描结果显示 65% 的顶级 AI 公司存在密钥泄露。

这些数据背后是一个架构层面的核心矛盾:AI Agent 需要凭证才能工作,但凭证一旦暴露给 AI,它们不再安全。

传统方案的根本缺陷在于——它们把"授权"和"暴露"绑定在了一起:

方案 AI 可见内容 凭证存储 泄露面
写入 prompt 明文 Key LLM 上下文(云端持久化) 极高
.env 文件 不可见 磁盘(git push 风险)
直接注入代码 真实凭证 源码仓库 极高

本文分析 Keygate 如何通过 alias 隔离 + 本地代理 + MCP 协议集成 来解耦授权与暴露,实现零信任凭证管理。


核心架构

Keygate 的架构可以概括为三层:

┌─────────────────────────────────────────────────┐
│                 AI Agent Layer                   │
│  (Claude Code / Cursor / 自定义 Agent)            │
│  只持有 alias: pm-deepseek                       │
└──────────────────┬──────────────────────────────┘
                   │ MCP 协议查询
                   ▼
┌─────────────────────────────────────────────────┐
│              Keygate Gateway                     │
│                                                  │
│  ┌──────────┐  ┌───────────┐  ┌──────────────┐ │
│  │ MCP Server│  │ Alias Map │  │ Proxy Engine │ │
│  │ 凭证发现  │  │ 别名映射   │  │ alias→凭证   │ │
│  └──────────┘  └───────────┘  └──────────────┘ │
│                                                  │
│  ┌──────────┐  ┌───────────┐  ┌──────────────┐ │
│  │ 加密存储  │  │ 审计日志   │  │ 插件系统     │ │
│  │AES-256   │  │ 全量记录   │  │ HMAC/自定义  │ │
│  │OS Keychain│  │           │  │              │ │
│  └──────────┘  └───────────┘  └──────────────┘ │
└──────────────────┬──────────────────────────────┘
                   │ alias 替换为真实凭证后转发
                   ▼
┌─────────────────────────────────────────────────┐
│            Upstream API Providers                │
│  DeepSeek / 智谱GLM / 通义千问 / OpenAI / ...    │
└─────────────────────────────────────────────────┘

关键设计决策

1. Alias 隔离——为什么不直接用 token vault?

传统的 vault 方案(HashiCorp Vault 等)解决的是存储安全,但没有解决运行时暴露问题。AI Agent 仍然需要读取真实凭证来构造 API 请求,这个读取动作本身就构成了泄露风险。

Keygate 的 alias 机制在授权层做了根本性的隔离:AI Agent 永远不持有、不接触真实凭证。它只拿到一个无意义的字符串(如 pm-deepseek),然后通过本地代理发起请求。代理层在进程内存中完成 alias 到真实凭证的替换,凭证的生命周期完全限定在 Keygate 进程内。

// alias 映射的简化逻辑
// AI Agent 发起请求时,只携带 alias
// Keygate 在 proxy 层完成替换
func (p *Proxy) handleRequest(req *http.Request) {
    alias := req.Header.Get("Authorization")
    // alias = "pm-deepseek"
    credential, err := p.store.Resolve(alias)
    // credential = "sk-real-api-key-xxxxx"
    req.Header.Set("Authorization", "Bearer " + credential)
    p.forwardToUpstream(req)
}

2. MCP 协议集成——自动发现而非手动配置

MCP(Model Context Protocol)是 Anthropic 维护的 AI Agent 与外部工具通信的标准协议。Keygate 实现了一个 MCP Server,AI Agent 启动时自动发现可用凭证:

AI Agent 启动
  → MCP 协议发现 Keygate
    → Keygate 返回可用 alias 列表
      → AI Agent 按需使用 alias 构造请求

这意味着开发者不需要手动配置 AI Agent 的凭证,也不需要把 API Key 复制粘贴到任何地方。整个流程从"人传递凭证"变成了"协议自动发现"。

3. 加密存储——AES-256-GCM + OS Keychain

凭证在磁盘上以 AES-256-GCM 加密存储,主密钥由 OS Keychain(macOS Keychain / Linux Secret Service / Windows Credential Manager)托管。这种设计避免了主密钥硬编码或环境变量泄露的问题。

# 添加凭证的命令行操作
kg add deepseek.com -n "My DeepSeek" -p "sk-your-real-key"
# 凭证加密后存入 OS Keychain,返回 alias: pm-deepseek

实战场景

场景一:多 Agent 共享凭证 + 密钥轮转

五个人的产品团队,共享一套 API 账户。传统方案下,Key 轮转意味着每个人都要更新配置。用 Keygate:

Keygate 凭证中心
├── pm-deepseek-dev   → DeepSeek 开发环境 key
├── pm-deepseek-prod  → DeepSeek 生产环境 key
├── pm-zhipu          → 智谱 GLM key
├── pm-qwen           → 通义千问 key
└── pm-kimi           → Kimi key

密钥轮转时,只需在 Keygate 中执行一次 kg rotate pm-deepseek-prod,所有 Agent 立即生效。每个人的 Agent 从头到尾只认识 alias,凭证变更对它们透明。

场景二:自定义插件——HMAC 签名

某些企业内部 API 不使用 Bearer Token,而是用 HMAC 签名认证。Keygate 的插件系统支持自定义认证逻辑:

# 注册自定义插件
kg plugin add hmac-signer \
  --script ./plugins/hmac.sh \
  --match "*.internal-api.com"

请求经过 Keygate 代理时,自动触发 HMAC 签名插件,在请求头中注入签名。AI Agent 无需了解签名逻辑,甚至不知道后端用的是 HMAC 认证。


Provider Presets

Keygate 内置了 9 个主流 AI Provider 的一键配置:

Provider alias 示例 用途
DeepSeek pm-deepseek 代码生成
智谱 GLM pm-zhipu 文案/对话
通义千问 pm-qwen 中文理解
Kimi pm-kimi 长文本
豆包 pm-doubao 多模态
MiniMax pm-minimax 语音
阶跃星辰 pm-stepfun 推理
OpenAI pm-openai 通用
自定义 pm-* 任意 API

审计与合规

每次 API 调用都会记录完整的审计日志:

kg audit logs
# 输出:
# 2025-04-04 10:23:15 | alias=pm-deepseek | agent=claude-code | status=200 | latency=342ms
# 2025-04-04 10:23:18 | alias=pm-zhipu    | agent=cursor     | status=200 | latency=156ms

日志包含调用方(agent)、使用的 alias、响应状态、延迟等信息,不包含真实凭证。这在企业合规场景中是硬需求。


快速开始

# 安装
curl -fsSL https://raw.githubusercontent.com/cm8421/keygate/main/scripts/install.sh | bash

# 添加凭证
kg add deepseek.com -n "My DeepSeek" -p "sk-your-key"

# AI Agent 自动通过 MCP 发现凭证,无需额外配置

GitHub 仓库:https://github.com/cm8421/keygate


总结

Keygate 的核心价值不在于"更安全的存储",而在于从根本上消除了 AI Agent 接触真实凭证的可能性。通过 alias 隔离 + 本地代理 + MCP 自动发现,它实现了一个真正的零信任凭证架构:

  • AI 只拿 alias,凭证永远不出 Keygate 进程
  • 密钥轮转一次操作,全局生效
  • 环境隔离(dev/test/prod)天然防误操作
  • 审计日志满足合规要求
  • 插件系统覆盖非标认证场景

如果你的团队正在使用 AI Agent,凭证管理不再是"以后再说"的问题——OWASP 已经把它列为首要风险了。

posted @ 2026-04-04 15:45  陈旭安  阅读(71)  评论(0)    收藏  举报