MongoDB Enterprise admite el envío de solicitudes de autenticación a un servicio de Protocolo ligero de acceso a directorios (LDAP).
MongoDB admite enlaces simples y SASL a servidores LDAP:
Vía | Descripción |
|---|---|
Bibliotecas del sistema operativo | MongoDB admite la vinculación a un servidor LDAP a través de bibliotecas del sistema operativo. Esto permite que los servidores MongoDB en Linux y Windows utilicen un servidor LDAP para la autenticación. En versiones anteriores, MongoDB en Microsoft Windows no puede conectarse a servidores LDAP. |
| Los servidores MongoDB en Linux admiten la vinculación a un servidor LDAP a través del demonio No está disponible para MongoDB en Windows. |
Considerations
Una descripción completa de LDAP queda fuera del alcance de esta documentación. Esta página presupone conocimientos previos de LDAP.
Esta documentación solo describe la autenticación LDAP de MongoDB y no sustituye a otros recursos sobre LDAP. Le recomendamos que se familiarice completamente con LDAP y sus temas relacionados antes de configurar la autenticación LDAP.
MongoDB puede proporcionar servicios profesionales para una configuración óptima de la autenticación LDAP en tu implementación de MongoDB.
Pool de conexiones
Al conectarse al servidor LDAP para autenticación/autorización, MongoDB, de forma predeterminada:
Utiliza agrupación de conexiones si se ejecuta:
en Windows o
en Linux, donde los binarios de MongoDB Enterprise están vinculados con libldap_r.
No utiliza agrupación de conexiones si se ejecuta:
en Linux, donde los binarios de MongoDB Enterprise están vinculados con libldap.
Para cambiar el comportamiento del agrupamiento de conexiones, actualice el
ldapUseConnectionPool parámetro.
saslauthd y permisos de directorio
Importante
El directorio principal del archivo de saslauthd socket de dominio Unix especificado en security.sasl.saslauthdSocketPath o debe --setParameter saslauthdPath otorgarr-x permisos de lectura y ejecución () para:
El mongod o no pueden autenticarse exitosamente a través mongos de saslauthd sin el permiso especificado en el saslauthd directorio y su contenido.
libldap y libldap_r
Para los binarios de MongoDB 4.2 Enterprise vinculados con libldap (como cuando se ejecuta en RHEL), el acceso a libldap está sincronizado, lo que genera algunos costos de rendimiento y latencia.
Para los binarios de MongoDB 4.2 Enterprise vinculados con libldap_r, no hay ningún cambio en el comportamiento respecto de las versiones anteriores de MongoDB.
Administración de usuarios LDAP en el servidor MongoDB
Al usar la autenticación LDAP sin autorización LDAP, la administración de usuarios requiere la gestión de usuarios tanto en el servidor LDAP como en el servidor MongoDB. Para cada usuario que se autentique mediante LDAP, MongoDB requiere un usuario en la $external base de datos cuyo nombre coincida exactamente con el nombre de usuario de autenticación. Los cambios en un usuario en el servidor LDAP pueden requerir cambios en el $external usuario correspondiente de MongoDB.
Para usar sesiones de cliente y garantías de coherencia causal con usuarios de autenticación $external (usuarios Kerberos, LDAP o X.509), los nombres de usuario no pueden superar los 10k bytes.
Ejemplo
Un usuario se autentica como sam@dba.example.com. El servidor MongoDB se conecta al servidor LDAP y autentica al usuario, respetando cualquier username transformations. Después de una autenticación exitosa, el servidor MongoDB verifica en la base de datos $external si existe un usuario sam@dba.example.com y otorga a ese usuario autenticado los roles y privilegios asociados.
Para administrar usuarios en el servidor MongoDB, debe autenticarse como un usuario LDAP cuyo usuario MongoDB $external correspondiente tenga privilegios administrativos de usuario en la $external base de datos, como los proporcionados userAdmin por.
Importante
Si ningún usuario $external tiene privilegios administrativos de usuario en la base de datos $external, no puedes realizar la gestión de usuarios para la autenticación de LDAP. Este escenario puede ocurrir si configuras usuarios antes de habilitar la autenticación LDAP, pero no creas los administradores de usuarios adecuados.
Administrar usuarios existentes que no son LDAP
Si hay usuarios existentes que no están en la base de datos $external, debe cumplir los siguientes requisitos para cada usuario para garantizar el acceso continuo:
El usuario tiene un objeto de usuario correspondiente en el servidor LDAP
El usuario existe en la base de datos
$externalcon roles y privilegios equivalentes
Si desea seguir permitiendo el acceso a usuarios que no estén en la $external base de datos, debe configurar para que setParameter authenticationMechanisms incluya SCRAM-SHA-1 o,SCRAM-SHA-256 según corresponda. Los usuarios deben especificar --authenticationMechanism SCRAM-SHA-1 o SCRAM-SHA-256 al autenticarse.
Implementación de la autenticación LDAP en un conjunto de réplicas
Para los conjuntos de réplicas, configure la autenticación LDAP en los miembros secundarios y de árbitro antes de configurar el principal. Esto también aplica a los conjuntos de réplicas de fragmentos o a los conjuntos de réplicas del servidor de configuración. Configure un miembro del conjunto de réplicas a la vez para mantener la mayoría de los miembros disponibles para escritura.
Implementación de la autenticación LDAP en un clúster fragmentado
En clústeres fragmentados, debe configurar la autenticación LDAP en los servidores de configuración y mongos en cada para los usuarios a nivel de clúster. Opcionalmente, puede configurar la autorización LDAP en cada fragmento para los usuarios locales.
Autenticación LDAP a través de las bibliotecas LDAP del sistema operativo
El proceso de autenticación LDAP a través de bibliotecas del sistema operativo se resume a continuación:
Un cliente se autentica en MongoDB, proporcionando las credenciales de un usuario.
Si el nombre de usuario requiere ser asignado a un DN LDAP antes de vincularse con el servidor LDAP, MongoDB puede aplicar transformaciones basadas en la
security.ldap.userToDNMappingconfiguración.MongoDB se conecta a un servidor LDAP especificado en
security.ldap.serversutilizando el nombre de usuario proporcionado o, si se aplicó una transformación, el nombre de usuario transformado.MongoDB utiliza un enlace simple de manera predeterminada, pero también puede usar el
saslenlace si se configura ensecurity.ldap.bind.methodsecurity.ldap.bind.saslMechanismsy.Si una transformación requiere consultar al servidor LDAP, o si el servidor LDAP no permite enlaces anónimos, MongoDB utiliza el nombre de usuario y la contraseña especificados
security.ldap.bind.queryUseren ysecurity.ldap.bind.queryPasswordpara enlazar al servidor LDAP antes de intentar autenticar las credenciales de usuario proporcionadas.El servidor LDAP devuelve el resultado del intento de vinculación a MongoDB. En caso de éxito, MongoDB intenta autorizar al usuario.
El servidor MongoDB intenta asignar el nombre de usuario a un usuario de la base de datos
$external, asignándole los roles o privilegios asociados a dicho usuario. Si MongoDB no encuentra un usuario coincidente, la autenticación falla.El cliente puede realizar aquellas acciones para las que MongoDB otorgó roles o privilegios al usuario autenticado.
Para utilizar LDAP para la autenticación a través de las bibliotecas del sistema operativo, especifique las siguientes configuraciones como parte de su archivo mongod mongos de configuración o:
Opción | Descripción | Requerido |
|---|---|---|
Lista separada por comas y entre comillas de servidores LDAP en formato Puedes anteponer a los servidores LDAP los prefijos Si la cadena de conexión especifica Si su cadena de conexión especifica | SÍ | |
Se utiliza para especificar el método que Se establece por defecto en | NO, a menos | |
NO, a menos que configure | ||
La entidad LDAP, identificada por su nombre distinguido (DN) o nombre SASL, con la que el servidor MongoDB se autentica o vincula cuando se conecta a un servidor LDAP. El usuario especificado debe tener los privilegios adecuados para ejecutar consultas en el servidor LDAP. | NO, a menos que se especifique una consulta como parte de una | |
La contraseña utilizada para autenticarse en un servidor LDAP cuando se | NO, a menos que se | |
Las implementaciones de Windows MongoDB pueden usar las credenciales del sistema operativo en lugar de | NO, a menos que reemplace | |
Los clientes pueden autenticarse con un nombre de usuario cuyo formato sea incompatible con el formato esperado por el configurado. Por
Si especifica una transformación que utiliza consultas LDAP como | NO, a menos que el cliente se autentique utilizando nombres de usuario que requieran transformación. |
Autenticación LDAP mediante saslauthd
Advertencia
MongoDB Enterprise para Windows no admite el enlace a través de saslauthd.
Considerations
Los servidores MongoDB de Linux admiten la vinculación a un servidor LDAP a través del demonio
saslauthd.Utilice conexiones seguras, cifradas o de confianza entre los clientes y el servidor, así como entre
saslauthdy el servidor LDAP. El servidor LDAP utiliza elSASL PLAINmecanismo, enviando y recibiendo datos en texto sin formato. Debe utilizar únicamente un canal de confianza, como una VPN, una conexión cifrada con TLS/SSL o una red cableada de confianza.
Configuración
Para configurar el servidor MongoDB para que se vincule al servidor LDAP saslauthd mediante, inicie usando las siguientes opciones de línea de mongod comando o las siguientes configuraciones del archivo de configuración:
--authpara habilitar el control de acceso,--setParametercon elauthenticationMechanismsestablecidoPLAINen, y--setParametercon el parámetro establecido en la ruta al socket de dominio Unix desaslauthdPathlasaslauthdinstancia. Especifique una cadena vacía""para usar la ruta predeterminada del socket de dominio Unix.
Incluya cualquier otra opción de línea de comandos necesaria para su implementación. Para obtener la documentación completa sobre las opciones de línea de mongod comandos,mongod consulte.
security.authorizationestablecidoenableden,setParametercon el parámetroauthenticationMechanismsestablecidoPLAINen, ysetParameterCon establecido como la ruta al socket de dominio Unix de la instancia saslauthd. Especifique una cadenasaslauthdPathvacía""para usar la ruta predeterminada del socket de dominio Unix.
Incluya cualquier otra configuración del archivo necesaria para su implementación. Para obtener la documentación completa sobre los archivos de configuración, consulte Archivo de configuración YAML.
Debe crear o actualizar el archivo saslauthd.conf con los parámetros adecuados para su servidor LDAP. Documentar saslauthd.conf queda fuera del alcance de esta documentación.
Importante
El directorio principal del archivo de saslauthd socket de dominio Unix especificado en security.sasl.saslauthdSocketPath o debe --setParameter saslauthdPath otorgarr-x permisos de lectura y ejecución () para:
El mongod o no pueden autenticarse exitosamente a través mongos de saslauthd sin el permiso especificado en el saslauthd directorio y su contenido.
Los siguientes tutoriales proporcionan información básica sobre cómo configurar saslauthd.conf para que funcione con dos servicios LDAP populares:
Consulte la documentación de saslauthd así como su servicio LDAP específico para obtener orientación.
Conectarse a un servidor MongoDB a través de la autenticación LDAP
Para autenticarse en un servidor MongoDB utilizando autenticación LDAP, use db.auth() en la base de datos $external con los siguientes parámetros:
Opción | Descripción |
|---|---|
| El nombre de usuario para autenticarse. |
| La contraseña para autenticarse. |
| Se debe establecer en |