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

使用 Okta LDAP 接口配置用户身份验证和授权

在此页面上

  • 限制
  • 必需的访问权限
  • 步骤
  • 为 LDAP 身份验证配置 Okta
  • 为 LDAP 身份验证配置 Atlas
  • 为 LDAP 授权配置 Okta
  • 为 LDAP 授权配置 Atlas
  • 使用以下命令连接到集群 mongosh
  • 在Atlas中, Go项目的 Clusters 页面。
  • 使用添加到 Atlas 的用户档案连接到集群。
  • 连接到集群后,运行命令以验证用户是否具有您为其分配的读取或写入特权。
  • 排除 LDAP 连接问题

注意

从MongoDB 8.0开始, LDAP身份验证和授权已弃用。该功能可用,并将在MongoDB 8的整个生命周期内继续运行,无需进行任何更改。 LDAP将在未来的主要发布中删除。

有关详细信息,请参阅 LDAP弃用。

注意

  • 此功能不适用于 M0免费集群、 M2M5集群。要了解更多信息,请参阅 Atlas M 0 (免费集群)、M 2和 M 5限制。

  • 无服务器实例目前不支持此功能。要了解更多信息,请参阅无服务器实例限制

本指南向您展示如何启用Atlas从 Okta 对数据库用户(非Atlas用户)进行身份验证和授权 ,第三方 LDAP 提供商。

您可以仅启用 LDAP 身份验证,也可以同时启用 LDAP 身份验证和授权:

  • 如果您仅启用 LDAP 身份验证,则将单个用户添加到 Atlas,并为每个添加的用户分配数据库访问权限。

  • 如果您同时启用 LDAP 身份验证和授权,则将用户组添加到 Atlas,并为每个群组分配数据库访问权限。用户从其所属的 LDAP 群组继承数据库访问权限。

Atlas 支持:

  • 通过 Okta Active Directory 同步对数据库用户进行身份验证。

  • 从 Okta 对数据库用户进行身份验证。

  • 在 Okta 群组中授权数据库用户。

  • 您必须部署 M10 或更大的 Atlas 集群才能启用 LDAP 集成。LDAP 集成是 Atlas Enterprise 的一项功能。

  • Atlas 不支持在 Okta Active Directory 同步群组中授权数据库用户。

  • Atlas 不支持数据库用户的单点登录集成。要了解 Atlas 管理 Web 界面的单点登录集成,请参阅配置联合身份验证

要管理 LDAP 用户或群组,必须拥有 Atlas 的 Organization OwnerProject Owner 访问权限。

以下过程将 Okta 配置为使用 Atlas 进行身份验证:

1
  1. 要了解有关设置 Okta LDAP 界面的更多信息,请参阅 Okta 文档。

  2. 记下您的<okta-instance-id> 。 您必须在配置过程中在多个位置提供此值。

    实例名称位于用于登录 Okta 帐户的 URL 中:

    https://<okta-instance-id>.admin.okta.com
2
  1. 创建新的 Okta 用户 用作 Atlas 绑定用户。绑定用户是 Okta 用户,用于查询帐户以及在数据库用户连接到 Atlas 数据库时验证数据库用户的档案。

    重要

    请勿将您自己的用户帐户用于绑定用户。

  2. 使用以下模板确定绑定用户的完整标识名 (DN):

    uid=<bind-user-email>,dc=<okta-instance-id>,dc=okta,dc=com

    例如,如果<bind-user-email>bind@example.com<okta-instance-id>mdb-example ,则绑定用户的标识名为:

    uid=bind@example.com,ou=users,dc=mdb-example,dc=okta,dc=com
3

如果此类用户不存在,请在 Okta 中创建要授予数据库访问权限的用户:

  1. 导航到 Okta 人员页面。

  2. 单击 Add Person(连接)。

  3. 输入用户的详细信息。 使用电子邮件地址作为用户名。

    注意

    避免输入带有加号 ( + ) 的电子邮件地址。 Atlas LDAP集成可能会遇到包含加号的电子邮件地址问题。

  4. 单击 Save(连接)。

以下过程使 Atlas 能够从 Okta LDAP对数据库用户进行身份验证:

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

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

  3. 在侧边栏中,单击Security标题下的Advanced

    显示“高级”页面。

2

注意

启用此功能后,您可能会产生额外的费用。请参阅高级安全

3

您可以列出多个服务器,用逗号分隔。不能使用不同的端口。

4

将用户添加到 DN 映射(类似于以下示例),以允许客户端在连接到 Atlas 数据库时提供其电子邮件地址而不是完整 DN:

[
{
"match": "(.+)",
"substitution": "uid={0},ou=users,dc=<okta_instance_id>,dc=okta,dc=com"
}
]
5

您可以提供自签名证书。

6

等待 Atlas 部署更改。Atlas 使用 您提供的配置详细信息,验证集群是否可以连接到 LDAP 服务器、 使用 LDAP 服务器进行身份验证和查询 LDAP 服务器。

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

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

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

    显示数据库访问页面。

8

注意

如果要启用 LDAP 授权,请跳过此步骤

将 Okta LDAP中托管的用户添加到 Atlas。

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

  2. 单击 LDAP User(连接)。

  3. 执行以下操作之一:

    1. 如果您尚未输入 User to DN Mapping,请输入 LDAP 用户的完整标识名 (DN)。遵循此模板:

      uid=<user-name>,ou=users,dc=<okta-instance-id>,dc=okta,dc=com

      例如,如果 <user-name>jane@example.com 并且 <okta-instance-id>mdb-example,则用户的 DN 为:

      uid=jane@example.com,ou=users,dc=mdb-example,dc=okta,dc=com
    2. 如果您输入了User to DN Mapping ,请输入映射所需的用户名或电子邮件地址。

  4. 选择要授予用户的数据库访问级别。

  5. 单击 Add User(连接)。

注意

如果您不想启用 LDAP 授权,请 跳过此部分 。

以下过程将配置 Atlas 以授权属于 Okta LDAP数据库访问群组的用户。

重要

  • 在启用授权之前,您必须启用 LDAP 身份验证。

  • 启用和配置 LDAP 授权后,仅配置为 LDAP 身份验证的数据库用户将无法再访问数据库。

1

Atlas LDAP 授权使用 LDAP 群组,确定用户是否有权执行数据库操作。

Create separate Okta groups for each level of access that you want to grant to users. 例如,为一个数据库的读取访问创建一个群组,为读写访问创建另一个群组,依此类推。

  1. 单击Groups Directory,然后单击 ,导航到 OktaGroups 页面。

  2. 单击 Add Group(连接)。

  3. 输入群组名称,例如db-read

  4. 单击 Add Group(连接)。

2

根据每个用户所需的访问级别,将用户分配到不同的组。

  1. 单击要添加用户的群组。

  2. 单击 Manage People(连接)。

  3. 将用户添加到群组,然后单击Save

3

绑定用户必须具有Read Only Administrator权限,才能授权用户针对特定的 Okta 群组并执行 LDAP 搜索。为绑定用户分配Read Only Administrator权限:

  1. 单击Administrators Security,然后单击 ,导航到 OktaAdministrators 页面。

  2. 单击 Add Administrator(连接)。

  3. 搜索绑定用户,然后选择Read Only Administrator角色。

  4. 单击 Add Administrator(连接)。

注意

如果您不想启用 LDAP 授权,请 跳过此部分 。

以下过程将 Okta 数据库访问群组添加到 Atlas,并在 Atlas 中启用数据库用户授权:

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

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

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

    显示数据库访问页面。

2

将您创建的每个 Okta 数据库群组添加到 Atlas。 您添加的群组成员有权执行授予该群组的数据库操作。

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

  1. 点击 LDAP Group,然后输入包含数据库用户的组的完整标识名,即使启用了 User to DN Mapping 也要如此操作。遵循此模板:

    cn=<group-name>,ou=groups,dc=<okta-instance-id>,dc=okta,dc=com

    例如,如果<group-name>db-read<okta-instance-id>mdb-example ,则绑定用户的标识名为:

    cn=db-read,ou=groups,dc=mdb-example,dc=okta,dc=com
  1. 选择要授予此群组中用户的数据库访问级别。

  2. 单击 Add User(连接)。

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

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

  3. 在侧边栏中,单击Security标题下的Advanced

    显示“高级”页面。

4
5
6

当用户尝试执行操作时,Atlas 会执行 LDAP 查询模板,获取经验证的用户所属的 LDAP 群组。如果查询返回至少一个有权执行此操作的群组,则 Atlas 允许执行此操作。如果查询未返回有权执行此操作的群组,则 Atlas 不允许执行此操作。

在运行查询时,Atlas 会替换 {USER} 占位符中经验证的用户名。该查询与 Server Hostname 中指定的主机相关。

查询的格式必须符合 RFC4515 。

如果要识别用户所属的群组,可以使用以下Query Template

ou=groups,dc=<okta-instance-id>,dc=okta,dc=com?dn?sub?(&(objectClass=groupofUniqueNames)(uniqueMember={USER}))

注意

其他查询模板也可能有效。 使用默认模板{USER}?memberOf?base可能会导致搜索时间更长。

7

等待 Atlas 部署更改。Atlas 使用 您提供的配置详细信息,验证集群是否可以连接到 LDAP 服务器、 使用 LDAP 服务器进行身份验证和查询 LDAP 服务器。

以下过程验证 LDAP 身份验证(以及 LDAP 授权,如启用)是否配置正确:

注意

启用 LDAP 身份验证后,数据库用户必须为其客户端覆盖连接字符串中的以下参数:

  • authSource 必须是 $external

  • authenticationMechanism 必须是 PLAIN

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

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

  3. 如果 Clusters(数据库部署)页面尚未出现,请单击侧边栏中的 Database(数据库)。

    此时会显示“集群”页面。

2

使用mongosh连接到集群。 要复制连接string :

  1. 单击 Connect(连接)。

  2. 单击 LDAP,然后单击 Copy(复制)。

  3. 粘贴并编辑包含您的用户 DN 和密码的字符串。

注意

如果未启用用户到 DN 映射,则使用用户的完整 DN 连接集群。

3

注意

在 Okta 中,绑定用户必须具有Read Only Administrator特权才能执行 LDAP 搜索。 在运行ldapsearch之前,确保绑定用户具有这些权限

使用 ldapsearch,确定您配置 Atlas 所使用的查询模板是否按预期方式返回用户 DN。如果 LDAP 身份验证有效,但 LDAP 授权无效,则查询模板可能不会返回正确的用户 DNS。

使用以下 ldapsearch 模板:

ldapsearch -H 'ldaps://<okta-instance-id>.ldap.okta.com' -D "<bind-user-dn>" -w "<bind-user-pwd>" -b 'ou=groups,dc=<okta-instance-id>,dc=okta,dc=com' '(&(objectClass=groupofUniqueNames)(uniqueMember=<bind-user-dn or group-dn>))

例如,如果bind-user-dnuid=jane@example.com,ou=users,dc=mdb-example,dc=okta,dc=com<okta-instance-id>mdb-example ,则使用以下命令:

ldapsearch -H 'ldaps://mdb-example.ldap.okta.com' -D "uid=jane@example.com,dc=mdb-example,dc=okta,dc=com" -w "REDACTED" -b 'ou=groups,dc=mdb-example,dc=okta,dc=com' '(&(objectClass=groupofUniqueNames)(uniqueMember=uid=jane@example.com,ou=users,dc=mdb-example,dc=okta,dc=com))'

注意

其他查询模板也可能有效。 使用默认模板{USER}?memberOf?base可能会导致搜索时间更长。

后退

Microsoft Entra ID DS