Docs 菜单
Docs 主页
/
MongoDB Atlas
/ /

使用 LDAP 设置用户身份验证和授权

在此页面上

  • 必需的访问权限
  • 先决条件
  • 建议
  • Considerations
  • LDAP 授权和 X.509 用户之间的冲突
  • 用户名
  • 连接字符串
  • 配置更改时滚动重启
  • 使用公共 IP 地址
  • 限制
  • 步骤
  • 使用 LDAP 配置身份验证
  • 配置授权
  • 添加 LDAP 数据库用户或群组
  • 查看 LDAP 配置
  • 禁用 LDAP 配置
  • 第三方 LDAP 提供商教程

注意

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

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

注意

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

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

Atlas 提供了通过 TLS 使用自有轻量级目录访问协议 (LDAP) 服务器从所有 MongoDB 客户端管理用户身份验证和授权的功能。一个 LDAPS (LDAP over TLS) 配置适用于项目中的所有集群。

如果您用 LDAP 启用用户授权,则可以通过将 LDAP 群组映射到 Atlas 数据库中的 MongoDB 角色,在 admin 数据库中创建 LDAP 群组。要有效地使用 LDAP 群组,请在 Atlas 中创建其他项目,控制对组织特定部署的访问权限,例如为开发和生产环境创建单独的 Atlas 项目。然后,您可以将 LDAP 群组映射到 Atlas 项目中的角色,提供对所需部署的访问权限。

注意

当您启用用户授权且 LDAP 用户不属于任何 LDAP 群组时,Atlas 不会为此用户分配任何数据库角色。当您启用用户身份验证并禁用用户授权时,Atlas 会将 MongoDB 数据库角色分配给 LDAP 用户。

如果您的多个部门有自己的账单需求、警报设置和项目成员,请考虑为每个部门或业务部门创建一组新项目或新组织

注意

LDAP的解释超出了MongoDB文档的范围。 请查看 RFC4515 RFC4516 或参阅您首选的 LDAP 文档。

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

您必须满足以下先决条件,才能在 Atlas 中使用 LDAP 管理用户身份验证和授权:

  • 使用 MongoDB 4.0 或更高版本的 Atlas 集群。

  • 使用 TLSLDAP 服务器,Atlas 集群可以使用 VPC 或 VNet 对等互连或集群节点的公共 IP 地址通过网络访问此服务器。

  • LDAP 群组成员身份作为每个用户的属性嵌入 LDAP 条目,仅用于用户授权。

对于访问 Atlas 集群的 LDAPS 服务,MongoDB 建议采用以下两种配置之一:

使用 VPC 或 VNet:

  1. VPC 或 VNet 中运行 LDAP 服务器。

  2. 建立与 Atlas 项目的对等互连。

  3. 使用可解析为 LDAP 服务器私有 IP 地址的公共 FQDN

使用您的数据中心:

  1. 使用可解析为公共 IP 地址的公共 FQDN 运行 LDAP 服务器。

  2. 配置 LDAP 服务器,支持从 Atlas 集群节点的公共 IP 地址进行入站访问。

如果启用 LDAP 授权,则使用 Atlas 托管的 X. 509证书进行身份验证的用户将无法连接到集群。

启用 LDAP 授权后,您可以通过使用自托管 X. 509证书进行身份验证的用户来连接集群。 但是,用户的 X. 509证书中的公用名必须与有权使用 LDAP 访问数据库的用户的标识名匹配。

Atlas 使用 LDAP 服务器中用户的完整可分辨名称 (DN) 作为 Atlas 用户名。例如,一个名为 ralph 的示例 LDAP 用户在 Atlas 中的用户名如下:

cn=ralph,cn=Users,dc=aws-atlas-ldap-01,dc=myteam,dc=com

如果管理员通过 LDAP 启用用户身份验证,或者同时启用用户身份验证和授权,则数据库用户必须为其客户端覆盖连接字符串中的以下参数。

  • authSource 必须是 $external

  • authenticationMechanism 必须是 PLAIN

例子

的以下连接string mongoshLDAP对名为 的rob 用户进行身份验证:

mongosh "mongodb+srv://cluster0-tijis.mongodb.net/test?authSource=%24external" \
--authenticationMechanism PLAIN \
--username cn=rob,cn=Users,dc=ldaps-01,dc=myteam,dc=com

要复制连接字符串:

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

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

  3. 如果尚未显示,请单击侧边栏中的Clusters

    会显示集群页面。

2

单击 Connect(连接)。

3

使用 User DN 和密码编辑字符串。

注意

如果您的密码、数据库名称或连接字符串包含保留的 URI 字符,则必须对这些字符进行转义。例如,如果您的密码是 @bc123,则在连接字符串中指定密码时必须对 @ 字符进行转义,例如 %40bc123。要了解详情,请参阅连接字符串密码中的特殊字符

如果您更改 LDAP 配置,则 Atlas 将对集群执行滚动重启。重启后,Atlas 可通过正确的设置验证用户身份。

您可以通过网络地址转换,使用引用其他内部或私有 IP 地址的公共 IP 地址,从而支持 Atlas 流量访问 LDAP 服务器。如果您进行此类转换,请注意某些活动会触发 Atlas 集群公共 IP 地址更改。

如果您支持通过公共 IP 地址访问 LDAP 服务器,则更改 Atlas 集群的公共 IP 地址,将阻止 LDAP 访问。要恢复 LDAP 访问,请将新的 Atlas 集群公共 IP 地址添加到 LDAP 访问列表。

您不能对同一数据库用户同时使用 LDAP 和 SCRAM 身份验证。

注意

您可以使用相同的 Atlas CLI 命令来配置 LDAP 身份验证和 LDAP 授权。

要为使用 Atlas CLI 指定的项目保存一个 LDAP 配置,请运行以下命令:

atlas security ldap save [options]

要了解有关命令语法和参数的更多信息,请参阅Atlas CLI Atlas安全LDAP 保存 的 文档。

提示

请参阅:相关链接

使用以下过程,为项目中的所有集群配置使用LDAP的用户身份验证。

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

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

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

    显示“高级”页面。

2

注意

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

3

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

4

您可以提供自签名证书。

5

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

注意

您可以使用相同的 Atlas CLI 命令来配置 LDAP 身份验证和 LDAP 授权。

要为使用 Atlas CLI 指定的项目保存一个 LDAP 配置,请运行以下命令:

atlas security ldap save [options]

要了解有关命令语法和参数的更多信息,请参阅Atlas CLI Atlas安全LDAP 保存 的 文档。

提示

请参阅:相关链接

使用以下过程,为项目中的所有集群配置LDAP的用户授权。

重要

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

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

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

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

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

    显示“高级”页面。

2
3
4

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

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

查询的格式必须符合 RFC4515 。

如果您不提供查询模板, Atlas将应用默认值: {USER}?memberOf?base

5

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

如需使用 Atlas CLI 创建项目的数据库用户,请运行以下命令:

atlas dbusers create [builtInRole]... [options]

要了解有关命令语法和参数的更多信息,请参阅Atlas CLI Atlasdbusers create 的 文档。

提示

请参阅:相关链接

使用 LDAP 配置授权后,请按照以下步骤创建 LDAP 数据库用户或群组:

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

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

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

    显示数据库访问页面。

2
  1. 如果尚未显示,请单击 Database Users 标签页。

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

3

Add New Database User(添加新数据库用户)模态窗口的 Authentication Method(身份验证方法)部分中,选择标有 LDAP(密码)的框。

注意

如果没有看到LDAP选项,则必须使用LDAP配置授权。

4

LDAP Type下,为单个用户选择LDAP User ,或为LDAP群组选择LDAP Group

5

string输入LDAP 用户或LDAP 群组的身份验证 。

例子

对于名为 projectName 的项目中名为 myUser 的LDAP用户,请输入以下内容:

cn=myUser,ou=projectName,dc=com

如果启用LDAP授权,则可以创建LDAP用户,但他们无法访问权限集群。 添加LDAP群组以访问权限已启用LDAP授权的集群。

6

选择数据库用户权限。您可以通过以下一种或多种方式为新用户分配权限:

  • Built-in Role 下拉菜单中,选择一个内置角色。您可以在 Atlas 用户界面内为每个数据库用户选择一个内置角色。如果删除了默认选项,可以单击 Add Built-in Role 以选择一个新的内置角色。

  • 如果定义了任何自定义角色,可以展开 Custom Roles(自定义角色)部分,并从 Custom Roles(自定义角色)下拉菜单中选择一个或多个角色。单击 Add Custom Role(添加自定义角色),以添加更多自定义角色。您还可以单击 Custom Roles(自定义角色)链接,以查看项目的自定义角色。

  • 展开 Specific Privileges 部分,从 Specific Privileges 下拉菜单中选择一个或多个权限。单击 Add Specific Privilege 添加更多权限。这将为用户分配对单个数据库和集合的特定权限。

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

要删除已应用的角色或权限,请单击要删除的角色或权限旁边的 Delete(删除)。

注意

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

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

7

默认情况下,用户可以访问项目中的所有集群和联合数据库实例。您可以通过执行如下操作来限制对特定集群和联合数据库实例的访问:

  1. Restrict Access to Specific Clusters/Federated Database Instances 切换到 ON

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

8
  1. Temporary UserTemporary Group切换为On

  2. 选择一个时间,在此时间之后, Atlas可以从Temporary User DurationTemporary Group Duration下拉列表中删除用户或群组。 您可以选择以下时间段之一让用户或群组存在:

    • 6 小时

    • 1 天

    • 1 周

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

9

要使用 Atlas CLI 返回一个 LDAP 配置的详细信息, 请运行以下命令:

atlas security ldap get [options]

要了解有关命令语法和参数的更多信息,请参阅Atlas CLI AtlassecurityLDAP get 的 文档。

提示

请参阅:相关链接

使用Atlas 用户界面查看当前LDAP设置:

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

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

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

    显示“高级”页面。

2

Atlas显示您的LDAP身份验证设置。

要查看LDAP授权设置,请将LDAP Authorization旁边的按钮切换到On 。 Atlas显示您的LDAP授权设置。

注意

您可以使用相同的 Atlas CLI 命令来禁用 LDAP 身份验证设置和 LDAP 授权设置。

要使用 Atlas CLI 删除一个 LDAP 配置, 请运行以下命令:

atlas security ldap delete [options]

要了解有关命令语法和参数的更多信息,请参阅Atlas CLI Atlas安全LDAP 删除 的 文档。

提示

请参阅:相关链接

要使用Atlas 用户界面禁用当前LDAP设置:

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

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

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

    显示“高级”页面。

2

Atlas会禁用LDAP身份验证设置和LDAP授权设置。

要仅禁用LDAP授权,请将LDAP Authorization旁边的按钮切换到OFF 。 Atlas会禁用LDAP授权设置。

按以下教程配置 Atlas,对来自第三方 LDAP 提供者的用户 进行身份验证和授权:

后退

AWS IAM