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
/ /
Proxy LDAP
/ / / / /

Autentique usando SASL y LDAP autogestionados con Active Directory

MongoDB Enterprise proporciona soporte para la autenticación de usuarios a través de un proxy. Esto permite a los administradores configurar un clúster de MongoDB para autenticar usuarios mediante el reenvío de solicitudes de autenticación a un servicio especificado del Protocolo Ligero de Acceso a Directorios (LDAP).

Nota

Para MongoDB 4.2 Binarios empresariales enlazados contra libldap (como cuando se ejecuta en RHEL), el acceso a libldap está sincronizado, lo que implica 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.

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.

El soporte LDAP para la autenticación de usuarios requiere la configuración adecuada del proceso de 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 sistemas que configuran saslauthd con el archivo /etc/default/saslauthd, como Ubuntu, configura 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) de la caché de autenticación, consulte la opción -tde.saslauthd

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 utilizar con ActiveDirectory, inicie saslauthd con las siguientes opciones de configuración establecidas en el archivo saslauthd.conf:

ldap_servers: <ldap uri>
ldap_use_sasl: yes
ldap_mech: DIGEST-MD5
ldap_auth_method: fastbind

Para <ldap uri>, especifique la URI del servidor LDAP. Por ejemplo, ldap_servers: ldaps://ad.example.net.

Para obtener más información sobre la configuración de saslauthd, 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 definido 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" } ]
}
)

Agrega actores principales adicionales según sea necesario. Para obtener más información sobre la creación y gestión de usuarios, consulta Comandos de gestión de usuarios.

2

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

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

Para la ruta del socket de /<some>/<path>/saslauthd, establece saslauthdPath en /<some>/<path>/saslauthd/mux, como en el siguiente ejemplo de línea de comandos:

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 la siguiente configuración 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 predeterminada del socket del dominio Unix, establezca saslauthdPath como la string vacía "", como en el siguiente ejemplo de línea de comandos:

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 la siguiente configuración 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 mediante el método db.auth().

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éctate sin proporcionar credenciales y luego llama al método db.auth() en la base de datos $external. Especifica el valor "PLAIN" en el campo mechanism, el usuario y la contraseña en los campos user y pwd respectivamente. Utiliza el valor por defecto de digestPassword (false) ya que el servidor debe recibir una contraseña sin digerir para que pueda ser enviada a saslauthd, como en el siguiente ejemplo:

Tip

Puedes utilizar el método passwordPrompt() junto con varios métodos/comandos de autenticación/gestión de usuarios para solicitar la contraseña en lugar de especificarla directamente en la llamada del método/comando. Sin embargo, todavía puedes especificar la contraseña directamente como lo harías con versiones anteriores del shell de 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 sin formato. En general, utiliza solo en un canal de confianza (VPN, TLS/SSL, red cableada confiable). Ver Consideraciones.

Volver

Proxy LDAP

En esta página