你的 AI agent 不需要你的 API 密钥:使用 OAuth 2.1 对 Elasticsearch MCP 服务器进行身份验证

作者:来自 Elastic Alex Chalkias

OAuth 2.1 让你可以通过浏览器登录,而不是使用 API 密钥,将 AI agent 连接到 Elasticsearch MCP 服务器。你的 agent 会获得一个与你的权限绑定的短期令牌,你可以随时撤销该令牌。

Claude Desktop、Cursor 或任何 MCP 主机现在都可以通过一次性的浏览器登录连接到你的 Elasticsearch 数据。OAuth 2.1 现在已经在 Elastic Cloud Serverless 中的 Agent Builder MCP 服务器 正式发布。你不再需要将 API 密钥粘贴到配置文件中,而是由你的 agent 获取一个与你的权限绑定的短期令牌。每个连接都可以单独进行审计和撤销,而不会影响你账户中的其他任何内容。刷新令牌会持续滚动 30 天,因此你很少需要再次登录。组织所有者可以准确查看是谁授权了哪些 agent,而 Agent Builder 是第一个采用这种模型的 Elastic 功能,之后 Elastic API 的其他部分也会跟进。

为什么 OAuth 比 API 密钥更适合 MCP 服务器身份验证

使用 OAuth 时,令牌是短期凭证,会自行过期,因此即使令牌泄露,风险窗口也会不断缩小,而不是形成一个长期有效的授权。每个令牌都可以追溯到一次明确的授权:哪个用户、哪个客户端、什么时间。

相比之下,API 密钥是一种长期有效的凭证。它存在于运行 agent 的机器上的配置文件中,只要有人没有轮换或删除它,任何使用该机器的人都可以使用这个密钥。这种模式对于你为团队编写并部署的 CI 流水线来说是可控的。但当密钥由一个 AI agent 持有时,情况就变得令人不安了,因为这个 agent 会自行组织请求,检索可能包含注入指令的不受信任内容,有时还会将上下文传递给子 agent。

这种故障模式在每一次凭证泄露事故的复盘中都很常见:密钥最终出现在不应该出现的地方(例如日志文件、提示词中),从那一刻起,任何拥有该密钥的人都可以访问其创建者能够访问的所有内容。审计记录也帮不了太多:API 密钥日志只能告诉你某个指定名称的密钥执行了某项操作,却无法告诉你是谁授权了使用该密钥的客户端,也无法告诉你是在什么时候授权的。

属性 OAuth 2.1 API 密钥
凭证有效期 短期有效,自动刷新 长期有效,直到手动轮换
审计记录 每个连接记录用户、客户端和时间戳 仅记录密钥名称
撤销 可针对单个连接立即撤销 需要轮换密钥
影响范围 单个客户端连接 密钥创建者可以访问的所有内容

如何为 Elasticsearch MCP 服务器设置 OAuth 2.1

每个项目只需设置一次:

1)在你的 Elastic Cloud Serverless 项目中,打开 Agent Builder → 工具库 → MCP 客户端 → 创建 MCP 客户端(OAuth)。这会为你提供一个客户端 ID 和 MCP 服务器 URL。

2)将服务器添加到你的 MCP 主机。在 Cursor 或 Claude Desktop 中,配置文件条目如下:

复制代码
{
  "mcpServers": {
        "kibana-mcp": {
          "command": "npx",
          "args": [
            "mcp-remote",    "https://<your-project>.kb.<region>.aws.elastic.cloud/api/agent_builder/mcp",
            "--static-oauth-client-info",
            "{\"client_id\":\"MYCLIENTID111\"}"
          ]
     }
   }
}

3)agent 第一次调用工具时,主机会在浏览器中打开 Elastic Cloud 的授权同意页面。你使用正常的 Elastic Cloud 凭证登录,然后查看 agent 请求访问的内容。

4)点击授权。这会在你、你的机器和项目之间创建一个应用程序连接,然后 Elastic Cloud 向 agent 发放一个短期访问令牌。

从这里开始,你的 agent 就可以访问项目中的数据了。整个过程对你来说是透明的。当访问令牌过期时,主机会使用一个有效期为 30 天并持续滚动更新的刷新令牌来刷新它,因此你不需要每隔一小时重新进行身份验证。如果你不再信任某个连接,可以打开 Elastic Cloud 中的应用程序连接页面并撤销该连接。两个令牌都会立即失效,而你的账户不会发生其他任何变化。

Agent 会以授权用户的权限执行操作。对 Agent Builder 工具 的调用,例如 ES|QL 查询、Workflows 和 Streams,都会根据你的角色进行权限评估。如果你希望某个 agent 的访问权限低于你自己的权限,可以使用具有更严格角色的用户来授权该连接,或者继续为该工作负载使用具有指定权限范围的 API 密钥。

如何在 Elastic Cloud 中管理和撤销 MCP 服务器连接

组织所有者可以列出整个组织或特定项目中的所有活跃应用程序连接:授权了哪些 MCP 主机、由谁授权以及何时授权。撤销操作针对单个连接,因此切断某个行为异常的 agent 不会影响授权用户的账户或其他任何集成。不需要轮换共享凭证,影响范围也不会超出单个客户端。

这就是 OAuth 对团队而言的实际区别。OAuth 应用程序连接会记录谁进行了授权、授权给哪个客户端以及何时授权。而 API 密钥日志只能显示 agent-key-3 查询了某个索引,却无法显示是谁授权了这个 agent。

Elastic API 中 OAuth 身份验证的下一步

Agent Builder 是第一个采用 OAuth 的 Elastic 功能,同样的授权模型将扩展到 Elastic API 的其他部分,包括 Elasticsearch 和 Elastic Cloud 管理功能。我们正在朝着单一 Elastic MCP 端点的方向发展。

要立即试用,请在 Elastic Cloud Serverless 项目中打开 Agent Builder 并创建 OAuth 客户端,或者从文档开始。如果你还没有项目,可以开始免费试用

本文中描述的任何功能或特性的发布及时间安排均由 Elastic 自行决定。目前尚不可用的任何功能或特性可能无法按时交付,也可能根本不会交付。

常见问题

我应该使用 OAuth 还是 API 密钥?

当 agent 背后有用户时使用 OAuth:例如某人笔记本电脑上的 MCP 主机,或者代表用户执行操作的助手。当用于 CI 流水线和定时任务等非交互式工作负载时,使用 API 密钥,因为这些场景中没有用户提供授权。

访问令牌过期后会发生什么?

主机会自动刷新访问令牌。刷新令牌具有 30 天的滚动有效期,因此经常使用的连接可以持续保持有效,而无需重新进行身份验证。撤销连接后,两个令牌都会立即失效。

哪些 MCP 主机支持这一功能?

任何实现 MCP 授权规范的主机都可以使用 OAuth。Claude Desktop 和 Cursor 都已经过测试。

原文:MCP server authentication with OAuth 2.1 for Elasticsearch | Elasticsearch Labs

相关推荐
FreeTinker2 小时前
AP AC组网中的远程运维挑战及内网穿透技术应用分析
运维
airobotcn2 小时前
AI Agent下工厂:大模型如何驱动巡检机器人自主决策
人工智能·机器人·自动化·无人机
能源革命2 小时前
AI+能源前沿2026-08-15
人工智能·能源
Dawson Zhu2 小时前
为什么智能体 Agent 需要本体 Ontology
人工智能·语言模型·架构·制造·agi
恣逍信点2 小时前
《凌微经》静态自悖——变化之自因
人工智能·科技·算法·机器学习·业界资讯·拓扑学·哲学
在世修行2 小时前
深度图像数据格式与RAW文件解析:从字节到三维世界的桥梁
人工智能·数码相机·计算机视觉
chen_zn952 小时前
《VLA 系列》RLT | RL Token | 轻量 Actor-Critic | 在线强化学习与源码解析
人工智能·强化学习·具身智能·vla
fthux2 小时前
装闭 RenoPit 源码解析(10):AI如何审查装修合同与报价单
人工智能·ai·开源·github·open source·renopit
AI_AGENT_DEV_AI3 小时前
AI 智能体的开发费用
人工智能