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

使用 OneLogin VLDAP 配置用户身份验证和授权

注意

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

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

注意

此功能不适用于以下任何部署:

  • 免费集群

  • Flex 集群

要学习;了解更多信息,请参阅限制。

This guide shows you how to enable Atlas to authenticate and authorize database users (not Atlas users) from OneLogin, a third-party LDAP provider.

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

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

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

Atlas 支持通过 OneLogin 对数据库用户进行身份验证和授权。

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

  • Atlas 不支持对从现有 LDAP 目录同步的用户进行身份验证和授权。

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

To manage LDAP users or groups, you must have Organization Owner or Project Owner access to Atlas.

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

1
  1. 要学习;了解有关设置 OneLogin LDAP 服务的更多信息,请参阅 OneLogin 文档。

    重要

    您可能需要联系 OneLogin 支持部门,为您的账户启用 VLDAP 服务。

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

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

    https://<onelogin-instance-id>.onelogin.com
2

在 OneLogin 中,单击Authentication ,然后单击VLDAP 。 将以下内容添加到Allow access by IP address字段,将其添加到IP访问列表:

  1. Atlas 集群中每个节点的 IP 地址。 使用nslookup获取集群中每台主机的 IP 地址,并使用 Atlas 生成的主机名:

    nslookup cluster0-shard-00-00-example.mongodb.net

    注意

    如果任何节点的 IP 地址发生变化,则必须使用新的 IP 地址更新 IP 访问列表。

  2. 可选)您可以运行ldapsearch命令以解决 LDAP 连接问题的计算机的 IP 地址。

3
  1. 创建新的 OneLogin 用户 用作 Atlas 绑定用户。绑定用户是 OneLogin 用户,用于查询帐户并在数据库用户连接到 Atlas 数据库时验证数据库用户的档案。

    创建绑定用户时, EmailUsername字段为必填项。 您应该在这两个字段中输入相同的电子邮件地址。

    重要

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

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

    cn=<bind-user-email>,ou=users,dc=<onelogin-instance-id>,dc=onelogin,dc=com

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

    cn=bind@example.com,ou=users,dc=mdb-example,dc=onelogin,dc=com
4

在 OneLogin 中,为绑定用户分配Manage usersManage groupSuper user权限。

注意

如果您向绑定用户授予Manage group权限,则必须选择一个群组。Atlas 只能对属于该群组的LDAP用户进行身份验证和授权。

  1. 导航到 OneLogin 用户页面。

  2. 单击绑定用户。

  3. 单击 Add Privilege(连接)。

  4. 选择要授予用户的权限,然后单击Continue

  5. 单击 Save User(连接)。

5

如果尚未设置,请在 OneLogin 中为绑定用户设置密码:

  1. 单击 More Actions,然后单击 Change Password

  2. 输入密码,然后单击Update

6

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

  1. 导航到 OneLogin 用户页面。

  2. 单击 New User(连接)。

  3. 输入用户的详细信息。

    创建数据库用户时, EmailUsername字段为必填项。 在这两个字段中输入相同的电子邮件地址。

    注意

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

  4. 单击 Save User(连接)。

7

如果尚未这样做,请在 OneLogin 中为每个数据库用户设置密码:

  1. 导航到 OneLogin 用户页面。

  2. 单击要为其设置密码的用户。

  3. 单击 More Actions,然后单击 Change Password

  4. 输入密码,然后单击Update

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

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

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

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

  4. 在侧边栏中,单击 Advanced

    显示“高级”页面。

2

注意

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

3

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

4

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

[
{
"match": "(.+)",
"substitution": "cn={0},ou=users,dc=<onelogin_instance_id>,dc=onelogin,dc=com"
}
]
5

您可以提供自签名证书。

6

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

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

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

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

The Database & Network Access page displays.

8

注意

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

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

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

  2. 单击 LDAP User(连接)。

  3. 执行以下操作之一:

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

      cn=<user-name>,ou=users,dc=<onelogin-instance-id>,dc=onelogin,dc=com

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

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

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

  5. 单击 Add User(连接)。

注意

Skip this section if you don't want to enable LDAP authorization.

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

重要

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

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

1

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

为要授予用户的每个访问权限级别创建单独的 OneLogin 群组。 例如,为一个数据库的读取访问创建一个群组,为读写访问创建另一个群组,依此类推。

  1. 导航到 OneLogin 群组页面。

  2. 单击 New Group(连接)。

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

  4. 单击 Save(连接)。

2

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

  1. 导航到 OneLogin 用户页面。

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

  3. 单击 Authentication 标签页。

  4. 选择要将用户添加到的群组。

  5. 单击 Save User(连接)。

注意

Skip this section if you don't want to enable LDAP authorization.

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

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

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

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

The Database & Network Access page displays.

2

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

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

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

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

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

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

  2. 单击 Add User(连接)。

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

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

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

  4. 在侧边栏中,单击 Advanced

    显示“高级”页面。

4
5
6

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

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

查询的格式必须符合 RFC4515 RFC4516 。

输入以下Query Template

{USER}?memberOf?base

注意

其他查询模板也可能有效。

7

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

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

注意

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

  • authSource 必须是 $external

  • authenticationMechanism 必须是 PLAIN

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

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

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

会显示集群页面。

2

Use mongosh to connect to your cluster. To copy the connection string:

  1. 单击 Connect(连接)。

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

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

注意

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

3

注意

add the host from which you're running ldapsearch to your IP access list before you troubleshoot OneLogin connection issues.

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

使用以下 ldapsearch 模板:

ldapsearch -H 'ldaps://ldap.us.onelogin.com:636' -D '<bind_user_dn>' -w '<bind_user_pwd>' -b 'dc=<onelogin_instance_id>,dc=onelogin,dc=com' -s sub

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

ldapsearch -H 'ldaps://ldap.us.onelogin.com:636' -D 'cn=jane@example.com,ou=users,dc=mdb-example,dc=onelogin,dc=com' -w '<REDACTED>' -b 'dc=mdb-example,dc=onelogin,dc=com' -s sub

注意

其他查询模板也可能有效。