Docs Menu
Docs Home
/ /

Autenticación de proxy LDAP autogestionada

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.

saslauthd

Los servidores MongoDB en Linux admiten la vinculación a un servidor LDAP a través del demonio saslauthd.

No está disponible para MongoDB en Windows.

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.

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.

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 usuario que inicia mongod mongoso, o

  • Un grupo al que pertenece ese usuario.

El mongod o no pueden autenticarse exitosamente a través mongos de saslauthd sin el permiso especificado en el saslauthd directorio y ​​su contenido.

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.

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.

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 $external con 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.

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.

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.

El proceso de autenticación LDAP a través de bibliotecas del sistema operativo se resume a continuación:

  1. Un cliente se autentica en MongoDB, proporcionando las credenciales de un usuario.

  2. 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.userToDNMapping configuración.

  3. MongoDB se conecta a un servidor LDAP especificado en security.ldap.servers utilizando 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 sasl enlace si se configura en security.ldap.bind.method security.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.queryUser en y security.ldap.bind.queryPassword para enlazar al servidor LDAP antes de intentar autenticar las credenciales de usuario proporcionadas.

  4. El servidor LDAP devuelve el resultado del intento de vinculación a MongoDB. En caso de éxito, MongoDB intenta autorizar al usuario.

  5. 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.

  6. 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 host[:port].

Puedes anteponer a los servidores LDAP los prefijos srv: y srv_raw:.

Si la cadena de conexión especifica "srv:<DNS_NAME>", mongod verifica que "_ldap._tcp.gc._msdcs.<DNS_NAME>" existe para que SRV sea compatible con Active Directory. Si no se encuentra, mongod verifica que "_ldap._tcp.<DNS_NAME>" existe para SRV. Si no se encuentra un registro SRV, mongod advierte que se use "srv_raw:<DNS_NAME>" en cambio.

Si su cadena de conexión especifica "srv_raw:<DNS_NAME>", mongod realiza una búsqueda de un registro SRV para "<DNS NAME>".

Se utiliza para especificar el método que mongod o utilizan para autenticarse o vincularse al servidor LDAP.mongos Especifique sasl para usar uno de los protocolos SASL definidos security.ldap.bind.saslMechanisms en.

Se establece por defecto en simple.

NO, a menos sasl que se utilice para vincularse al servidor LDAP.

Se utiliza para especificar los mecanismos SASL mongod que o pueden usar al autenticarse o vincularse al servidor LDAP. MongoDB y el servidor LDAP deben coincidir en al menos un mecanismo mongos SASL.

Se establece por defecto en DIGEST-MD5.

NO, a menos que configure method a sasl y necesite mecanismos SASL diferentes o adicionales.

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.

queryPasswordÚselo con.

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 userToDNMapping transformación, o si la configuración de seguridad del servidor LDAP no permite enlaces anónimos.

La contraseña utilizada para autenticarse en un servidor LDAP cuando se queryUser utiliza.

NO, a menos que se queryUser especifique.

Las implementaciones de Windows MongoDB pueden usar las credenciales del sistema operativo en lugar de queryUser y queryPassword para autenticar o vincular como cuando se conectan al servidor LDAP.

NO, a menos que reemplace queryUser queryPasswordy.

Los clientes pueden autenticarse con un nombre de usuario cuyo formato sea incompatible con el formato esperado por el configurado. Por bind method ejemplo, simple la vinculación podría requerir un DN LDAP completo, mientras que el nombre de usuario utilizado para autenticarse en MongoDB podría ser una dirección de correo electrónico.

userToDNMapping permite que MongoDB transforme los nombres de usuario recibidos a un formato compatible con tu esquema LDAP. MongoDB admite transformaciones utilizando una plantilla de sustitución o una plantilla de query LDAP.

Si especifica una transformación que utiliza consultas LDAP como userToDNMapping queryUser parte de la transformación, también debe especificar una con el nivel de permisos adecuado para el servidor LDAP.

NO, a menos que el cliente se autentique utilizando nombres de usuario que requieran transformación.

Advertencia

MongoDB Enterprise para Windows no admite el enlace a través de saslauthd.

  • 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 saslauthd y el servidor LDAP. El servidor LDAP utiliza el SASL PLAIN mecanismo, 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.

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:

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.authorization establecido enabled en,

  • setParameter con el parámetro authenticationMechanisms establecido PLAIN en, y

  • setParameter Con establecido como la ruta al socket de dominio Unix de la instancia saslauthd. Especifique una cadena saslauthdPath vací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 usuario que inicia mongod mongoso, o

  • Un grupo al que pertenece ese usuario.

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.

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

username

El nombre de usuario para autenticarse.

password

La contraseña para autenticarse.

mechanism

Se debe establecer en PLAIN.

Volver

Utilizar la autorización de Active Directory

En esta página