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. |
| Los servidores de MongoDB en Linux admiten la vinculación a un servidor LDAP mediante el 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 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.
Pool de conexiones
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.
saslauthd y permisos de directorio
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 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 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.
Gestionar usuarios LDAP en el servidor 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.
Gestionando usuarios no LDAP existentes
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 set de réplicas
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.
Implementando la autenticación LDAP en un clúster fragmentado
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.
Autenticación LDAP a través de las librerías LDAP del sistema operativo
El proceso de autenticación LDAP a través de las 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 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.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 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.queryUserysecurity.ldap.bind.queryPasswordpara conectarse al servidor LDAP antes de intentar autenticar las credenciales del 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 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.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 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 que utilice | |
NO, a menos que configure | ||
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 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 | |
La contraseña utilizada para autenticar en un servidor LDAP al usar | NO, salvo que se especifique en | |
Las implementaciones de MongoDB en Windows pueden usar las credenciales del sistema operativo en lugar de | NO, a menos que esté reemplazando | |
Los clientes pueden autenticarse utilizando un nombre de usuario cuyo formato es incompatible con el formato esperado por el
Si se especifica una | 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 la vinculación mediante saslauthd.
Considerations
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
saslauthdy el servidor LDAP. El servidor LDAP utiliza el mecanismoSASL 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.
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:
--authhabilitar el control de acceso,--setParametercon elauthenticationMechanismsestablecidoPLAINen, y--setParametercon el parámetrosaslauthdPathconfigurado en la ruta del socket de dominio Unix de la instancia desaslauthd. Especifica un string vacío""para utilizar la ruta de socket por defecto del 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.authorizationconfigurado enenabled,setParametercon el parámetroauthenticationMechanismsestablecido enPLAIN, ysetParametercon elsaslauthdPathestablecido 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 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.
Conéctese a un servidor MongoDB mediante 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 |