使用 OAuth 设置 Workload Identity Federation 2.0
在此页面上
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,请执行以下操作:
配置外部身份提供商。
在Atlas中配置工作负载身份提供程序,并为您的Atlas组织启用它。
准备外部身份提供者
为了使用Azure托管身份或Azure服务主体访问权限MongoDB Atlas集群,您需要注册Azure Entra ID应用程序。 如果您现有的应用程序已注册用于 Workforce (人类用户)访问权限,我们建议您注册一个单独的应用程序用于工作负载访问权限。
注册应用程序。
导航至 App registrations 。
在 Azure门户 中 帐户,搜索并单击Microsoft Entra ID 。
在左侧导航栏的 Manage 部分,单击 App registrations。
单击 New registration(连接)。
应用以下值。
字段值Name
Atlas Database - Workload
Supported Account Types
Accounts in this organizational directory only (single tenant)
Redirect URI
Web
(可选)添加群组声明。
在Atlas中定义访问权限权限时,最佳实践是使用服务主体标识符作为MongoDB用户标识符。 如果您计划使用这种常用方法,请跳过此步骤。 但是,如果您更愿意使用群组标识符(例如Azure AD 安全群组标识符),则可以通过以下步骤在应用程序注册中设立群组声明。
导航至 Token Configuration。
在左侧导航栏的 Manage 部分,单击 Token Configuration。
单击 Add groups claim(连接)。
在 Edit groups claim 模式中,选择 Security。
所选择的群组取决于您在 Azure 环境中配置的群组类型。 您可能需要选择不同类型的群组 来发送相应的群组信息。
在 Customize token properties by type(按类型自定义令牌属性)部分,确保仅选择Group ID(群组 ID)。
当您选择 Group Id 时,Azure 将发送安全组的对象 ID。
单击 Add(连接)。
要了解有关添加群组声明的更多信息,请参阅 Azure 文档。
更新清单。
在左侧导航栏的 Manage 部分,单击 Manifest。
将 accessTokenAcceptedVersion 从
null
更新为2
。数字
2
代表 Microsoft 访问令牌版本 2。其他应用程序可以将其用作 Active Directory 托管用户身份的签名证明。版本 2 确保令牌是 MongoDB 可理解的 JSON 网络令牌。单击 Save(连接)。
要了解有关添加可选声明的更多信息,请参阅 Azure 文档。
记住元数据。
在左侧导航栏中单击 Overview。
复制 Application (client) ID(应用程序(客户端)ID)值。
在顶部导航栏中,单击 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帐户中进行任何配置更改。
配置工作负载 Identity Federation 身份验证
您可以配置 Workload Identity Federation,以便从Federation Management Console访问权限Atlas中的数据库。
要在Atlas中使用Azure Entra ID配置工作负载身份联合身份提供者,请执行以下操作:
输入以下 Workload Identity Federation 设置。
设置 | 必要性 | 值 |
---|---|---|
Configuration Name | 必需 | 指定标识此配置的人类可读标签。 此标签对Atlas用户可见。 |
Configuration Description | Optional | 描述此配置。 |
Issuer URI | 必需 | 指定Microsoft Entra ID应用程序注册时提供的颁发者 URI 值。要学习;了解更多信息,请参阅准备外部身份中的表格。 |
互动讨论 | 必需 | 指定Azure Entra ID应用程序注册中的应用程序 ID URI 值。要学习;了解更多信息,请参阅准备外部身份中的表格。 |
授权类型 | 必需 | 选择 更常见的是使用用户ID进行应用程序访问权限。 |
Groups Claim | 可选的 | 指定包含主体的IdP用户群组成员信息的声明的标识符。 如果选择 默认值: |
User Claim | 必需 | 请勿修改默认值 默认值: |
要在 中使用 配置 Workload Identity FederationGoogle Cloud Platform Atlas身份提供程序,请执行以下操作:
输入以下 Workload Identity Federation 设置。
设置 | 必要性 | 值 |
---|---|---|
Configuration Name | 必需 | 指定标识此配置的人类可读标签。 此标签对Atlas用户可见。 |
Configuration Description | Optional | 描述此配置。 |
Issuer URI | 必需 | 输入 URI |
互动讨论 | 必需 | 指定任何自定义值。 调用MongoDB驱动程序时会使用 Audience。 |
授权类型 | 必需 | 选择 更常见的是使用用户ID进行应用程序访问权限。 |
User Claim | 必需 | 请勿修改默认值 默认值: |
使用 Workload Identity Federation 身份验证添加数据库用户
先决条件
在开始之前,您必须具备以下条件才能添加数据库用户:
Project Owner
访问权限Workload Identity Federation 在Atlas中配置并为您的组织启用。
选择 Federated Auth(Atlas SQL)。
在 Authentication Method 部分,选择 Federated Auth。
注意
在为组织启用工作负载 IdP 之前,您无法选中此框。
使用 Workload Identity Federation 将应用程序连接到 MongoDB
使用以下MongoDB驱动程序的列出版本或更高版本,通过 Workload Identity Federation身份验证将应用程序程序连接到MongoDB :
管理现有工作负载 Identity Federation 配置
Revoke JWKS
注意
此过程仅适用于管理自己签名密钥的用户。
请勿使用此功能轮换您的签名密钥。 轮换 Workload Identity Federation 签名密钥时, MongoDB会在现有访问权限令牌到期时自动获取 JWKS。
如果您的私钥遭到泄露,您可以立即撤销缓存在 MongoDB 节点中的 JSON Web 密钥集 (JWKS):
在 Atlas 中,转到 Organization Settings(项目设置)页面。
如果尚未显示,组织从导航栏中的Organizations菜单。
单击 Organizations 菜单旁边的 Organization Settings 图标。
显示“组织设置”页面。
删除工作负载 Identity Federation 配置
要删除 Workload Identity Federation 配置,请执行以下操作:
在 Atlas 中,转到 Organization Settings(项目设置)页面。
如果尚未显示,组织从导航栏中的Organizations菜单。
单击 Organizations 菜单旁边的 Organization Settings 图标。
显示“组织设置”页面。
点击左侧导航栏中的 Identity Providers(身份提供程序)。
在 Delete Identity Provider? 模式中,单击 Delete。