Overview
MongoDB Enterprise admite la autenticación mediante un Servicio Kerberos. Kerberos es un protocolo de autenticación estándar de la industria para sistemas grandes de cliente/servidor. Kerberos permite a MongoDB y a las aplicaciones aprovechar la infraestructura y los procesos de autenticación existentes. MongoDB Enterprise solo admite la Implementación 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 mongos.exe Instancia y.
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 de Kerberos.
Si un usuario Kerberos ya está en MongoDB y tiene los privilegios necesarios para crear un usuario, puede iniciar con soporte mongod.exe 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.
Agregar principal(es) 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 como cuenta mongod.exeprincipal del 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)>
Conecte mongosh.exe el shell a mongod.exe y autentíquese.
Conecte el mongosh cliente de shell como principal application@EXAMPLE.NET Kerberos.
Puedes conectarte y autenticarte desde la línea de comandos.
Usando cmd.exe:
mongosh.exe --host hostname.example.net --authenticationMechanism=GSSAPI --authenticationDatabase=$external --username reportingapp@EXAMPLE.NET
Usando 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 con soporte mongos 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
Agregue los demás mecanismos solo si están en uso. Esta configuración no afecta la autenticación interna de los miembros del clúster por parte de 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.