注意
Starting with MongoDB 8.0, LDAP authentication and authorization is deprecated. The feature is available and will continue to operate without changes throughout the lifetime of MongoDB 8. LDAP will be removed in a future major release.
有关详细信息,请参阅 LDAP 弃用。
This guide shows you how to enable Atlas to authenticate and authorize database users (not Atlas users) from Okta, a third-party LDAP provider.
您可以仅启用 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 界面的单点登录集成,请参阅配置联合身份验证。
必需的访问权限
To manage LDAP users or groups, you must have Organization Owner or Project Owner access to Atlas.
步骤
为 LDAP 身份验证配置 Okta
以下过程将 Okta 配置为使用 Atlas 进行身份验证:
设置 Okta LDAP 界面。
要学习;了解有关设置 Okta LDAP 界面的更多信息,请参阅 Okta 文档。
记下您的
<okta-instance-id>。 您必须在配置过程中在多个位置提供此值。实例名称位于用于登录 Okta 帐户的 URL 中:
https://<okta-instance-id>.admin.okta.com
创建绑定用户。
创建一个新的 Okta 用户以用作Atlas绑定用户。绑定用户是 Okta 用户,用于查询帐户以及在数据库用户连接到Atlas数据库时验证数据库用户的凭证。
重要
请勿将您自己的用户帐户用于绑定用户。
使用以下模板确定绑定用户的完整标识名 (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
为 LDAP 身份验证配置 Atlas
以下过程使 Atlas 能够从 Okta LDAP对数据库用户进行身份验证:
AtlasGoAdvanced在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Database & Network Access。
在侧边栏中,单击 Advanced。
显示“高级”页面。
将 LDAP Authentication(基于推送的日志导出)旁边的按钮切换为 On(开)。
注意
启用此功能后,您可能会产生额外的费用。请参阅高级安全。
AtlasGoDatabase & Network Access在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Database & Network Access。
The Database & Network Access page displays.
将 LDAP 用户添加到 Atlas。
注意
如果要启用 LDAP 授权,则跳过此步骤。
将 Okta LDAP中托管的用户添加到 Atlas。
单击 Add New Database User(添加新的数据库用户)。
单击 LDAP User(连接)。
执行以下操作之一:
如果您尚未输入 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 如果您输入了User to DN Mapping ,请输入映射所需的用户名或电子邮件地址。
选择要授予用户的数据库访问级别。
单击 Add User(连接)。
为 LDAP 授权配置 Okta
注意
如果您不想启用 LDAP 授权,请跳过本部分。
以下过程将配置 Atlas 以授权属于 Okta LDAP数据库访问群组的用户。
重要
在启用授权之前,您必须启用 LDAP 身份验证。
启用并配置 LDAP 授权后,仅配置为 LDAP 身份验证的数据库用户将无法再访问数据库。
为 LDAP 授权配置 Atlas
注意
如果您不想启用 LDAP 授权,请跳过本部分。
以下过程将 Okta 数据库访问群组添加到 Atlas,并在 Atlas 中启用数据库用户授权:
AtlasGoDatabase & Network Access在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Database & Network Access。
The Database & Network Access page displays.
将数据库访问 LDAP 群组添加到 Atlas。
将您创建的每个 Okta 数据库群组添加到 Atlas。 您添加的群组成员有权执行授予该群组的数据库操作。
单击 Add New Database User(添加新的数据库用户)。
点击 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
选择要授予此群组中用户的数据库访问级别。
单击 Add User(连接)。
AtlasGoAdvanced在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击 Security 标题下的 Database & Network Access。
在侧边栏中,单击 Advanced。
显示“高级”页面。
在 Query Template(查询模板)中输入查询模板。
当用户尝试执行操作时,Atlas 会执行 LDAP 查询模板,获取经验证的用户所属的 LDAP 群组。如果查询返回至少一个有权执行此操作的群组,则 Atlas 允许执行此操作。如果查询未返回有权执行此操作的群组,则 Atlas 不允许执行此操作。
在运行查询时,Atlas 会替换 {USER} 占位符中经验证的用户名。该查询与 Server Hostname 中指定的主机相关。
The formatting for the query must conform to RFC4515.
如果要识别用户所属的群组,可以使用以下Query Template :
ou=groups,dc=<okta-instance-id>,dc=okta,dc=com?dn?sub?(&(objectClass=groupofUniqueNames)(uniqueMember={USER}))
注意
其他查询模板也可能有效。 使用默认模板{USER}?memberOf?base可能会导致搜索时间更长。
使用以下命令连接到集群 mongosh
以下过程验证 LDAP 身份验证(以及 LDAP 授权,如启用)是否配置正确:
注意
启用 LDAP 身份验证后,数据库用户必须为其客户端覆盖连接字符串中的以下参数:
authSource必须是$externalauthenticationMechanism必须是PLAIN
AtlasGoClusters在Atlas中,Go项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含所需项目的组织。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
在侧边栏中,单击 Database 标题下的 Clusters。
会显示集群页面。
使用添加到 Atlas 的用户档案连接到集群。
Use mongosh to connect to your cluster. To copy the connection string:
单击 Connect(连接)。
单击 LDAP,然后单击 Copy(复制)。
粘贴并编辑包含您的用户 DN 和密码的字符串。
注意
如果未启用用户到 DN 映射,则使用用户的完整 DN 连接集群。
排除 LDAP 连接问题
注意
In Okta, the bind user must have Read Only Administrator privileges to perform LDAP searches. Make sure that your bind user has these privileges before running 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-dn为uid=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可能会导致搜索时间更长。