Overview
MongoDB Enterprise admite la autenticación mediante un Servicio Kerberos. Kerberos es un protocolo de autenticación estándar de la industria para grandes sistemas cliente/servidor. Kerberos permite que MongoDB y las aplicaciones aprovechen la infraestructura y los procesos de autenticación existentes. MongoDB Enterprise solo admite la implementación de MIT de Kerberos.
Requisitos previos
Configurar e implementar un despliegue de Kerberos queda fuera del alcance de este documento. Este tutorial asume que se ha configurado un principal de servicio Kerberos para cada mongod.exe y mongos.exe instancia.
En los sets de réplicas y clústeres, asegúrate de que tu configuración utilice nombres de dominio completamente calificados (FQDN) en lugar de direcciones IP o nombres de host no calificados. Debe usar el FQDN para GSSAPI a fin de resolver correctamente los dominios de Kerberos y permitirle conectarse.
Procedimientos
Inicie mongod.exe sin Kerberos.
Para la incorporación inicial de usuarios de Kerberos, inicie mongod.exe sin soporte para Kerberos.
Si un usuario Kerberos ya está en MongoDB y tiene los privilegios requeridos para crear un usuario, puede mongod.exe iniciar con soporte Kerberos.
Incluye configuraciones adicionales según corresponda para tu implementación.
Nota
mongod y mongos se enlazan a localhost por defecto. Si los miembros de la implementación se ejecutan en hosts diferentes o si se desea que clientes remotos se conecten a la implementación, se debe especificar --bind_ip o net.bindIp.
Conéctate a mongod.
Conecte mongosh a la instancia de mongod.exe. Si mongod.exe tiene --auth habilitado, asegúrate de conectarte con los privilegios necesarios para crear un usuario.
Agrega los principales de Kerberos a MongoDB.
Agregue un principal de Kerberos, <username>@<KERBEROS REALM>, a MongoDB en la base de datos $external. Especifica el realm de Kerberos en TODAS LETRAS MAYÚSCULAS. La base de datos $external permite a mongod.exe consultar una fuente externa (por ejemplo, Kerberos) para autenticar. Para especificar los privilegios del usuario, asigna roles al usuario.
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.
El siguiente ejemplo añade el principal Kerberos reportingapp@EXAMPLE.NET con acceso de sólo lectura a la base de datos records:
use $external db.createUser( { user: "reportingapp@EXAMPLE.NET", roles: [ { role: "read", db: "records" } ] } )
Añada otros responsables según sea necesario. Para cada usuario que desee autenticar usando Kerberos, debe crear un usuario correspondiente en MongoDB. Para obtener más información sobre cómo crear y gestionar usuarios, consulta Comandos de gestión de usuarios.
Inicia mongod.exe con compatibilidad para Kerberos.
Debe iniciar mongod.exe como la cuenta de entidad de servicio.
Para iniciar mongod.exe con soporte de Kerberos, establezca el parámetro mongod.exe authenticationMechanisms en GSSAPI:
mongod.exe --setParameter authenticationMechanisms=GSSAPI <additional mongod.exe options>
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.
Por ejemplo, lo siguiente inicia una instancia autónoma mongod.exe con soporte para Kerberos:
mongod.exe --auth --setParameter authenticationMechanisms=GSSAPI --bind_ip localhost,<hostname(s)|ip address(es)>
Conectar el shell mongosh.exe con mongod.exe y autenticarse.
Conecta el cliente shell mongosh como el principal de Kerberos application@EXAMPLE.NET.
Puedes conectarte y autenticarte desde la línea de comandos.
Utilizando cmd.exe:
mongosh.exe --host hostname.example.net --authenticationMechanism=GSSAPI --authenticationDatabase=$external --username reportingapp@EXAMPLE.NET
Utilizando Windows PowerShell:
mongosh.exe --host hostname.example.net --authenticationMechanism=GSSAPI --authenticationDatabase='$external' --username reportingapp@EXAMPLE.NET
Si se está conectando a un sistema cuyo nombre de host coincide con el nombre de Kerberos, asegúrate de especificar el nombre de dominio completo (FQDN) para la opción --host, en lugar de una dirección IP o un nombre de host no calificado.
Si te conectas a un sistema cuyo nombre de host no coincide con el nombre de Kerberos, primero conecta el mongosh shell a mongod.exe, y luego desde el mongosh shell, utiliza el método db.auth() para autenticarte en la base de datos $external.
use $external db.auth( { mechanism: "GSSAPI", user: "reportingapp@EXAMPLE.NET" } )
Consideraciones adicionales
Configura mongos.exe para Kerberos
Para iniciar mongos.exe con soporte de Kerberos, establece el parámetro mongos.exe authenticationMechanisms en GSSAPI. Debes iniciar mongos.exe como la cuenta principal de servicio :
mongos.exe --setParameter authenticationMechanisms=GSSAPI <additional mongos options>
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.
Por ejemplo, lo siguiente inicia una instancia de mongos con soporte para Kerberos:
mongos.exe --setParameter authenticationMechanisms=GSSAPI --configdb shard0.example.net, shard1.example.net,shard2.example.net --keyFile C:\<path>\mongos.keyfile --bind_ip localhost,<hostname(s)|ip address(es)>
Modifica o incluye cualquier opción adicional de mongos.exe según sea necesario para tu configuración. Por ejemplo, en lugar de utilizar --keyFile para la autenticación interna de los nodos del clúster, puedes utilizar la autenticación de nodos X.509 en su lugar.
Asignar el nombre principal de servicio (SPN) al servicio de Windows de MongoDB
Utilice setspn.exe para asignar el nombre principal del servicio (SPN) a la cuenta que ejecuta el mongod.exe y el mongos.exe servicio:
setspn.exe -S <service>/<fully qualified domain name> <service account name>
Ejemplo
Si mongod.exe se ejecuta como un servicio llamado mongodb en testserver.mongodb.com con el nombre de la cuenta de servicio mongodtest, asigne el SPN de la siguiente manera:
setspn.exe -S mongodb/testserver.mongodb.com mongodtest
Incorpora mecanismos de autenticación adicionales.
La autenticación de Kerberos (GSSAPI (Kerberos)) puede funcionar junto con:
El mecanismo de autenticación SCRAM de MongoDB:
El mecanismo de autenticación de MongoDB para LDAP:
PLAIN (SASL LDAP)
El mecanismo de autenticación de MongoDB para X.509:
Especifica los mecanismos de la siguiente forma:
--setParameter authenticationMechanisms=GSSAPI,SCRAM-SHA-256
Solo añada los otros mecanismos si están en uso. Esta configuración de parámetros no afecta a la autenticación interna de los nodos del clúster en MongoDB.
Pruebas y verificación
Después de completar los pasos de configuración, puedes validar tu configuración con la mongokerberos herramienta.
mongokerberos proporciona un método conveniente para comprobar la configuración de Kerberos de la plataforma con MongoDB y para verificar que la autenticación Kerberos de un cliente MongoDB funciona como se espera. Consulta la documentación de mongokerberos para obtener más información.
mongokerberos está disponible solo en MongoDB Enterprise.