Docs 菜单

Docs 主页启动和管理 MongoDBMongoDB Atlas

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

在此页面上

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

注意

  • 此功能不适用于 M0 免费集群、M2M5 集群。如需了解更多信息,请参阅 Atlas M0(免费集群)、M2 和 M5 限制

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

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

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

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

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

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

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

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

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

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

以下过程将配置 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
2
  1. 如果尚未显示,请从导航栏的 Organizations 菜单中选择包含所需项目的组织。

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

  3. 单击侧边栏中的 Advanced(支持)。

3

注意

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

4
  • Server Hostname

    ldap.us.onelogin.com
  • Server Port636

  • Bind Username

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

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

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

您可以提供自签名证书。

7

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

8

注意

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

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

  1. 在左侧导航栏的 Security 部分,单击 Database Access

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

  3. 单击 LDAP User(连接)。

  4. 执行以下操作之一:

    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 ,请输入映射所需的用户名或电子邮件地址。

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

  6. 单击 Add User(连接)。

注意

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

以下过程将配置 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(连接)。

注意

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

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

1

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

  1. 在左侧导航栏的 Security 部分,单击 Database Access

  2. 单击 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(连接)。

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

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

  3. 单击侧边栏中的 Advanced(支持)。

3
4
5

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

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

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

输入以下Query Template

{USER}?memberOf?base

注意

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

6

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

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

注意

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

  • authSource 必须是 $external

  • authenticationMechanism 必须是 PLAIN

1

使用mongosh连接到集群。要复制连接字符串,请执行以下操作:

  1. 单击 Atlas 左上角的 Database

  2. 单击 Database Deployments 页面上的 Connect

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

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

注意

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

2

注意

在解决 OneLogin 连接问题之前,请将运行ldapsearch的主机添加到 IP 访问列表中。

使用 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

注意

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

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