使用 Okta LDAP 接口配置用户身份验证和授权
在此页面上
注意
从MongoDB 8.0开始, LDAP身份验证和授权已弃用。该功能可用,并将在MongoDB 8的整个生命周期内继续运行,无需进行任何更改。 LDAP将在未来的主要发布中删除。
有关详细信息,请参阅 LDAP弃用。
注意
此功能不适用于
M0
免费集群、M2
和M5
集群。要了解更多信息,请参阅 Atlas M 0 (免费集群)、M 2和 M 5限制。无服务器实例目前不支持此功能。要了解更多信息,请参阅无服务器实例限制。
本指南向您展示如何启用Atlas从 Okta 对数据库用户(非Atlas用户)进行身份验证和授权 ,第三方 LDAP 提供商。
您可以仅启用 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 界面的单点登录集成,请参阅配置联合身份验证。
必需的访问权限
要管理 LDAP 用户或群组,必须拥有 Atlas 的 Organization Owner
或 Project Owner
访问权限。
步骤
为 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对数据库用户进行身份验证:
在 AtlasAdvanced 中,转到项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击Security标题下的Advanced 。
显示“高级”页面。
将 旁边的按钮切换为LDAP Authentication On。
注意
启用此功能后,您可能会产生额外的费用。请参阅高级安全。
在 AtlasDatabase Access 中,转到项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击Security标题下的Database Access 。
显示数据库访问页面。
将 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 中启用数据库用户授权:
在 AtlasDatabase Access 中,转到项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击Security标题下的Database Access 。
显示数据库访问页面。
将数据库访问 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(连接)。
在 AtlasAdvanced 中,转到项目的 页面。
如果尚未显示,请从导航栏上的 Organizations 菜单中选择包含项目的组织。
如果尚未显示,请从导航栏的 Projects 菜单中选择您的项目。
在侧边栏中,单击Security标题下的Advanced 。
显示“高级”页面。
Query Template在 中输入查询模板。
当用户尝试执行操作时,Atlas 会执行 LDAP 查询模板,获取经验证的用户所属的 LDAP 群组。如果查询返回至少一个有权执行此操作的群组,则 Atlas 允许执行此操作。如果查询未返回有权执行此操作的群组,则 Atlas 不允许执行此操作。
在运行查询时,Atlas 会替换 {USER}
占位符中经验证的用户名。该查询与 Server Hostname 中指定的主机相关。
查询的格式必须符合 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
必须是$external
authenticationMechanism
必须是PLAIN
在 AtlasClusters 中,转到项目的 页面。
如果尚未显示,请选择包含所需项目的组织导航栏中的Organizations菜单。
如果尚未显示,请从导航栏的Projects菜单中选择所需的项目。
如果 Clusters(数据库部署)页面尚未出现,请单击侧边栏中的 Database(数据库)。
此时会显示“集群”页面。
使用添加到 Atlas 的用户档案连接到集群。
使用mongosh
连接到集群。 要复制连接string :
单击 Connect(连接)。
单击 LDAP,然后单击 Copy(复制)。
粘贴并编辑包含您的用户 DN 和密码的字符串。
注意
如果未启用用户到 DN 映射,则使用用户的完整 DN 连接集群。
排除 LDAP 连接问题
注意
在 Okta 中,绑定用户必须具有Read Only Administrator
特权才能执行 LDAP 搜索。 在运行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
可能会导致搜索时间更长。