使用 LDAP 设置用户身份验证和授权
在此页面上
注意
从MongoDB 8.0开始, LDAP身份验证和授权已弃用。 该功能可用,并将在MongoDB 8的整个生命周期内继续运行,无需进行任何更改。 LDAP将在未来的主要发布中删除。
有关详细信息,请参阅 LDAP弃用。
注意
此功能不适用于
M0
免费集群、M2
和M5
集群。要学习;了解更多信息,请参阅 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 用户或群组,必须拥有 Atlas 的 Organization Owner
或 Project Owner
访问权限。
先决条件
您必须满足以下先决条件,才能在 Atlas 中使用 LDAP 管理用户身份验证和授权:
使用 MongoDB 4.0 或更高版本的 Atlas 集群。
使用 TLS 的 LDAP 服务器,Atlas 集群可以使用 VPC 或 VNet 对等互连或集群节点的公共 IP 地址通过网络访问此服务器。
LDAP 群组成员身份作为每个用户的属性嵌入 LDAP 条目,仅用于用户授权。
建议
对于访问 Atlas 集群的 LDAPS 服务,MongoDB 建议采用以下两种配置之一:
使用 VPC 或 VNet:
在 VPC 或 VNet 中运行 LDAP 服务器。
建立与 Atlas 项目的对等互连。
使用可解析为 LDAP 服务器私有 IP 地址的公共 FQDN。
使用您的数据中心:
使用可解析为公共 IP 地址的公共 FQDN 运行 LDAP 服务器。
配置 LDAP 服务器,支持从 Atlas 集群节点的公共 IP 地址进行入站访问。
Considerations
LDAP 授权和 X.509 用户之间的冲突
如果启用 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 mongosh
LDAP对名为 的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
要复制连接字符串:
在Atlas中,转到项目的Clusters 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
如果尚未显示,请单击侧边栏中的Clusters 。
会显示集群页面。
注意
如果您的密码、数据库名称或连接字符串包含保留的 URI 字符,则必须对这些字符进行转义。例如,如果您的密码是 @bc123
,则在连接字符串中指定密码时必须对 @
字符进行转义,例如 %40bc123
。要了解详情,请参阅连接字符串密码中的特殊字符。
配置更改时滚动重启
如果您更改 LDAP 配置,则 Atlas 将对集群执行滚动重启。重启后,Atlas 可通过正确的设置验证用户身份。
使用公共 IP 地址
您可以通过网络地址转换,使用引用其他内部或私有 IP 地址的公共 IP 地址,从而支持 Atlas 流量访问 LDAP 服务器。如果您进行此类转换,请注意某些活动会触发 Atlas 集群公共 IP 地址更改。
如果您支持通过公共 IP 地址访问 LDAP 服务器,则更改 Atlas 集群的公共 IP 地址,将阻止 LDAP 访问。要恢复 LDAP 访问,请将新的 Atlas 集群公共 IP 地址添加到 LDAP 访问列表。
限制
您不能对同一数据库用户同时使用 LDAP 和 SCRAM 身份验证。
步骤
使用 LDAP 配置身份验证
注意
您可以使用相同的 Atlas CLI 命令来配置 LDAP 身份验证和 LDAP 授权。
要为使用 Atlas CLI 指定的项目保存一个 LDAP 配置,请运行以下命令:
atlas security ldap save [options]
要了解有关命令语法和参数的更多信息,请参阅Atlas CLI Atlas安全LDAP 保存 的 文档。
配置授权
注意
您可以使用相同的 Atlas CLI 命令来配置 LDAP 身份验证和 LDAP 授权。
要为使用 Atlas CLI 指定的项目保存一个 LDAP 配置,请运行以下命令:
atlas security ldap save [options]
要了解有关命令语法和参数的更多信息,请参阅Atlas CLI Atlas安全LDAP 保存 的 文档。
使用以下过程,为项目中的所有集群配置LDAP的用户授权。
重要
在启用授权之前,您必须启用 LDAP 身份验证。
启用和配置 LDAP 授权后,仅配置为 LDAP 身份验证的数据库用户将无法再访问数据库。
在Atlas中,转到项目的Advanced 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Advanced。
显示“高级”页面。
添加 LDAP 数据库用户或群组
如需使用 Atlas CLI 创建项目的数据库用户,请运行以下命令:
atlas dbusers create [builtInRole]... [options]
要了解有关命令语法和参数的更多信息,请参阅Atlas CLI Atlasdbusers create 的 文档。
使用 LDAP 配置授权后,请按照以下步骤创建 LDAP 数据库用户或群组:
在Atlas中,转到项目的Database Access 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Database Access。
显示数据库访问页面。
选择LDAP 。
在 Add New Database User(添加新数据库用户)模态窗口的 Authentication Method(身份验证方法)部分中,选择标有 LDAP(密码)的框。
注意
如果没有看到LDAP选项,则必须使用LDAP配置授权。
分配特权。
选择数据库用户权限。您可以通过以下一种或多种方式为新用户分配权限:
从 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(删除)图标。应用了其他角色或权限后,就可以删除选定的角色或权限。
查看 LDAP 配置
要使用 Atlas CLI 返回一个 LDAP 配置的详细信息, 请运行以下命令:
atlas security ldap get [options]
要了解有关命令语法和参数的更多信息,请参阅Atlas CLI AtlassecurityLDAP get 的 文档。
使用Atlas 用户界面查看当前LDAP设置:
在Atlas中,转到项目的Advanced 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Advanced。
显示“高级”页面。
禁用 LDAP 配置
注意
您可以使用相同的 Atlas CLI 命令来禁用 LDAP 身份验证设置和 LDAP 授权设置。
要使用 Atlas CLI 删除一个 LDAP 配置, 请运行以下命令:
atlas security ldap delete [options]
要了解有关命令语法和参数的更多信息,请参阅Atlas CLI Atlas安全LDAP 删除 的 文档。
要使用Atlas 用户界面禁用当前LDAP设置:
在Atlas中,转到项目的Advanced 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Advanced。
显示“高级”页面。
第三方 LDAP 提供商教程
按以下教程配置 Atlas,对来自第三方 LDAP 提供者的用户 进行身份验证和授权: