本 Workstation 技术简报涵盖智能体 AI 安全与身份认证:通过 MCP(Model Context Protocol) 调用工具的企业智能体,使用 OAuth 2.1 加以保护;将高风险 MCP 端点置于 VPN / 私有网络 之后;并用 HashiCorp Vault 管理工具凭证——动态密钥、租约、自动轮换与即时撤销。文中推荐与行业对齐的 Claude、OpenAI 和 Cursor 配置方案。
- 问题:使用静态长期工具密钥 + 公网 MCP = 凭证扩散与横向移动。
- 认证:远程 MCP = OAuth 2.1 资源服务器 + RFC 9728 PRM + RFC 8707 受众;PKCE 强制。
- 企业:优先通过企业 IdP 使用 MCP Enterprise-Managed Authorization(EMA / ID-JAG)。
- 网络:内部 MCP 与 Vault 部署在 VPN/私有链路;按工具配置出口白名单。
- 密钥:Vault 动态密钥 + 租约 TTL;自动轮换静态角色;会话结束时撤销。
- 分离:LLM 提供商 API 密钥 != MCP 访问令牌 != 后端工具密钥。
来源:MCP Authorization、Vault 租约、Vault AI agent validated pattern、Claude connector auth。投产前请核验最新厂商文档。
1. 企业智能体威胁模型
智能体是具有特权的自动化主体。典型失效模式:
- 密钥扩散 — API 密钥写入 MCP JSON、将
.env提交到 git,或粘贴到提示词中。 - 令牌替换 — 为服务器 A 签发的访问令牌被服务器 B 接受(缺少受众绑定)。
- 权限过大的工具 — 同一会话中,一个 MCP 既能写入生产数据库又能打开防火墙。
- 未经审计的 OBO — 智能体行动未关联到人类身份。
- 公网 MCP — 内部工具无需 VPN 或私有链路即可从互联网访问。
控制措施必须覆盖身份(谁)、授权(哪些工具)、密钥(用什么凭证)以及网络(从何处)。
2. MCP 身份认证:行业标准
对于基于 HTTP 的远程 MCP,规范与 OAuth 2.1 对齐:
- MCP 服务器 = OAuth 资源服务器;客户端发送
Authorization: Bearer。 - PKCE 强制;禁止隐式授权。
- 服务器 MUST 发布 Protected Resource Metadata(RFC 9728),以便客户端发现授权服务器。
- 使用 Resource Indicators(RFC 8707),使令牌受众绑定到该 MCP 服务器。
- Authorization Server Metadata(RFC 8414)和/或 OIDC 发现,用于了解 AS 能力。
- 在必须无需手动客户端 ID 即可接入客户端时,推荐 Dynamic Client Registration(RFC 7591)。
# Protected Resource Metadata (conceptual)
{
"resource": "https://mcp.internal.example/mcp",
"authorization_servers": ["https://auth.example.com"],
"scopes_supported": ["mcp:tools", "mcp:resources"]
}
STDIO / 本地 MCP 有所不同:优先使用由 Vault Agent 注入的环境凭证——不要对每个桌面工具强制浏览器 OAuth。远程/公网 MCP 应实现 OAuth 2.1。
2.1 Enterprise-Managed Authorization(零接触)
MCP Enterprise-Managed Authorization 扩展允许企业 IdP(Okta、Entra ID 等)在 SSO 时通过 ID-JAG(Identity Assertion JWT Authorization Grant)授予对已批准 MCP 服务器的访问,避免按服务器反复同意带来的疲劳。请为组织范围的 Claude / IDE / 智能体机群采用 EMA。
3. VPN 与私有 MCP 集成
OAuth 对客户端进行身份认证;它不能替代网络隔离。
- 将内部 MCP 服务器与 Vault 托管在私有 CIDR(VPN、PrivateLink、Tailscale/WireGuard 网格或服务网格 mTLS)。
- 将 MCP 监听器绑定到私有接口;除非产品有意面向互联网,否则阻止公网 443。
- 从智能体运行时应用出口白名单:仅允许已批准的 API/MCP 主机。
- 平面分离:开发者笔记本通过企业 VPN 使用 Cursor;服务器端智能体位于 VPC,除已批准的 SaaS 外无互联网 MCP。
模式:VPN 负责可达性 + OAuth 负责授权 + Vault 负责密钥。
4. 面向智能体密钥的 HashiCorp Vault
静态长期工具密钥与智能体爆炸半径不兼容。Vault 提供:
4.1 动态密钥 + 租约
每个动态密钥返回 lease_id 与 TTL。消费者必须续期(若允许)或在过期前请求替换。租约结束时,Vault 可在提供商处撤销凭证。这强制签入、改善审计日志,并缩短暴露窗口。
4.2 自动轮换
对于静态角色(例如带 rotation_period 的数据库密码),Vault 按计划轮换。Vault Agent 模板在生命周期接近结束时重新获取(默认 lease_renewal_threshold 约为 TTL 的 0.9),并可在凭证变更时重启子进程。
4.3 智能体推荐 TTL
| 风险等级 | 示例 | TTL 指引 |
|---|---|---|
| 关键写入 | 生产数据库变更、IAM 管理 | 5–15 分钟;工具结束时撤销 |
| 读取 / 预发 | 只读副本、工单 API | 30–60 分钟 |
| LLM 提供商密钥 | OpenAI / Anthropic 组织密钥 | 由 Vault 管理;按计划轮换;绝不写入 MCP JSON |
4.4 Vault + 用户归属(经验证模式)
HashiCorp 的经验证模式:用户完成身份认证;智能体获得代表(OBO)令牌;工具使用 JWT 向 Vault 认证;Vault 将声明映射到策略并发放作用域受限的动态密钥。审计轨迹将密钥签发关联到人类,而非共享机器人账户。
Vault Enterprise 增加 Agent Registry 与 OAuth 资源服务器配置文件,使已注册智能体无需单独 Vault 登录步骤即可出示 OAuth JWT——并带有针对委托 / OBO 的智能体特定约束。
# Conceptual agent tool hook (do not ship secrets to the model)
vault_token = login_jwt(obo_token) # Vault auth
secret = vault.read("database/creds/agent-ro")
lease_id, ttl = secret["lease_id"], secret["lease_duration"]
try:
run_tool(db_url=secret["data"]) # use within TTL
finally:
vault.lease.revoke(lease_id) # or let TTL expire
5. 按厂商推荐的配置
5.1 Claude(Anthropic)
- 远程 MCP 连接器优先使用 OAuth;返回带
WWW-Authenticate指向 PRM 的 401,以便客户端发现认证。 - 切勿将令牌/API 密钥放入连接器 URL 查询字符串(会被记录、缓存,且违反 MCP 令牌规则)。
- Claude Code:本地 OAuth,配合安全令牌存储与刷新;插件不得读取令牌。
- 托管 Claude:Anthropic 为同意用户管理的客户端凭证;仍须将工具密钥保存在您 MCP 后方的 Vault 中。
- 企业:将 IdP 与 MCP EMA 对齐,实现零接触服务器访问。
5.2 OpenAI(Agents / tools)
- 将模型 API 密钥与工具凭证分离;采用不同的轮换策略与爆炸半径。
- 在 VPC 中运行智能体运行时;通过私有网络调用私有 MCP。
- 向工具传入用户归属令牌;使用 JWT 向 Vault 认证;每次调用签发动态密钥。
- 为合规记录每次工具调用的用户 + 智能体 + lease_id。
5.3 Cursor
- MCP 服务器配置:仅引用环境变量——切勿在
mcp.json中硬编码密钥。 - STDIO 服务器:在 Vault Agent(模板或 env)下运行,使租约轮换无需开发者复制密码。
- 远程 MCP:服务器支持时使用 OAuth;否则使用企业 VPN + 来自 Vault 的短生命周期 bearer。
- 团队策略:白名单批准的 MCP 服务器;在生产代码库上阻止不受信任的社区 MCP。
- 通过忽略规则将
.env/ 密钥文件排除在上下文之外;项目规则:禁止将密钥粘贴到聊天中。
6. 参考控制矩阵
| 层级 | 控制措施 | 反模式 |
|---|---|---|
| 身份 | SSO IdP + EMA / OAuth PKCE | 共享机器人密码 |
| MCP | PRM + 受众绑定令牌 | URL 中的令牌;无过期 |
| 网络 | VPN / PrivateLink + 出口 ACL | 生产工具使用公网 MCP |
| 密钥 | Vault 租约 + 轮换 + 撤销 | mcp.json 中的一年期密钥 |
| 运维 | 审计 IdP+MCP+Vault;人工门禁 | 无门禁的生产部署 / 支付 |
7. 实施清单
- 清点每个 MCP 服务器,并区分公网与私有。
- 在所有远程 MCP 上实现 OAuth 2.1 + PRM;通过企业 IdP 启用 EMA。
- 将 MCP + Vault 移至 VPN/私有网络之后;记录 Cursor/Claude 如何加入该网络。
- 用 Vault 动态密钥替换静态工具密钥;按风险等级设置 TTL。
- 将 Vault Agent(或 SDK renew/revoke)接入智能体运行时;会话结束时撤销租约。
- 分离 LLM 提供商密钥;在 Vault 中存储并轮换——切勿放入提示词或 MCP 配置。
- 为资金、身份变更与生产部署增加人工审批门禁。
- 测试:过期租约失败关闭;错误受众令牌被拒绝;公网路径被阻断。
由 Workstation 发布 — 企业自动化、多智能体平台,以及基于 Kubernetes 的安全交付。