Docs Menu
Docs Home
/ /

Autentica usando SASL y LDAP autogestionados con OpenLDAP

MongoDB Enterprise ofrece compatibilidad con la autenticación de usuarios mediante proxy. Esto permite a los administradores configurar un clúster de MongoDB para autenticar usuarios mediante el envío de solicitudes de autenticación a un servicio LDAP (Protocolo ligero de acceso a directorios) específico.

Nota

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

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.

La compatibilidad de LDAP con la autenticación de usuarios requiere una configuración adecuada del proceso demonio saslauthd así como del servidor MongoDB.

1

En los sistemas que configuran saslauthd con el archivo /etc/sysconfig/saslauthd, como Red Hat Enterprise Linux, Fedora, CentOS, y Amazon Linux AMI, configura el mecanismo MECH en ldap:

MECH=ldap

En los sistemas que configuran saslauthd con el archivo /etc/default/saslauthd, como Ubuntu, configure la opción MECHANISMS en ldap:

MECHANISMS="ldap"
2

En ciertas distribuciones de Linux, saslauthd comienza con el almacenamiento en caché de las credenciales de autenticación habilitado. Hasta que se reinicie o caduque la caché, saslauthd no contactará con el servidor LDAP para volver a autenticar a los usuarios en su caché de autenticación. Esto permite saslauthd que autentique correctamente a los usuarios en su caché, incluso si el servidor LDAP está inactivo o si se revocan las credenciales de los usuarios almacenados en caché.

Para establecer el tiempo de expiración (en segundos) para el caché de autenticación, consulte la Opción-t saslauthd de.

3

Si el saslauthd.conf archivo no existe, créelo. El saslauthd.conf archivo suele residir en la /etc carpeta. Si especifica una ruta de archivo diferente, consulte la opción -O saslauthdde.

Para conectarse a un servidor OpenLDAP, actualice el archivo saslauthd.conf con las siguientes opciones de configuración:

ldap_servers: <ldap uri>
ldap_search_base: <search base>
ldap_filter: <filter>

El ldap_servers especifica la uri del servidor LDAP utilizado para la autenticación. En general, para OpenLDAP instalado en la máquina local, puedes especificar el valor ldap://localhost:389 o, si usas LDAP sobre TLS/SSL, puedes especificar el valor ldaps://localhost:636.

El ldap_search_base especifica el nombre distintivo al que se refiere la búsqueda. La búsqueda incluye la base o los objetos que se encuentran debajo.

El ldap_filter especifica el filtro de búsqueda.

Los valores de estas opciones de configuración deben coincidir con los valores específicos de su prueba. Por ejemplo, para filtrar por correo electrónico, especifique ldap_filter: (mail=%n).

Un archivo de muestra saslauthd.conf para OpenLDAP incluye el siguiente contenido:

ldap_servers: ldaps://ad.example.net
ldap_search_base: ou=Users,dc=example,dc=com
ldap_filter: (uid=%u)

Para utilizar esta configuración de muestra de OpenLDAP, cree usuarios con un atributo uid (nombre de inicio de sesión) y colóquelos en la unidad organizativa Users (ou) debajo de los componentes de dominio (dc) example y com.

Para obtener más información sobre la saslauthd configuración de, consulte http://www.openldap.org/doc/admin24/guide.html#Configuringsaslauthd.

4

Utiliza la utilidad testsaslauthd para probar la configuración saslauthd. Por ejemplo:

testsaslauthd -u testuser -p testpassword -f /var/run/saslauthd/mux
  • 0: OK "Success" Indica una autenticación exitosa.

  • 0: NO "authentication failed" Indica un error de nombre de usuario, contraseña o configuración.

Modifique la ruta del archivo con respecto a la ubicación del directorio saslauthd en el sistema operativo host.

Importante

El directorio principal del archivo de socket de dominio Unix saslauthd especificado para security.sasl.saslauthdSocketPath o deben --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.

1

Agregue el usuario a la $external base de datos en MongoDB. Para especificar sus privilegios, asígnele roles.

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.

Por ejemplo, lo siguiente agrega un usuario con acceso de solo lectura a la base de datos records.

db.getSiblingDB("$external").createUser(
{
user : <username>,
roles: [ { role: "read", db: "records" } ]
}
)

Agregue principales adicionales según sea necesario. Para obtener más información sobre la creación y administración de usuarios, consulte Comandos de administración de usuarios.

2

Para configurar el servidor MongoDB para utilizar la saslauthd instancia para la autenticación de proxy, incluya las siguientes opciones al mongod iniciar:

Si utiliza la authorization opción para aplicar la autenticación, necesitará privilegios para crear un usuario.

Para la ruta del socket,/<some>/<path>/saslauthd establezca saslauthdPath /<some>/<path>/saslauthd/muxen, como en el siguiente ejemplo de línea de comando:

mongod --auth --setParameter saslauthdPath=/<some>/<path>/saslauthd/mux --setParameter authenticationMechanisms=PLAIN

Incluir opciones adicionales según sea necesario para la configuración. Por ejemplo, si se desea que los clientes remotos se conecten a su implementación o si los miembros de su implementación se ejecutan en hosts diferentes, especificar el --bind_ip.

O si utiliza un archivo de configuración en formato YAML, especifique las siguientes configuraciones en el archivo:

security:
authorization: enabled
setParameter:
saslauthdPath: /<some>/<path>/saslauthd/mux
authenticationMechanisms: PLAIN

O, si utiliza el formato de archivo de configuración anterior:

auth=true
setParameter=saslauthdPath=/<some>/<path>/saslauthd/mux
setParameter=authenticationMechanisms=PLAIN

Para utilizar la ruta de socket de dominio Unix predeterminada, establezca saslauthdPath en la cadena "" vacía, como en el siguiente ejemplo de línea de comando:

mongod --auth --setParameter saslauthdPath="" --setParameter authenticationMechanisms=PLAIN

Incluir opciones adicionales según sea necesario para la configuración. Por ejemplo, si se desea que los clientes remotos se conecten a su implementación o si los miembros de su implementación se ejecutan en hosts diferentes, especificar el --bind_ip.

O si utiliza un archivo de configuración en formato YAML, especifique las siguientes configuraciones en el archivo:

security:
authorization: enabled
setParameter:
saslauthdPath: ""
authenticationMechanisms: PLAIN

O, si utiliza el formato de archivo de configuración anterior:

auth=true
setParameter=saslauthdPath=""
setParameter=authenticationMechanisms=PLAIN

Incluye opciones adicionales según sea necesario para la configuración. Por ejemplo, si se desea que los clientes remotos se conecten a la implementación o si los miembros de la implementación se ejecutan en diferentes hosts, se debe especificar la configuración net.bindIp.

3

Puede autenticarse desde la línea de comandos durante la conexión o conectarse primero y luego autenticarse utilizando el db.auth() método.

Para autenticarse al conectarse con,mongosh ejecute mongosh con las siguientes opciones de línea de comando, sustituyendo <host> y,<user> e ingrese su contraseña cuando se le solicite:

mongosh --host <host> --authenticationMechanism PLAIN --authenticationDatabase '$external' -u <user> -p

Como alternativa, conéctese sin proporcionar credenciales y luego llame al método en db.auth() la $external base de datos. Especifique el valor "PLAIN" en el mechanism campo, y el usuario y la contraseña en los user pwd campos y, respectivamente. Utilice el digestPassword valor predeterminado (),false ya que el servidor debe recibir una contraseña sin procesar para reenviarla saslauthd a, como en el siguiente ejemplo:

Tip

Puedes usar el método passwordPrompt() en conjunto con varios métodos y comandos de gestión de autenticación de usuarios para solicitar la contraseña en lugar de especificar la contraseña directamente en la llamada al método o comando. Sin embargo, aún puedes especificar la contraseña directamente como lo harías con las versiones anteriores del shell mongo.

db.getSiblingDB("$external").auth(
{
mechanism: "PLAIN",
user: <username>,
pwd: passwordPrompt() // or cleartext password
}
)

Introduzca la contraseña cuando se lo pidan.

El servidor reenvía la contraseña en texto plano. En general, úsela solo en un canal confiable (VPN, TLS/SSL, red cableada confiable). Consulte Consideraciones.

Volver

Usar ActiveDirectory

En esta página