MongoDB Enterprise
Nota
A partir de MongoDB 8.0 y continuado en 9.0, La autenticación y autorización de LDAP están obsoletas. LDAP se eliminará en una futura versión.
Para aprender sobre métodos de autenticación alternativos, consulta Alternativas de autenticación LDAP.
Synopsis
MongoDB Enterprise proporciona mongoldap para probar las opciones de configuración LDAP de MongoDB contra un servidor LDAP en funcionamiento o un conjunto de servidores.
Para validar las opciones LDAP en el archivo de configuración, establezca la opción mongoldap --config en la ruta del archivo de configuración.
Para probar las opciones de configuración de LDAP, debe especificar --user y --password. mongoldap simula la autenticación en un servidor MongoDB que se ejecuta con las opciones de configuración y las credenciales proporcionadas.
mongoldap devuelve un informe que incluye el éxito o el fracaso de cualquier paso en el procedimiento de autenticación o autorización LDAP. Los mensajes de error incluyen información sobre errores específicos encontrados y consejos potenciales para resolverlos.
Al configurar las opciones relacionadas con la autorización LDAP, mongoldap ejecuta una consulta LDAP construida utilizando las opciones de configuración y el nombre de usuario proporcionados, y devuelve una lista de roles en la base de datos admin para los que el usuario está autorizado.
Puede utilizar esta información al configurar los roles de autorización LDAP para el control de acceso de usuarios. Por ejemplo, utilice mongoldap para garantizar que su configuración permita a los usuarios con privilegios obtener los roles necesarios para realizar sus tareas. Del mismo modo, utilice mongoldap para garantizar que su configuración impida que los usuarios sin privilegios obtengan roles para acceder al servidor MongoDB o realizar acciones no autorizadas.
Al configurar las opciones relacionadas con la autenticación LDAP, utilice mongoldap para garantizar que la operación de autenticación funcione como se espera.
Ejecute mongoldap desde la línea de comandos del sistema, no en mongosh.
Este documento proporciona una descripción general completa de todas las opciones de línea de comandos para mongoldap.
Instalación
La herramienta mongoldap forma parte del paquete MongoDB Database Tools Extra y se puede instalar con el servidor MongoDB o como una instalación independiente.
Instala con el servidor
Para instalar mongoldap como parte de una instalación de MongoDB Enterprise Server:
Sigue las instrucciones para su plataforma: Instale MongoDB Enterprise servidor
Una vez completada la instalación,
mongoldapy las demás herramientas incluidas estarán disponibles en la misma ubicación que el servidor.
Instalar como autónomo
Para instalar mongoldap como una instalación independiente:
Siga el enlace de descarga para MongoDB Enterprise Edition: Centro de descargas deMongoDB Enterprise
Selecciona tu Platform (sistema operativo) en el menú desplegable y luego selecciona el Package correspondiente para tu plataforma según la siguiente gráfica:
OSPaqueteLinux
tgzPaqueteWindows
zipPaquetemacOS
tgzPaqueteUna vez descargado, descomprima el archivo y copie
mongoldapa una ubicación en su disco duro.Tip
Los usuarios de Linux y macOS pueden copiar
mongoldapa una ubicación del sistema de archivos definida en la variable de entorno$PATH, como/usr/bin. Esto permite hacer referencia amongoldapdirectamente en la línea de comandos por su nombre, sin necesidad de especificar su ruta completa ni navegar primero a su directorio padre. Consulte la guía de instalación de su plataforma para obtener más información.
Uso
Nota
Una descripción completa de LDAP o Active Directory está fuera del alcance de esta documentación.
Considere el siguiente archivo de configuración de muestra, diseñado para admitir la autenticación y autorización de LDAP a través de Active Directory:
security: authorization: "enabled" ldap: servers: "activedirectory.example.net" bind: queryUser: "mongodbadmin@dba.example.com" queryPassword: "secret123" userToDNMapping: '[ { match : "(.+)", ldapQuery: "DC=example,DC=com??sub?(userPrincipalName={0})" } ]' authz: queryTemplate: "DC=example,DC=com??sub?(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={USER}))" setParameter: authenticationMechanisms: "PLAIN"
Puedes usar mongoldap para validar el archivo de configuración, que devuelve un informe del procedimiento. Debes especificar un nombre de usuario y una contraseña para mongoldap.
mongoldap --config=<path-to-config> --user="bob@dba.example.com" --password="secret123"
Si las credenciales proporcionadas son válidas y las opciones de LDAP en los archivos de configuración son válidas, la salida podría ser la siguiente:
Checking that an LDAP server has been specified... [OK] LDAP server found Connecting to LDAP server... [OK] Connected to LDAP server Parsing MongoDB to LDAP DN mappings.. [OK] MongoDB to LDAP DN mappings appear to be valid Attempting to authenticate against the LDAP server... [OK] Successful authentication performed Checking if LDAP authorization has been enabled by configuration... [OK] LDAP authorization enabled Parsing LDAP query template.. [OK] LDAP query configuration template appears valid Executing query against LDAP server... [OK] Successfully acquired the following roles: ...
Comportamiento
A partir de MongoDB 5.1, mongoldap permite anteponer al servidor LDAP srv: y srv_raw:.
Si tu cadena de conexión especifica "srv:<DNS_NAME>", mongoldap verifica que "_ldap._tcp.gc._msdcs.<DNS_NAME>" exista para que SRV admita Active Directory. Si no se encuentra, mongoldap verifica que "_ldap._tcp.<DNS_NAME>" exista para SRV. Si no se puede encontrar un registro SRV, mongoldap te advertirá que uses "srv_raw:<DNS_NAME>" en su lugar.
Si tu cadena de conexión especifica "srv_raw:<DNS_NAME>", mongoldap realiza una consulta de registros SRV para "<DNS NAME>".
opciones
--config=<filename>, -f=<filename>Especifica un archivo de configuración para las opciones de configuración en tiempo de ejecución. Estas opciones son equivalentes a las opciones de configuración de la línea de comandos. Consulta Opciones del archivo de configuración autogestionada para obtener más información.
mongoldaputiliza cualquier opción de configuración relacionada con la autenticación de proxy LDAP autogestionada o la autorización LDAP en implementaciones autogestionadas para probar la autenticación o autorización LDAP.Requiere especificar
--user. Puede aceptar--passwordpara probar la autenticación LDAP.Asegúrese de que el archivo de configuración utilice codificación ASCII. La instancia
mongoldapno admite archivos de configuración con codificación que no sea ASCII, incluida UTF-8.
--user=<string>Nombre de usuario que
mongoldaputilizará al intentar la autenticación o autorización LDAP.
--password=<string>Contraseña de
--userpara quemongoldapla utilice al intentar la autenticación LDAP. No es necesaria para la autorización LDAP.
--ldapServers=<host1>:<port>,<host2>:<port>,...,<hostN>:<port>El servidor LDAP con el que
mongoldapautentica a los usuarios o determina las acciones que un usuario está autorizado a realizar en una base de datos determinada. Si el servidor LDAP especificado tiene instancias replicadas, puede especificar el host y el puerto de cada servidor replicado en una lista separada por comas.Si su infraestructura LDAP divide el directorio LDAP en varios servidores LDAP, especifique un servidor LDAP o cualquiera de sus instancias replicadas en
--ldapServers. MongoDB admite las siguientes referencias LDAP definidas en RFC 4511 4.1.10. No utilice--ldapServerspara listar todos los servidores LDAP de su infraestructura.Si no está configurado,
mongoldapno puede usar la autenticación o autorización LDAP.
--ldapQueryUser=<string>Disponible solamente en MongoDB Enterprise.
La identidad con la que
mongoldapse vincula al conectarse o realizar consultas en un servidor LDAP.Solo es necesario si alguna de las siguientes condiciones es verdadera:
Usando autorizacion LDAP.
Utilizando una consulta LDAP para
username transformation.El servidor LDAP no permite conexiones anónimas
Debes usar
--ldapQueryUsercon--ldapQueryPassword.Si no se establece,
mongoldapno intentará conectarse al servidor LDAP.Nota
Las implementaciones de MongoDB en Windows pueden usar
--ldapBindWithOSDefaultsen lugar de--ldapQueryUsery--ldapQueryPassword. No se pueden especificar--ldapQueryUsery--ldapBindWithOSDefaultsal mismo tiempo.
Disponible solamente en MongoDB Enterprise.
La contraseña utilizada para enlazarse a un servidor LDAP al usar --ldapQueryUser. Debes usar --ldapQueryPassword con --ldapQueryUser.
Si no se configura, mongoldap no intenta conectarse al servidor LDAP.
Puede configurar este ajuste en un mongoldap en ejecución usando setParameter.
El comando ldapQueryPassword setParameter acepta una string o un arreglo de strings. Si ldapQueryPassword se establece en un arreglo, MongoDB intenta cada contraseña en orden hasta que una funcione. Utiliza un arreglo de contraseñas para cambiar la contraseña de la cuenta LDAP sin tiempo de inactividad.
Nota
Las implementaciones de MongoDB en Windows pueden usar --ldapBindWithOSDefaults en lugar de --ldapQueryUser y --ldapQueryPassword. No puedes especificar --ldapQueryPassword y --ldapBindWithOSDefaults al mismo tiempo.
--ldapBindWithOSDefaults=<bool>Por defecto: false
Disponible solo en MongoDB Enterprise para la plataforma Windows.
Permite que
mongoldapse autentique o se vincule utilizando sus credenciales de inicio de sesión de Windows al conectarse al servidor LDAP.Solo es requerido si:
Usando autorizacion LDAP.
Utilizando una consulta LDAP para
username transformation.El servidor LDAP no permite conexiones anónimas
Utilice
--ldapBindWithOSDefaultspara reemplazar--ldapQueryUsery--ldapQueryPassword.
--ldapBindMethod=<string>Por defecto: simple
Disponible solamente en MongoDB Enterprise.
El método
mongoldapse utiliza para autenticarse en un servidor LDAP. Úselo con--ldapQueryUsery--ldapQueryPasswordpara conectarse al servidor LDAP.--ldapBindMethodadmite los siguientes valores:ValorDescripciónsimplemongoldapusa autenticación simple.saslmongoldaputiliza el protocolo SASL para la autenticación.Si especifica
sasl, puede configurar los mecanismos SASL disponibles utilizando--ldapBindSaslMechanisms.mongoldaputiliza por defecto el mecanismoDIGEST-MD5.
--ldapBindSaslMechanisms=<string>Por defecto: DIGEST-MD5
Disponible solamente en MongoDB Enterprise.
Una lista separada por comas de los mecanismos SASL que
mongoldappuede usar al autenticarse en el servidor LDAP. Elmongoldapy el servidor LDAP deben acordar al menos un mecanismo. Elmongoldapcarga dinámicamente las bibliotecas de mecanismos SASL instaladas en la máquina host durante la ejecución.Instale y configure las bibliotecas adecuadas para el mecanismo SASL seleccionado tanto en el host
mongoldapcomo en el servidor LDAP remoto. Es posible que su sistema operativo incluya ciertas bibliotecas SASL de forma predeterminada. Consulte la documentación de cada mecanismo SASL para obtener instrucciones sobre la instalación y configuración.Importante
En los host con Cyrus SASL 2.1.28 o posterior, MongoDB no admite LDAP SASL binding con el mecanismo
DIGEST-MD5. Si establecesecurity.ldap.bind.methodensasly especificaDIGEST-MD5ensecurity.ldap.bind.saslMechanisms,mongodymongosno se inician.Para obtener más información y alternativas, consulte DIGEST-MD5 no compatible con Cyrus SASL 2.1.28 y versiones posteriores.
Si utiliza el mecanismo SASL
GSSAPIpara su uso con la autenticación Kerberos en implementaciones autogestionadas, verifique lo siguiente para la máquina hostmongoldap:LinuxLa variable de entorno
KRB5_CLIENT_KTNAMEse resuelve al nombre de los archivos Keytab de Linux del cliente para la máquina host. Para obtener más información sobre las variables de entorno de Kerberos, consulte la documentación de Kerberos.El archivo keytab del cliente incluye un User Principal para que
mongoldaplo utilice al conectarse al servidor LDAP y ejecutar consultas LDAP.
Windows- Al conectarse a un servidor de Active Directory, la configuración de Kerberos de Windows genera automáticamente un Ticket de Concesión de Tickets (Ticket-Granting-Ticket) cuando el usuario inicia sesión en el sistema. Configure
--ldapBindWithOSDefaultscon el valortruepara permitir quemongoldaputilice las credenciales generadas al conectarse al servidor de Active Directory y ejecutar consultas.
Establezca
--ldapBindMethodensaslpara usar esta opción.Nota
Para obtener una lista completa de los mecanismos SASL,consulte el listado de IANA. Consulte la documentación de su servicio LDAP o Active Directory para identificar los mecanismos SASL compatibles con dicho servicio.
MongoDB no es una fuente de bibliotecas de mecanismos SASL, ni la documentación de MongoDB es una fuente definitiva para instalar o configurar cualquier mecanismo SASL. Para obtener documentación y soporte, consulte al proveedor o propietario de la biblioteca de mecanismos SASL.
Para obtener más información sobre SASL, consulte los siguientes recursos:
Para Linux, consulte la documentación de Cyrus SASL.
Para Windows, consulte la documentación de SASL para Windows.
--ldapTransportSecurity=<string>Por defecto: tls
Disponible solamente en MongoDB Enterprise.
Por defecto,
mongoldapcrea una conexión segura TLS/SSL con el servidor LDAP.Para implementaciones en Linux, debe configurar las opciones TLS adecuadas en el archivo
/etc/openldap/ldap.conf. El gestor de paquetes de su sistema operativo crea este archivo como parte de la instalación de MongoDB Enterprise, a través de la dependencialibldap. Consulte la documentación deTLS Optionsen la documentación de OpenLDAP (ldap.conf) para obtener instrucciones más completas.Para la implementación de Windows, debe agregar los certificados CA del servidor LDAP a la herramienta de gestión de certificados de Windows. El nombre exacto y la funcionalidad de la herramienta pueden variar según la versión del sistema operativo. Consulte la documentación de su versión de Windows para obtener más información sobre la gestión de certificados.
Establezca
--ldapTransportSecurityennonepara deshabilitar TLS/SSL entremongoldapy el servidor LDAP.Advertencia
Configurar
--ldapTransportSecurityanonetransmite información en texto plano y posiblemente credenciales entremongoldapy el servidor LDAP.
--ldapTimeoutMS=<int>Por defecto: 10000
Disponible solamente en MongoDB Enterprise.
La cantidad de tiempo en milisegundos
mongoldapque debe esperar un servidor LDAP para responder a una solicitud.Aumentar el valor de
--ldapTimeoutMSpuede evitar fallos de conexión entre el servidor MongoDB y el servidor LDAP si la causa del fallo es un tiempo de espera agotado. Disminuir el valor de--ldapTimeoutMSreduce el tiempo que MongoDB espera una respuesta del servidor LDAP.
--ldapUserToDNMapping=<string>Disponible solamente en MongoDB Enterprise.
Asigna el nombre de usuario proporcionado a
mongoldappara la autenticación a un nombre distinguido (DN) de LDAP. Es posible que deba usar--ldapUserToDNMappingpara transformar un nombre de usuario en un DN de LDAP en los siguientes casos:Realizar autenticación LDAP con enlace simple de LDAP, donde los usuarios se autentican en MongoDB con nombres de usuario que no son nombres distinguidos completos de LDAP.
Utilizando un
LDAP authorization query templateque requiere un nombre distinguido.Transformando los nombres de usuario de los clientes que se autentican en Mongo DB utilizando diferentes mecanismos de autenticación, por ejemplo, X.509, kerberos) a un nombre distinguido completo de LDAP para su autorización.
--ldapUserToDNMappingespera una cadena JSON entre comillas que represente una matriz ordenada de documentos. Cada documento contiene una expresión regularmatchy una plantillasubstitutionoldapQueryutilizada para transformar el nombre de usuario entrante.Cada documento en el arreglo tiene la siguiente forma:
{ match: "<regex>" substitution: "<LDAP DN>" | ldapQuery: "<LDAP Query>" } CampoDescripciónEjemplomatchUna expresión regular (regex) con formato ECMAScript para hacer coincidir con un nombre de usuario proporcionado. Cada sección entre paréntesis representa un grupo de captura de regex utilizado por
substitutionoldapQuery."(.+)ENGINEERING""(.+)DBA"substitutionPlantilla de formato de nombre distinguido (DN) LDAP que convierte el nombre de autenticación que coincide con la expresión regular
matchen un DN LDAP. Cada valor numérico entre llaves se reemplaza por el grupo de captura de expresión regular correspondiente, extraído del nombre de usuario de autenticación mediante la expresión regularmatch.El resultado de la sustitución debe ser una cadena de escape RFC4514.
"cn={0},ou=engineering, dc=example,dc=com"ldapQueryPlantilla de formato de consulta LDAP que inserta el nombre de autenticación que coincide con la expresión regular
matchen una URI de consulta LDAP codificada según RFC4515 y RFC4516. Cada valor numérico entre llaves se reemplaza por el grupo de captura de expresión regular correspondiente, extraído del nombre de usuario de autenticación mediante la expresiónmatch.mongoldapejecuta la consulta contra el servidor LDAP para recuperar el DN LDAP del usuario autenticado.mongoldaprequiere exactamente un resultado para que la transformación sea exitosa; de lo contrario,mongoldapomite esta transformación."ou=engineering,dc=example, dc=com??one?(user={0})"Nota
La explicación de RFC4514, RFC4515, RFC4516 o las consultas LDAP queda fuera del alcance de la documentación de MongoDB. Consulte directamente el RFC o utilice su recurso LDAP preferido.
Para cada documento del arreglo, debe usar
substitutionoldapQuery. No puede especificar ambos en el mismo documento.Al realizar la autenticación o autorización,
mongoldaprecorre cada documento del array en el orden especificado, comparando el nombre de usuario de autenticación con el filtromatch. Si encuentra una coincidencia,mongoldapaplica la transformación y utiliza el resultado para autenticar al usuario.mongoldapno revisa los documentos restantes del array.Si el documento proporcionado no coincide con el nombre de autenticación indicado,
mongoldapcontinúa recorriendo la lista de documentos para encontrar coincidencias adicionales. Si no se encuentra ninguna coincidencia en ningún documento, o si la transformación que describe el documento falla,mongoldapdevuelve un error.mongoldaptambién devuelve un error si una de las transformaciones no se puede evaluar debido a fallos de red o de autenticación con el servidor LDAP.mongoldaprechaza la solicitud de conexión y no comprueba los documentos restantes en la matriz.A partir de MongoDB, 5.0,
--ldapUserToDNMappingacepta una cadena vacía""o una matriz vacía[ ]en lugar de un documento de mapeo. Si se proporciona una cadena vacía o una matriz vacía a--ldapUserToDNMapping, MongoDB mapeará el nombre de usuario autenticado como el DN de LDAP. Anteriormente, proporcionar un documento de mapeo vacío provocaba un error en el mapeo.Ejemplo
A continuación, se muestran dos documentos de transformación. El primer documento coincide con cualquier string que termine en
@ENGINEERINGy coloca todo lo que proceda al sufijo en un grupo de captura de expresiones regulares. El segundo documento coincide con cualquier string que termine en@DBAy coloca todo lo que preceda al sufijo en un grupo de captura de expresiones regulares.Importante
Debe pasar el arreglo a --ldapUserToDNMapping como una string.
"[ { match: "(.+)@ENGINEERING.EXAMPLE.COM", substitution: "cn={0},ou=engineering,dc=example,dc=com" }, { match: "(.+)@DBA.EXAMPLE.COM", ldapQuery: "ou=dba,dc=example,dc=com??one?(user={0})" } ]" Un usuario con el nombre de usuario
alice@ENGINEERING.EXAMPLE.COMcoincide con el primer documento. El grupo de captura de regex{0}corresponde al stringalice. La salida resultante es el nombre distinguido"cn=alice,ou=engineering,dc=example,dc=com".Un usuario con nombre de usuario
bob@DBA.EXAMPLE.COMcoincide con el segundo documento. El grupo de captura de expresiones regulares{0}corresponde a la cadenabob. El resultado es la consulta LDAP"ou=dba,dc=example,dc=com??one?(user=bob)".mongoldapejecuta esta consulta contra el servidor LDAP, devolviendo el resultado"cn=bob,ou=dba,dc=example,dc=com".Si
--ldapUserToDNMappingno está configurado,mongoldapno aplica ninguna transformación al nombre de usuario cuando intenta autenticar o autorizar a un usuario contra el servidor LDAP.
--ldapAuthzQueryTemplate=<string>Disponible solamente en MongoDB Enterprise.
Una URL de consulta LDAP relativa formateada conforme a RFC4515 y RFC4516 que
mongoldapejecuta para obtener los grupos LDAP a los que pertenece el usuario autenticado. La consulta es relativa al host o hosts especificados en--ldapServers.En la URL, puede usar los siguientes tokens de sustitución:
Token de sustituciónDescripción{USER}Sustituye el nombre de usuario autenticado, o el nombre de usuario
transformedsi se especifica unusername mapping.{PROVIDED_USER}Sustituye el nombre de usuario proporcionado, es decir, antes de la autenticación o
LDAP transformation.Al crear la URL de consulta, asegúrese de que el orden de los parámetros LDAP respete RFC4516:
[ dn [ ? [attributes] [ ? [scope] [ ? [filter] [ ? [Extensions] ] ] ] ] ] Si su consulta incluye un atributo,
mongoldapasume que la consulta recupera los DN de los que esta entidad es miembro.Si su consulta no incluye un atributo,
mongoldapasume que la consulta recupera todas las entidades de las que el usuario es miembro.Para cada DN de LDAP devuelto por la consulta,
mongoldapasigna al usuario autorizado un rol correspondiente en la base de datosadmin. Si un rol en la base de datosadmincoincide exactamente con el DN,mongoldapotorga al usuario los roles y privilegios asignados a dicho rol. Consulte el métododb.createRole()para obtener más información sobre la creación de roles.Ejemplo
Esta query LDAP devuelve cualquier grupo listado en el atributo
memberOfdel objeto de usuario LDAP."{USER}?memberOf?base" Su configuración LDAP puede no incluir el atributo
memberOfcomo parte del esquema de usuario, puede poseer un atributo diferente para el reporte de la pertenencia a grupos, o puede no rastrear la pertenencia a grupos a través de los atributos. Configure su query con respecto a su propia configuración única de LDAP.Si no está configurado,
mongoldapno puede autorizar a los usuarios mediante LDAP.