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 est谩 fuera del alcance de esta documentaci贸n. Esta p谩gina asume 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 contra libldap_r.
No utiliza el agrupamiento de conexiones si se ejecuta:
en Linux, donde los binarios de MongoDB Enterprise est谩n vinculados a 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 mongos no pueden autenticarse correctamente a trav茅s de saslauthd sin el permiso especificado en el directorio saslauthd 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 gesti贸n de usuarios requiere gestionar usuarios tanto en el servidor LDAP como en el servidor MongoDB. Para cada usuario que se autentique a trav茅s de LDAP, MongoDB requiere un usuario en la base de datos $external cuyo nombre coincida exactamente con el nombre de usuario de autenticaci贸n. Los cambios a un usuario en el servidor LDAP pueden requerir cambios en el usuario correspondiente de MongoDB $external.
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 con los siguientes requisitos para cada usuario a fin de 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 deseas seguir permitiendo el acceso de usuarios que no est谩n en la base de datos $external, debes configurar setParameter authenticationMechanisms para incluir SCRAM-SHA-1 y/o SCRAM-SHA-256, seg煤n corresponda. Luego, 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 la vinculaci贸n simple por defecto, pero tambi茅n puede utilizar la vinculaci贸n
saslsi se configura ensecurity.ldap.bind.methodysecurity.ldap.bind.saslMechanisms.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 mediante las bibliotecas del sistema operativo, especifique los siguientes ajustes como parte de su archivo de configuraci贸n de mongod o mongos:
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 el 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 con el servidor LDAP utilizar saslauthd, inicie el mongod utilizando cualquiera de las siguientes opciones de l铆nea de comandos o los siguientes ajustes de archivo de configuraci贸n:
--authhabilitar el control de acceso,--setParametercon elauthenticationMechanismsconfigurado enPLAIN, 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.
Incluye cualquier otra opci贸n de l铆nea de comandos requerida para tu implementaci贸n. Para obtener documentaci贸n completa sobre las mongod opciones de l铆nea de comandos, consulte mongod instancias.
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. La documentaci贸n de saslauthd.conf est谩 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 mongos no pueden autenticarse correctamente a trav茅s de saslauthd sin el permiso especificado en el directorio saslauthd 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 con el que se debe autenticar. |
| La contrase帽a para autenticarse. |
| Se debe establecer en |