Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Autenticación de proxy LDAP autogestionada

MongoDB Enterprise admite el proxy de solicitudes de autenticación a un servicio de Protocolo ligero de acceso a directorios (LDAP).

MongoDb contempla la vinculación simple y Sasl a los servidores Ldap:

Vía
Descripción

Librerías 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 de MongoDB en Linux y Windows utilicen un servidor LDAP para realizar la autenticación.

En versiones anteriores, MongoDB en Microsoft Windows no puede conectarse a servidores LDAP.

saslauthd

Los servidores de MongoDB en Linux admiten la vinculación a un servidor LDAP mediante el 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 reemplaza otros recursos sobre LDAP. Te animamos a familiarizarte totalmente 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, por defecto:

  • Utiliza agrupamiento 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 socket de dominio Unix saslauthd especificado para security.sasl.saslauthdSocketPath o --setParameter saslauthdPath debe conceder permisos de lectura y ejecución (r-x) 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 contra libldap (como al ejecutarse en RHEL), el acceso a libldap está sincronizado, lo que genera algunos costos de rendimiento/latencia.

Para los binarios de MongoDB 4.2 Enterprise vinculados contra libldap_r, no hay cambios en el comportamiento respecto a 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 de MongoDB, debe autenticarse como un usuario LDAP cuyo usuario de $external de MongoDB correspondiente tenga privilegios administrativos de usuario en la base de datos $external, como los proporcionados por userAdmin.

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 sets de réplicas, configura primero la autenticación LDAP en los miembros secundarios y árbitros antes de configurar el primario. Esto también se aplica a los sets de réplicas de particiones o a los sets de réplicas de servidores de configuración. Configura un miembro del conjunto de réplicas a la vez para mantener una mayoría de nodos para la disponibilidad de escritura.

En clústeres sharded, debes configurar la autenticación LDAP en los servidores de configuración y en cada mongos para los usuarios a nivel de clúster. Opcionalmente, puedes configurar la autorizacion LDAP en cada partición para los usuarios locales del fragmento.

El proceso de autenticación LDAP a través de las 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 mapeado a un nombre distinguido de LDAP antes de autenticarse contra el servidor LDAP, MongoDB puede aplicar transformaciones basadas en el ajuste de configuración security.ldap.userToDNMapping.

  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 el servidor LDAP, o si el servidor LDAP prohíbe enlaces anónimos, MongoDB utiliza el nombre de usuario y la contraseña especificados en security.ldap.bind.queryUser y security.ldap.bind.queryPassword para conectarse al servidor LDAP antes de intentar autenticar las credenciales del 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 asociar el nombre de usuario con un usuario en la base de datos $external, otorgando a ese usuario todos los roles o privilegios asociados a un usuario coincidente. Si MongoDB no puede encontrar un usuario que coincida, la autenticación falla.

  6. El cliente puede realizar aquellas acciones para las cuales MongoDB ha otorgado al usuario autenticado roles o privilegios.

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 de servidores LDAP con comillas en el 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 que utilice sasl 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 (nombre distinguido) o nombre SASL, que el servidor de MongoDB autentica o vincula cuando se conecta a un servidor LDAP.

Usar con queryPassword.

El usuario especificado debe tener los privilegios apropiados para ejecutar consultas en el servidor LDAP.

NO, a menos que se especifique una query 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 autenticar en un servidor LDAP al usar queryUser.

NO, salvo que se especifique en queryUser.

Las implementaciones de MongoDB en Windows pueden usar las credenciales del sistema operativo en lugar de queryUser y queryPassword para autenticar o vincularse al conectarse al servidor LDAP.

NO, a menos que esté reemplazando queryUser y queryPassword.

Los clientes pueden autenticarse utilizando un nombre de usuario cuyo formato es incompatible con el formato esperado por el bind method configurado. Por ejemplo, simple la vinculación puede requerir un nombre distinguido total de LDAP, mientras que el nombre de usuario utilizado para autenticarse en MongoDB puede 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 se especifica una userToDNMapping transformación que utiliza consultas LDAP como parte de la transformación, también se debe especificar un queryUser 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 la vinculación mediante saslauthd.

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

  • Uso de 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 mecanismo SASL PLAIN, enviando y recibiendo datos en texto claro. Debe usar solo un canal de confianza, como una VPN, una conexión cifrada con TLS/SSL o una red por cable 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 configurado en enabled,

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

  • setParameter con el saslauthdPath establecido en la ruta al socket Unix-domain de la instancia saslauthd. Especifica un string vacío "" para usar la ruta por defecto del socket de dominio Unix.

Incluye cualquier otra configuración de archivo requerida para tu implementación. Para obtener documentación completa sobre los archivos de configuración, consulta 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 socket de dominio Unix saslauthd especificado para security.sasl.saslauthdSocketPath o --setParameter saslauthdPath debe conceder permisos de lectura y ejecución (r-x) 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 la configuración de saslauthd.conf para trabajar con dos servicios LDAP populares:

Consulta la documentación de saslauthd y tu servicio de 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