当您使用用户委托访问将 AI 客户端连接到 Atlas 时,AI 客户端会使用您自己的 Atlas 身份代表您执行操作。此页面说明了授权的工作原理、AI 客户端可以和不可以访问的内容以及如何保护您的凭证。
要学习 Organization Owner 如何启用访问、配置访问模式和审核 AI 客户端活动,请参阅管理 AI 客户端对组织的访问。
远程 MCP服务器实施模型上下文协议规范的2025 -11 -25 版本。作为协议的一部分,用户委托访问权限使用 OAuth.2 1授权代码流程以及代码交换证明密钥(PKCE)。
身份和权限
AI 客户端使用您现有的 Atlas 角色,在您的 Atlas 身份下运行。AI 客户端不能超过您已有的权限。如果您的角色不允许某一操作,AI 客户端就无法代您执行该操作。
您无法委托部分权限。授权 AI 客户端时,它会使用您现有的全部权限,具体取决于 Organization Owner 配置的访问模式。要了解访问模式,请参阅 AI 客户端访问模式。
Atlas 在 Atlas 审核日志中将 AI 客户端执行的所有操作归属于您。组织 Atlas 审核日志事件会记录您的用户 ID 和发出请求的 AI 客户端 ID。要了解 Atlas 如何在 Atlas 审核日志中记录 AI 客户端活动,请参阅管理 AI 客户端对组织的访问。
凭证隔离性
Atlas 从不与 AI 客户端共享您的凭证。在连接流程中,您可以在浏览器中直接与 Atlas 进行身份验证。AI 客户端从不收到您的 Atlas 密码或长期凭证。
授权连接后,Atlas 会托管连接使用的令牌。令牌刷新是自动的。您不管理连接字符串或秘密。
数据平面连接隔离性
为了连接到数据,Atlas 使用携带个人身份的短期凭证。Atlas 仅为数据平面连接创建这些凭证。
数据库连接详情从不会暴露给 AI 客户端。AI 客户端仅通过其配置的访问模式中的可用工具与您的数据进行交互。
AI 客户端连接到集群的能力取决于您自己的 Atlas 权限。要了解哪些 Atlas 角色通过 AI 客户端获得数据库访问权,请参阅用户角色和数据库访问权。
撤销访问还会在相同的时间轴上结束数据平面访问。AI 客户端必须出示有效的访问令牌才能调用任何工具。当访问令牌过期且刷新令牌不再工作时,AI 客户端就无法访问您的数据,即使其数据库凭证尚未过期。
访问生命周期和撤销
无论活动与否,AI 客户端代您进行的访问将在不活动 7 天后结束,或在您授予访问权 30 天后结束。访问结束后,您必须再次身份验证才能重新连接 AI 客户端。Organization Owner 可以缩短组织的最大代币生命周期。
您可以随时从 Atlas 用户界面撤销 AI 客户端的访问权限。撤销访问会使 AI 客户端的刷新令牌失效,但客户端的当前访问令牌在过期前仍然有效,最长可达 10 分钟。当 Organization Owner 禁用组织的 AI 客户端访问时,控制平面访问会立即结束,因为 Atlas 会在每次管理 API 调用中检查访问是否已启用。
工具注释和破坏性操作
每个 MongoDB MCP 服务器工具都带有描述工具功能的注释。AI 客户端可以使用这些注释来决定如何向您展示工具,例如是否在运行前询问。
与安全相关的两个注释是:
readOnlyHint:当true时,表示该工具不会更改任何数据或配置。destructiveHint: 当true时,表示该工具可以删除或覆盖现有数据或配置。
MCP 服务器从该工具的操作类型中获取这两个注释:
操作类型 | readOnlyHint | destructiveHint | 示例工具 |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
警告
工具注释不是安全边界
工具注释(如 destructiveHint 和 readOnlyHint)是 MCP 服务器发送给 AI 客户端的建议元数据。它们不授权、不限制也不阻止任何操作,AI 客户端可以忽略它们。请勿依赖注释来防止意外更改。
要限制AI客户端可以代表您执行的操作,请仅授予AI客户端任务所需的Atlas权限。要学习;了解Atlas角色,请参阅Atlas用户角色。
非破坏性安全敏感工具
create 工具将 destructiveHint 报告为 false,因为这类工具会添加资源,而不是删除或覆盖资源。但是,某些 create 工具仍会改变您的安全状态。示例:
atlas-create-access-list通过向项目的 IP 访问列表添加条目来增加集群的曝光。像0.0.0.0/0这样的条目会将集群曝露给所有 IP 地址。atlas-create-db-user创建一个数据库用户,该用户可以读取或写入数据,具体取决于授予该用户的角色。
根据工具改变的内容评估工具,而不是根据 destructiveHint 的值评估工具。
确认意图
对于某些工具,MCP 服务器会要求您在工具运行前确认操作。MongoDB 将此过程称为引出。AI 客户端显示确认提示,如果您拒绝,MCP 服务器将返回错误并不执行操作。
确认取决于支持 MCP 引导功能的 AI 客户端。如果 AI 客户端不支持引导,MCP 服务器将运行该工具,而不会要求您确认。切勿以为在运行危险操作之前会出现确认提示。
工具的界限是什么
权限而非注解决定 AI 客户端可以使用其工具更改的内容。权限由以下因素决定:
您的 Atlas 角色
您组织的 AI 客户端访问级别
如果您缺少操作所需的权限,则工具将失败,无论工具注解或确认提示。
由于您无法委托部分权限,因此代表您操作的 AI 客户端可以访问您的角色允许的任何内容。当您拥有 Project Database Access Admin 或 Project IP Access List Admin 等广泛权限的角色时,请考虑这一点。这些角色允许使用前面部分中描述的工具。
如果您连接具有程序访问权限的自动代理,则该代理将作为服务账户而不是您。将每个 MCP 配置的范围限定为代理工作流所需的角色,并保持配置为只读,除非代理必须写入。只读配置可防止 AI 代理完全看到写入工具,使其成为有效的访问控制。
可执行写入的读取标记工具
警告
一些可读取标记的工具可以写入
aggregate、aggregate-db 和 export 是报告 readOnlyHint: true 的 read 工具。这些工具运行的聚合管道可以包括 $out 或 $merge 阶段,这两个阶段都会将管道结果写入集合。operationType: "read" 不会保证工具不会更改您的数据。
风险范围
聚合管道的 $merge 阶段可以写入与管道读取数据的数据库或集合不同的数据库或集合。$merge 阶段的 into 选项接受 {db: <database>, coll: <collection>}。写入可以针对 AI 客户端的 Atlas 身份可以访问的任何数据库或集合,而不仅仅是 AI 客户端似乎正在查询的数据库或集合。
如果目标集合已经存在,则 $out 阶段将完全覆盖目标集合的内容。
缓解措施
不是每个聚合管道都会导致写入。运行产生写入的聚合管道需要:
经过身份验证的会话:在用户委托访问下的自己会话,或在程序访问下的服务账户凭证。
项目访问:AI 客户端的 Atlas 身份必须授予其对目标项目的写入权限。对于用户委托访问,这是您自己的 Atlas 角色。对于程序访问,这是服务帐户分配的 Atlas 角色。
这些条件可以降低风险,但不能消除风险。仅基于 read 标签授予 aggregate、aggregate-db 或 export 访问权限的策略可能会无意中授予 AI 客户端写入权限。
aggregate 即使 AI 客户端的访问模式或服务帐户的角色为只读,也可继续使用。但写入仍会失败:如果服务帐户的角色为只读,或您组织的访问模式对用户委托的访问设置为只读,则管道中的 $out 或 $merge 阶段无法完成,因为连接没有写入权限。
当聚合管道包含 或 阶段时,MCP$out $merge服务器也会触发确认提示。 AI客户端会显示提示,并要求您在管道运行之前确认写入。此确认取决于支持启发的AI客户端。如果AI客户端不支持启发,MCP 服务器将运行管道,而不要求您确认。
降低风险
仅授予 AI 客户端和服务账户其工作流所需的 Atlas 角色。只读角色可防止
aggregate通过$out或$merge阶段进行写入。使用支持诱导的 AI 客户端,便 MCP 服务器可以在运行产生写入的聚合管道之前征求您的同意。
对于用户委托访问,Organization Owner 可以将组织的访问模式设置为只读,而不是只读/写入。这可防止组织中的每个 AI 客户端通过
aggregate进行写入。对于程序访问,保持服务账户的 MCP 配置为只读,除非代理的工作流需要写入。这样可以防止通过
aggregate以相同方式进行写入。