对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

从 Okta 配置 Workforce Identity Federation

本指南向您介绍如何使用 Okta 作为 IdP 来配置 Workforce Identity Federation。

集成 Okta 和Atlas后,您的员工可以使用其 Okta凭证通过 OIDC身份验证访问权限Atlas集群。

如需管理联合身份验证,必须拥有 Organization Owner 访问权限,能够访问一个或多个将联合设置委托给实例的组织。

如需将 Okta 用作 Atlas 的 IdP,必须具备:

在如下过程中,为您的 Atlas 联合管理控制台和 Okta 帐户分别打开一个浏览器标签页会很有帮助。

使用 Okta 帐户将 Okta 配置为 OIDC IdP。

要将 OIDC 应用程序注册到 Okta,请执行以下操作:

1

在 Okta Admin仪表盘,使用左侧导航窗格GoApplications → Applications。

  1. 在 Applications 屏幕上,单击 Create App Integration。

  2. 在 Sign-in method 部分,选择 OIDC - OpenID Connect。

  3. 在 Application type 部分,选择 Native Application。

  4. 单击 Next(连接)。

要学习;了解详情,请参阅创建 OIDC应用集成。

2

创建应用集成后,系统会自动重定向到 New Native App Integration 屏幕。

  1. 在 App integration name字段中,输入应用程序的名称。

  2. 在 Grant type字段中,选择授权类型。

    启用以下授权类型:

    • Authorization Code or Device Authorization

    • (可选) Refresh Token

      启用刷新令牌可提供更好的用户体验。 如果未启用刷新令牌,则一旦访问权限令牌过期,用户就必须向身份提供商重新进行身份验证。

  3. 在 Sign-in redirect URIs 部分,输入URL。

    输入以下URL:http://localhost:27097/redirect。

  4. 在 Assignments 部分中,配置 Controlled access 和 Enable immediate access 字段。

    1. 对于 Controlled access字段,选择 Allow everyone in your organization to access。

    2. 对于 Enable immediate access字段,确保选中 Enable immediate access with Federation Broker Mode。

  5. 单击 Save(连接)。

要学习;了解详情,请参阅创建 OIDC应用集成。

3

在应用程序仪表盘上,GoGeneral标签页并配置以下内容:

  1. 在Client ID 字段中,单击图标复制客户端ID供以后使用。

  2. 在 Proof Key for Code Exchange (PKCE)字段中,确保启用 Require PKCE as additional verification(默认选中)。

4

在左侧导航窗格中,GoSecurity → API。 单击 Add Authorization Server。

  1. 在 Name字段中,输入服务器的名称。

  2. 在 Audience字段中,粘贴上一步中的客户端ID 。

  3. (可选)在 Description字段中,输入服务器的描述。

  4. 单击 Save(连接)。

要学习;了解更多信息,请参阅创建授权服务器。

5

创建授权服务器后,系统会自动重定向到授权服务器的屏幕。

在 Settings标签页下,将 Metadata URI 的第一部分复制到 .well-known 部分,以保存颁发者 URI。 URI 结构应类似于以下内容:https://trial4238026.okta.com/oauth2/ausabgmhveoOQSMsE697。

6

在授权服务器屏幕上,GoClaims标签页并单击 Add Claim。

  1. 使用以下配置信息配置 Groups 声明:

    字段
    值

    Name

    输入声明的名称。

    Include in token type

    单击下拉菜单并选择 Access Token。

    Value type

    单击下拉菜单并选择 Groups。

    Filter

    单击下拉菜单并选择 Matches regex。在下拉列表旁边,输入仅匹配用于Atlas授权 的群组的正则表达式。示例,如果您的Atlas授权群组使用通用命名前缀,请输入 ^<mongodb-atlas-group-prefix>.*,其中 <mongodb-atlas-group-prefix> 是您选择的前缀。

    Disable claim

    请勿检查。

    Include in

    选择 Any scope 。

  2. 单击 Create(连接)。

重要

避免使用 .* 作为过滤值。 .*表达式匹配分配给用户的每个群组,包括与Atlas授权无关的群组。广泛的过滤会增加访问权限令牌的大小,并且当令牌超过 preAuthMaximumMessageSizeBytes 限制(默认为 16 KiB )时,可能会导致身份验证失败。

要减小令牌大小,请为Atlas授权组创建专用命名约定,并根据该约定过滤。

如果您的部署有意要求大型群组声明,则可以增加集群上的 preAuthMaximumMessageSizeBytes 参数。但是,增加此限制会对资源和安全产生影响,并且不应用于不必要的广泛声明的变通方法。

要学习;了解更多信息,请参阅创建声明。

7

在授权服务器屏幕上,GoAccess Policies标签页并单击 Add Policy。

  1. 在 Name字段中,输入策略名称。

  2. 在 Description字段中,输入策略的说明。

  3. 在 Assign to字段中,选择 All clients。

  4. 单击 Create Policy(连接)。

要学习;了解更多信息,请参阅创建访问策略。

8

在 Access Policies标签页下,单击 Add Rule。

  1. 在 Rule Name字段中,输入访问权限策略的名称。

  2. 对于 IF Grant Type is,请选择一种授权类型。

    配置授权类型时,请根据客户端行为选择适当的选项:

    • 如果客户端代表自身运行,请选择 Client Credentials。

    • 如果客户端端代表用户,请选择以下选项:

      • Authorization Code

      • Device Authorization

  3. 根据组织的安全策略添加规则配置。

    Okta 规则配置示例:

    字段
    值

    AND user is

    选择 Any user assigned to the app 。

    AND Scopes requested

    选择 Any scopes 。

    THEN Use this inline hook

    无(已禁用)

    AND Access token lifetime is

    1 Hours

    AND Refresh token lifetime is

    单击第二个下拉菜单并选择 Unlimited。

    but will expire if not used every

    输入 7 days。

  4. 单击 Create Rule(连接)。

要学习;了解详情,请参阅为每个访问策略创建规则。

9

在左侧导航窗格中,GoDirectory → Groups 并单击 Add Group。

  1. 在 Name字段中,将目录命名为 OIDC。

  2. (可选)在 Description字段中,输入规则的说明。

10

在左侧导航窗格中,GoDirectory → People 并单击 Add Person。

  1. 通过在相应字段中输入以下值来提供用户详细信息:

    字段
    值

    User type

    选择 User 。

    First name

    根据需要提供名称。

    Last name

    根据需要提供名称。

    Username

    输入电子邮件作为用户名。

    Primary email

    输入电子邮件。 电子邮件必须与 Username字段使用的电子邮件相同。

    Secondary email

    可选。

    Groups

    输入 OIDC。

    Activation

    选择 Activate Now 并选中 I will set password。

    Password

    输入密码。

    User must change password on first login

    选择 Optional

  2. 单击 Save(连接)。

要学习;了解更多信息,请参阅手动添加用户。

注意

先决条件

此过程要求您拥有 Organization Owner访问权限,并假设您已在 IdP 中创建 OIDC应用程序。要学习;了解如何配置 IdP,请参阅将 Okta 配置为身份提供者。

要在Atlas中配置劳动力身份提供程序,请执行以下操作:

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

  2. 在侧边栏中,单击 Identity & Access 标题下的 Federation。

  3. 单击 Open Federation Management App(连接)。

显示“联合”页面。

2
  1. 单击左侧边栏中的Identity Providers 。

  2. 执行以下步骤之一:

    • 如果您尚未配置任何身份提供程序,单击 Set Up Identity Provider(设置身份提供程序)。

    • 否则,在Identity Providers屏幕上单击Configure Identity Provider(s) 。

  3. 选择 Workforce Identity Federation,然后单击 Continue。

  4. 选择 OIDC for Data Access 。

3
设置
必要性
值
Configuration Name

必需

标识此配置的人类可读标签。 此标签对Atlas用户可见。

Configuration Description

Optional

描述此配置的人类可读标签。

Issuer URI

必需

已注册的 IdP应用程序提供的发行者值。 MongoDB使用此 URI 查找 OpenID 提供程序配置文档,该文档应在 /.well-known/openid-configuration 端点中可用。

Client ID

必需

已注册应用程序的唯一标识符。 输入您在外部身份提供程序中注册的应用的clientId值。

Audience

必需

外部身份提供商打算为其提供令牌的实体。 输入您在外部身份提供程序中注册的应用的audience值。 通常,此值与Client ID相同。

Requested Scopes

Optional

授予用户从授权端点请求数据权限的令牌。 如果计划支持刷新令牌,则此字段必须包含值offline_access 。

对于要添加的每个附加作用域,请单击 Add more scopes(添加更多作用域)。

Authorization Type

必需

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

Customize Groups Claim

必需

包含主体的 IdP 用户群组成员信息的声明的标识符。接受默认值,除非 IdP 使用不同的声明,或者您需要自定义声明。仅当您选择 Group Membership 时才需要此字段。

默认值:groups

Customize User Claim

必需

包含用户主体身份的声明的标识符。 接受默认值,除非IdP使用不同的声明。

默认值:sub

4
5

注意

仅当您需要将多个 Workforce 身份提供程序 连接到具有不同域的同一组织时,才需要执行此步骤。Atlas最多支持将两个 Workforce 身份提供程序连接到一个组织:一个 OIDC 身份提供程序(用于数据库访问权限)和一个 SAML 身份提供程序(用于用户界面访问权限)。

  1. 在“劳动力身份提供程序”卡中,单击Associate Domains 。

  2. 在 Associate Domains with Identity Provider(将域与身份提供程序相关联)模式中,选择一个或多个域。

  3. 单击 Submit(连接)。

6
  1. 单击 Connect Organizations(连接)。

  2. 对于要连接到 Workforce Identity Provider 的组织,请单击Configure Access 。

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

    注意

    如果您配置了其他 IdP,此按钮会显示 Connect Identity Provider(s)。

7

在Connect Identity Provider(s)模式中,选择Purpose为Workforce Identity Federation的劳动力身份提供者。

8

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

1
  1. 如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。

  2. 如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。

  3. 在侧边栏中,单击 Security 标题下的 Database & Network Access。

数据库和完成上述步骤后,将显示“网络访问”页面。

2

单击 Add New Database User or Group(添加新的数据库用户)。

注意

在将 Workforce IdP 应用到 Atlas 之前,此按钮显示 Add New Database User。

3

在 Authentication Method 部分,选择 Federated Auth。

注意

在为组织启用 Workforce IdP 之前,您无法选中此复选框。

4

在 Select Identity Provider 部分中,选择已配置的 OIDC 身份提供者。

指定与您配置的 Workforce 身份提供程序关联的用户标识符或群组标识符。

注意

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

5

要向新用户或群组分配权限,请执行以下一项或多项任务:

  • 从 Built-in Role 下拉菜单中,选择一个内置角色。

    • 您可以在 Atlas 用户界面中为每个数据库组选择一个内置角色。

    • 如果删除默认选项,则可以单击Add Built-in Role选择新的内置角色。

  • 选择或添加自定义角色。

    • 如果您定义了任何自定义角色,则可以展开Custom Roles部分,然后从Custom Roles下拉菜单中选择一个或多个角色。

    • 单击Add Custom Role以添加更多自定义角色。

    • 单击Custom Roles链接可查看项目的自定义角色。

  • 添加权限。

    • 展开Specific Privileges部分,然后从Specific Privileges下拉菜单中选择一个或多个权限。

    • 单击Add Specific Privilege可添加更多权限。 这将为群组分配对各个数据库和集合的特定权限。

  • 删除已应用的角色或特权。

    • 单击Delete旁边

      要删除的角色或特权。

    注意

    如果只选择了一个选项,Atlas 不会在 Built-in Role(内置角色)、Custom Role(自定义角色)或 Specific Privilege(特定权限)选项旁边显示 Delete(删除)图标。应用了其他角色或权限后,就可以删除选定的角色或权限。

Atlas 可以将一个内置角色、多个自定义角色和多个特定权限应用到 数据库群组。

要了解有关授权的更多信息,请参阅 MongoDB 手册中的基于角色的访问控制和内置角色。

6

默认情况下,群组可以访问项目中的所有集群和联合数据库实例。 要限制对特定集群和联合数据库实例的访问,请执行以下操作:

  1. 将 Restrict Access to Specific Clusters/Federated Database Instances 切换到 On。

  2. 从 Grant Access To(向其授予访问权限)列表中选择要向该群组授予其访问权限的集群和联合数据库实例。

7

将Temporary User或Temporary Group切换为On ,然后选择一个时间,在此时间之后 Atlas 可以从Temporary User Duration或Temporary Group Duration下拉列表中删除用户或群组。 您可以选择以下时间段之一作为群组的存在时间:

  • 6 小时

  • 1 天

  • 1 周

在Database Users标签页中,临时用户或临时群组会显示 Atlas 删除这些用户或群组之前的剩余时间。 Atlas 删除用户或群组后,使用临时用户或群组档案的任何客户端或应用程序都将失去对集群的访问权限。

8

执行以下步骤之一:

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

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

下面列出了使用 Workforce Identity Federation身份验证将客户端连接到MongoDB 的方法:

注意

如果配置了设备授权流,则在与mongosh连接时必须传递 --oidcFlows=device-auth 标志。示例:

mongosh "<connection-string>" \
--authenticationMechanism MONGODB-OIDC \
--oidcFlows=device-auth