MongoDB Enterprise支持将身份验证请求代理到轻量级目录访问协议(LDAP)服务。
MongoDB支持对LDAP服务器的简单绑定和SASL绑定:
通过 | 描述 |
---|---|
操作系统库 | 从3.4版开始,MongoDB支持通过操作系统库绑定到LDAP服务器。 这允许Linux和Windows上的MongoDB服务器使用LDAP服务器进行身份验证。 在早期版本中,Microsoft Windows上的MongoDB无法连接到LDAP服务器。 |
saslauthd |
Linux上的MongoDB服务器支持通过 在Windows上不适用于MongoDB。 |
LDAP的完整描述超出了本文档的范围。该页面假定您具有LDAP的先验知识。
本文档仅描述MongoDB LDAP身份验证,不会替代LDAP上的其他资源。我们鼓励您在配置LDAP身份验证之前彻底熟悉LDAP及其相关主题。
MongoDB可以为您的MongoDB部署提供专业服务,以优化LDAP身份验证的配置。
从版本4.2.0开始,默认情况下,连接到LDAP服务器进行身份验证/授权时,MongoDB:
要更改连接池行为,请更新
ldapUseConnectionPool
参数。
saslauthd
和目录权限¶重要
saslauthd
Unix域套接字文件的父目录,指定给security.sasl.saslauthdSocketPath
或
必须授予以下之一的读取和执行()权限:--setParameter saslauthdPath
r-x
该mongod
或mongos
无法通过身份验证成功
saslauthd
,而不在指定的权限saslauthd
目录及其内容。
libldap
和libldap_r
¶对于链接到的MongoDB 4.2(和4.0.9)企业二进制文件
libldap
(例如在RHEL上运行时),对的访问
libldap
是同步的,这会导致性能/延迟成本。
对于链接到的MongoDB 4.2(和4.0.9)企业二进制文件,与
libldap_r
早期MongoDB版本相比,行为没有变化。
用户管理要求同时管理LDAP服务器和MongoDB服务器上的用户。对于每个通过LDAP进行身份验证的用户,MongoDB要求$external
数据库中的用户名称与身份验证用户名完全匹配。对LDAP服务器上的用户进行更改可能需要对相应的MongoDB $external
用户进行更改。
在版本3.6.3中更改:要与$external
身份验证用户(即Kerberos,LDAP,x.509用户)一起使用会话,用户名不能大于10k字节。
例
用户认证为sam@dba.example.com
。MongoDB服务器绑定到LDAP服务器并验证用户身份,并遵守any
。成功进行身份验证后,MongoDB服务器随后将在数据库中检查
用户,并向经过身份验证的用户授予与该用户关联的角色和特权。username transformations
$external
sam@dba.example.com
要在MongoDB服务器上管理用户,您必须以LDAP用户身份进行身份验证,其相应的MongoDB $external
用户在$external
数据库上具有用户管理特权,例如由提供的
特权userAdmin
。
重要
如果没有$external
用户对$external
数据库具有用户管理特权
,则无法执行LDAP身份验证的用户管理。如果您在启用LDAP身份验证之前配置用户,但未创建适当的用户管理员,则可能会发生这种情况。
如果$external
数据库中没有现有用户,则必须为每个用户满足以下要求,以确保继续访问:
$external
以相同的角色和特权存在于数据库中如果你想继续允许用户访问不上
$external
数据库,您必须配置,包括和/或
适当的。然后,用户必须指定
或
进行身份验证。setParameter
authenticationMechanisms
SCRAM-SHA-1
SCRAM-SHA-256
--authenticationMechanism SCRAM-SHA-1
SCRAM-SHA-256
3.4版的新功能。
通过OS库进行LDAP身份验证的过程总结如下:
客户端向MongoDB进行身份验证,并提供用户的凭据。
如果用户名在绑定到LDAP服务器之前需要映射到LDAP DN,则MongoDB可以基于配置的security.ldap.userToDNMapping
设置应用转换
。
MongoDB绑定到security.ldap.servers
使用提供的用户名指定的LDAP服务器,
或者如果应用了转换,则转换为转换后的用户名。
MongoDB默认使用简单绑定,但是sasl
如果在security.ldap.bind.method
和中
配置,也可以使用绑定security.ldap.bind.saslMechanisms
。
如果转换需要查询LDAP服务器,或者LDAP服务器不允许匿名绑定,则MongoDB 在尝试对提供的用户凭据进行身份验证之前会使用为LDAP服务器指定security.ldap.bind.queryUser
并
security.ldap.bind.queryPassword
绑定到LDAP服务器的用户名和密码。
LDAP服务器将绑定尝试的结果返回给MongoDB。成功后,MongoDB尝试授权用户。
MongoDB服务器尝试将用户名映射到$external
数据库上的用户
,为该用户分配与匹配用户相关的任何角色或特权。如果MongoDB找不到匹配的用户,则身份验证失败。
客户端可以执行MongoDB授予已认证用户角色或特权的那些操作。
要通过操作系统库进行身份验证使用LDAP,指定以下设置为您的一部分mongod
或mongos
配置文件:
选项 | 描述 | 需要 |
---|---|---|
security.ldap.servers |
用引号括住的逗号分隔的LDAP服务器列表host[:port]
。 |
是 |
security.ldap.bind.method |
用于指定 默认为 |
否,除非sasl 用于绑定到LDAP服务器。 |
security.ldap.bind.saslMechanisms |
用于指定SASL机制, 默认为 |
否,除非设置method 为,
sasl 并且您需要其他或其他SASL机制。 |
security.ldap.bind.queryUser |
通过其专有名称(DN)或SASL名称标识的LDAP实体,当连接到LDAP服务器时,MongoDB服务器将使用该实体进行身份验证或绑定。 与一起使用 指定的用户必须具有适当的特权才能在LDAP服务器上执行查询。 |
否,除非将查询指定为userToDNMapping 转换的一部分
,或者LDAP服务器的安全设置不允许匿名绑定。 |
security.ldap.bind.queryPassword |
使用时用于验证LDAP服务器的密码
queryUser 。 |
否,除非指定queryUser |
security.ldap.bind.useOSDefaults |
MongoDB中的Windows部署可以代替使用操作系统凭证queryUser 和
queryPassword 用于认证或连接到LDAP服务器时具有约束力。 |
不,除非更换queryUser 和
queryPassword 。 |
security.ldap.userToDNMapping |
客户端可以使用用户名进行身份验证,该用户名的格式与配置的预期的格式不兼容。例如,绑定可能需要完整的LDAP DN,而用于向MongoDB进行身份验证的用户名可能是电子邮件地址。
如果您指定 |
否,除非客户端使用需要转换的用户名进行身份验证。 |
saslauthd
警告
适用于Windows的MongoDB Enterprise不支持通过进行绑定
saslauthd
。
saslauthd
守护程序绑定到LDAP服务器
。saslauthd
以及LDAP服务器之间使用安全的加密或信任连接。LDAP服务器使用该机制,以纯文本格式发送和接收数据。您应仅使用可信通道(例如VPN),使用TLS / SSL加密的连接或可信有线网络。SASL PLAIN
要将MongoDB服务器配置为使用via绑定到LDAP服务器
saslauthd
,请mongod
使用以下命令行选项或以下配置文件设置启动:
--auth
启用访问控制,--setParameter
与
authenticationMechanisms
设置为PLAIN
,和--setParameter
与
saslauthdPath
参数集的路径的Unix域套接字saslauthd
实例。指定一个空字符串""
以使用默认的Unix域套接字路径。security.authorization
设置为enabled
,setParameter
与
authenticationMechanisms
参数集
PLAIN
,和setParameter
与saslauthdPath
设定的路径saslauthd实例的Unix域套接字。指定一个空字符串""
以使用默认的Unix域套接字路径。包括部署所需的任何其他配置文件设置。有关配置文件的完整文档,请参阅 YAML配置文件。
您需要saslauthd.conf
使用适合您的LDAP服务器的参数来创建或更新文件。文档saslauthd.conf
超出了本文档的范围。
重要
saslauthd
Unix域套接字文件的父目录,指定给security.sasl.saslauthdSocketPath
或
必须授予以下之一的读取和执行()权限:--setParameter saslauthdPath
r-x
该mongod
或mongos
无法通过身份验证成功
saslauthd
,而不在指定的权限saslauthd
目录及其内容。
以下教程提供了有关配置saslauthd.conf
以与两种流行的LDAP服务一起使用的基本信息:
请参阅文档saslauthd
以及您的特定LDAP服务以获得指导。