Docs 菜单
Docs 主页
/
MongoDB Atlas
/ / /

使用 OAuth 设置 Workload Identity Federation 2.0

在此页面上

  • 如何操作
  • 内置身份验证
  • 回调身份验证
  • 步骤
  • 准备外部身份提供者
  • 配置工作负载 Identity Federation 身份验证
  • 使用 Workload Identity Federation 身份验证添加数据库用户
  • 使用 Workload Identity Federation 将应用程序连接到 MongoDB
  • 管理现有工作负载 Identity Federation 配置
  • Revoke JWKS
  • 删除工作负载 Identity Federation 配置

Workload Identity Federation 允许应用程序使用外部编程身份(例如Azure服务主体、 Azure托管身份和 Google 服务帐户)访问权限MongoDB Atlas集群。

您可以为一个或多个组织启用任意数量的工作负载身份提供程序。 在Atlas组织中启用工作负载身份提供程序后,您可以在该组织的所有项目中使用它来访问权限数据库。

Atlas仅在运行MongoDB 7.0.11及更高版本的专用集群(M 10及更高)上支持工作负载身份联合,并且仅由选定的驱动程序支持。

要学习;了解有关使用所选驾驶员实施 Workload Identity Federation访问权限的更多信息,请参阅使用 Workload Identity Federation 将应用程序连接到MongoDB 。

Workload Identity Federation 允许应用程序通过 OAuth 2.0访问权限MongoDB集群 访问权限令牌。 访问权限令牌可由任何外部身份提供者颁发,包括Azure Entra ID和Google Cloud Platform。 Atlas会存储用户标识符和权限,但不会存储密钥。 只有MongoDB驱动程序支持应用程序的这种身份验证机制。 mongosh和MongoDB Compass等其他MongoDB工具不支持此身份验证机制。

MongoDB驱动程序支持Workload Identity Federation 的两种类型的身份验证流程:内置身份验证和回调身份验证。

如果将应用程序部署在具有受支持主体类型的受支持基础架构上,则可以使用内置身份验证。 您的应用程序可以访问权限Atlas集群,而无需提供密码或手动向云提供商的元数据服务请求JSON web token 。 相反,您选择的MongoDB驾驶员会使用现有的主体标识符在幕后请求JSON web token访问权限令牌,然后在应用程序连接时,该令牌会自动传递到Atlas集群。

有关更多实施详情,请参阅所选驱动程序的文档。

内置身份验证支持的基础架构和主体类型

云服务提供商
基础架构类型
主体类型
GCP
Compute Engine
GCP 服务帐号
App Engine 标准环境
App Engine 灵活环境
Cloud Functions
Cloud Run
Google Kubernetes Engine
Cloud Build
AZURE
Azure VM
Azure 托管身份(分配的用户和系统)

您可以在任何支持 OAuth 2.0的服务中使用回调身份验证 访问权限令牌。 Workload Identity Federation 会调用回调方法,在该方法中,您可以向授权服务器或云提供商请求所需的JSON web token ,而当您的应用程序通过 Workload Identity Federation 连接到Atlas时,您必须传递该令牌。

请查看所选驱动程序的文档以了解其他实施详情。

要配置 MongoDB 的 Workload Identity Federation,请执行以下操作:

  1. 配置工作负载身份提供者(一次性设置)。

    1. 配置外部身份提供商。

    2. 在Atlas中配置工作负载身份提供程序,并为您的Atlas组织启用它。

  2. 授予外部身份(服务主体)或群组访问权限MongoDB集群的权限。

  3. 使用MongoDB驱动程序将您的应用程序连接到Atlas 。

为了使用Azure托管身份或Azure服务主体访问权限MongoDB Atlas集群,您需要注册Azure Entra ID应用程序。 如果您现有的应用程序已注册用于 Workforce (人类用户)访问权限,我们建议您注册一个单独的应用程序用于工作负载访问权限。

1
  1. 导航至 App registrations

    1. Azure门户 中 帐户,搜索并单击Microsoft Entra ID

    2. 在左侧导航栏的 Manage 部分,单击 App registrations

  2. 单击 New registration(连接)。

  3. 应用以下值。

    字段
    Name
    Atlas Database - Workload
    Supported Account Types
    Accounts in this organizational directory only (single tenant)
    Redirect URI
    Web
2

在Atlas中定义访问权限权限时,最佳实践是使用服务主体标识符作为MongoDB用户标识符。 如果您计划使用这种常用方法,请跳过此步骤。 但是,如果您更愿意使用群组标识符(例如Azure AD 安全群组标识符),则可以通过以下步骤在应用程序注册中设立群组声明。

  1. 导航至 Token Configuration

    在左侧导航栏的 Manage 部分,单击 Token Configuration

  2. 单击 Add groups claim(连接)。

  3. Edit groups claim 模式中,选择 Security

    所选择的群组取决于您在 Azure 环境中配置的群组类型。 您可能需要选择不同类型的群组 来发送相应的群组信息。

  4. Customize token properties by type(按类型自定义令牌属性)部分,确保仅选择Group ID(群组 ID)。

    当您选择 Group Id 时,Azure 将发送安全组的对象 ID。

  5. 单击 Add(连接)。

    要了解有关添加群组声明的更多信息,请参阅 Azure 文档。

3
  1. 导航到左侧边栏中的Expose an API ,然后启用应用程序ID URI。

  2. 启用应用程序ID URI。

    1. 保留Azure分配的默认应用程序ID URI,即<application_client_id> 。 复制并存储此值,因为MongoDB Atlas和所有MongoDB驱动程序都需要此值来进行 Workload Identity Federation 配置。

4
  1. 在左侧导航栏的 Manage 部分,单击 Manifest

  2. accessTokenAcceptedVersionnull 更新为 2

    数字 2 代表 Microsoft 访问令牌版本 2。其他应用程序可以将其用作 Active Directory 托管用户身份的签名证明。版本 2 确保令牌是 MongoDB 可理解的 JSON 网络令牌。

  3. 单击 Save(连接)。

要了解有关添加可选声明的更多信息,请参阅 Azure 文档。

5
  1. 在左侧导航栏中单击 Overview

    复制 Application (client) ID(应用程序(客户端)ID)值。

  2. 在顶部导航栏中,单击 Endpoints

    复制不带 /.well-known/openid-configuration 部分的 OpenID Connect metadata document 值。

    您还可以通过访问OpenID Connect metadata document URL并复制issuer的值来检索此值。

下表显示这些 Microsoft Entra ID 用户界面值在我们的 Atlas 配置属性中映射的内容:

Microsoft Entra ID UI
Atlas 配置属性
OpenID Connect metadata document (without /.well-known/openid-configuration)
Issuer URI.
Application (client) ID
Client ID.
Application ID URI (<Application ID>)
Audience

您无需在Google Cloud Platform帐户中进行任何配置更改。

注意

先决条件

此过程要求您拥有Organization Owner访问权限,并假定您已配置外部IdP 。 要学习;了解如何配置IdP ,请参阅配置外部身份提供商应用程序。

您可以配置 Workload Identity Federation,以便从Federation Management Console访问权限Atlas中的数据库。

要在Atlas中使用Azure Entra ID配置工作负载身份联合身份提供者,请执行以下操作:

1
  1. 单击Open Federation Management App

2
  1. 单击Set Up Identity ProviderConfigure Identity Provider

  2. 选择 Workload Identity Provider,然后单击 Continue

3
设置
必要性
Configuration Name
必需
指定标识此配置的人类可读标签。 此标签对Atlas用户可见。
Configuration Description
Optional
描述此配置。
Issuer URI
必需
指定Microsoft Entra ID应用程序注册时提供的颁发者 URI 值。 要学习;了解更多信息,请参阅准备外部身份中的表格。
互动讨论
必需
指定Azure Entra ID应用程序注册中的应用程序 ID URI 值。 要学习;了解更多信息,请参阅准备外部身份中的表格。
授权类型
必需

选择Group Membership以根据群组成员身份授予授权,或选择User ID以授权单个用户。

更常见的是使用用户ID进行应用程序访问权限。

Groups Claim
可选的

指定包含主体的IdP用户群组成员信息的声明的标识符。 如果选择Groups Membership作为授权类型,则必须指定此字段。 将设立的值保留为默认groups

默认值groups

User Claim
必需

请勿修改默认值sub

默认值sub

4
5
  1. 单击 Connect Organizations(连接)。

  2. 对于要连接到 Workload Identity Federation 的组织,请单击Configure Access

  3. 单击 Connect Identity Provider(连接)。

    注意

    如果您已经配置了另一个IdP , Atlas会显示Connect Identity Provider(s)按钮。

6

Connect Identity Provider(s)模式中,选择PurposeWorkload Identity Federation的工作负载身份提供者。

7

当您将 Workload Identity Provider 连接到组织时, Atlas会为该组织内的所有项目启用 Workload Identity Federation。

要在 中使用 配置 Workload Identity FederationGoogle Cloud Platform Atlas身份提供程序,请执行以下操作:

1
  1. 单击Open Federation Management App

2
  1. 单击Set Up Identity ProviderConfigure Identity Provider

  2. 选择 Workload Identity Provider,然后单击 Continue

3
设置
必要性
Configuration Name
必需
指定标识此配置的人类可读标签。 此标签对Atlas用户可见。
Configuration Description
Optional
描述此配置。
Issuer URI
必需
输入 URI https://accounts.google.com
互动讨论
必需
指定任何自定义值。 调用MongoDB驱动程序时会使用 Audience。
授权类型
必需

选择Group Membership以根据群组成员身份授予授权,或选择User ID以授权单个用户。

更常见的是使用用户ID进行应用程序访问权限。

User Claim
必需

请勿修改默认值sub

默认值sub

4
5
  1. 单击 Connect Organizations(连接)。

  2. 对于要连接到 Workload Identity Federation 的组织,请单击Configure Access

  3. 单击 Connect Identity Provider(连接)。

    注意

    如果您已经配置了另一个IdP , Atlas会显示Connect Identity Provider(s)按钮。

6

Connect Identity Provider(s)模式中,选择PurposeWorkload Identity Federation的工作负载身份提供者。

7

当您将 Workload Identity Provider 连接到组织时, Atlas会为该组织内的所有项目启用 Workload Identity Federation。

在开始之前,您必须具备以下条件才能添加数据库用户:

  • Project Owner 访问权限

  • Workload Identity Federation 在Atlas中配置并为您的组织启用。

1
2

Authentication Method 部分,选择 Federated Auth

注意

为组织启用工作负载 IdP 之前,您无法选中此框。

3
  1. Select Identity Provider部分中,选择已配置的工作负载身份提供者。

  2. 指定与已配置的工作负载身份提供者关联的用户标识符或群组标识符。

注意

  • 对于 Azure Entra ID 用户,此值映射到 Azure 用户组的 Object Id,而不是用户组名称。

  • 对于 GCP 用户,此值映射到 GCP 服务帐户的唯一 ID。

4
5
  • 如果已添加用户,请单击Add User按钮。

  • 如果已添加群组,请单击Add Group按钮。

使用以下MongoDB驱动程序通过 Workload Identity Federation身份验证将应用程序程序连接到MongoDB :

注意

此过程仅适用于管理自己签名密钥的用户。

请勿使用此功能轮换您的签名密钥。 轮换 Workload Identity Federation 签名密钥时, MongoDB会在现有访问权限令牌到期时自动获取 JWKS。

如果您的私钥遭到泄露,您可以立即撤销缓存在 MongoDB 节点中的 JSON Web 密钥集 (JWKS):

1
2
  1. 如果尚未显示,组织从导航栏中的Organizations菜单。

  2. 单击 Organizations 菜单旁边的 Organization Settings 图标。

    显示“组织设置”页面。

3

Setup Federated LoginManage Federation Settings 部分,单击 Visit Federation Management App

4
5
6

单击Revoke后,MongoDB 将通过 JWKS 端点获取新密钥。 撤销 JWKS 后,您必须重新启动客户端(例如mongoshCompass )。

要删除 Workload Identity Federation 配置,请执行以下操作:

1
  1. 如果尚未显示,组织从导航栏中的Organizations菜单。

  2. 单击 Organizations 菜单旁边的 Organization Settings 图标。

    显示“组织设置”页面。

2

Setup Federated LoginManage Federation Settings 部分,单击 Visit Federation Management App

3
  1. 单击左侧边栏中的Organizations

  2. 单击已启用 Workload Identity Federation 的组织。

  3. 单击 Workload Identity Federation 卡上Manage下拉菜单下的Disconnect

  4. Disconnect identity provider? 模式中,单击 Disconnect

    当您断开IdP的连接时,使用IdP进行身份验证的用户将无法访问Project表中列出的 Atlas 项目中的 Workload Identity Federation。

4

点击左侧导航栏中的 Identity Providers(身份提供程序)。

5
6

Delete Identity Provider? 模式中,单击 Delete

后退

劳动力(人员)