使用 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(连接)。
应用以下值。
字段值NameAtlas Database - WorkloadSupported Account TypesAccounts in this organizational directory only (single tenant)Redirect URIWeb
(可选)添加群组声明。
在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 https://accounts.google.com 。 |
互动讨论 | 必需 | 指定任何自定义值。 调用MongoDB驱动程序时会使用 Audience。 |
授权类型 | 必需 | 选择 更常见的是使用用户ID进行应用程序访问权限。 |
User Claim | 必需 | 请勿修改默认值 默认值: |
使用 Workload Identity Federation 身份验证添加数据库用户
先决条件
在开始之前,您必须具备以下条件才能添加数据库用户:
Project Owner
访问权限Workload Identity Federation 在Atlas中配置并为您的组织启用。
选择Federated Auth 。
在 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。