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. MongoDB Enterprise solo es compatible con... ImplementaciónMIT de Kerberos.
Requisitos previos
Para verificar que está utilizando MongoDB Enterprise, pase la --version
Opción de línea de comando para mongod mongoso:
mongod --version
En la salida de este comando, busque la cadena modules:
subscription o modules: enterprise para confirmar que está utilizando los binarios de MongoDB Enterprise.
Para conjuntos de réplicas y clústeres fragmentados, asegúrese de que su configuración utilice nombres de dominio completos (FQDN) en lugar de direcciones IP o nombres de host sin calificar. Debe usar el FQDN para que GSSAPI resuelva correctamente los dominios Kerberos y le permita conectarse.
La configuración de una implementación de Kerberos queda fuera del alcance de este documento. Consulte la documentación de Kerberos del MIT o la documentación de su sistema operativo para obtener información sobre cómo configurar una implementación de Kerberos.
Para usar MongoDB con Kerberos, debe agregarse a la base de datos Kerberos una entidad de servicio Kerberos para cada mongod instancia y de mongos su implementación de MongoDB. Puede agregar la entidad de servicio ejecutando un comando similar al siguiente en su KDC:
kadmin.local addprinc mongodb/m1.example.com@EXAMPLE.COM
En cada sistema que ejecute mongod mongoso, se debe crear un archivo keytab para la entidad de servicio correspondiente. Puede crear el archivo keytab ejecutando un comando similar al siguiente en el sistema que ejecute mongod mongoso:
kadmin.local ktadd mongodb/m1.example.com@EXAMPLE.COM
Procedimiento
El siguiente procedimiento describe los pasos para agregar un usuario principal de Kerberos a MongoDB, configurar una mongod instancia independiente para compatibilidad con Kerberos y conectarse usando y autenticar el usuario mongosh principal.
Iniciar mongod sin Kerberos.
Para la incorporación inicial de usuarios de Kerberos, inicie mongod 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 Kerberos.
Incluya configuraciones adicionales según corresponda a su 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.
Agregar principal(es) Kerberos a MongoDB.
Agregue un principal Kerberos, o, <username>@<KERBEROS REALM> <username>/<instance>@<KERBEROS REALM>a MongoDB en la $external base de datos. Especifique el dominio Kerberos en mayúsculas. La $external base de datos permite que consulte una fuente externa (p. ej.,mongod Kerberos) para autenticarse. Para especificar los privilegios del usuario, 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.
El siguiente ejemplo agrega el principal Kerberos application/reporting@EXAMPLE.NET con acceso de solo lectura a la base de datos records:
use $external db.createUser( { user: "application/reporting@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.
mongod Comience con soporte Kerberos.
Para iniciar con soporte de Kerberos, establezca la variable mongod ambiental KRB5_KTNAME en la ruta del archivo keytab y el mongod parámetro authenticationMechanisms en GSSAPI en el siguiente formato:
env KRB5_KTNAME=<path to keytab file> \ mongod \ --setParameter authenticationMechanisms=GSSAPI \ <additional mongod 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 independiente con soporte mongod Kerberos:
env KRB5_KTNAME=/opt/mongodb/mongod.keytab \ /opt/mongodb/bin/mongod --auth \ --setParameter authenticationMechanisms=GSSAPI \ --dbpath /opt/mongodb/data --bind_ip localhost,<hostname(s)|ip address(es)>
La ruta a su archivo mongod y a su archivo keytab puede ser diferente. El archivo keytab solo debe ser accesible para el propietario del mongod proceso.
Con los .deb .rpm paquetes oficiales o, puedes configurar KRB5_KTNAME en un archivo de configuración del entorno.Consulta KRB5_KTNAME para obtener más información.
Conectar mongosh a mongod y autentificarse.
Conéctese al cliente como principal mongosh de application/reporting@EXAMPLE.NET Kerberos. Antes de conectarse, debe haber usado el programa de Kerberos kinit para obtener las credenciales application/reporting@EXAMPLE.NET de.
Puedes conectarte y autenticarte desde la línea de comandos.
mongosh --host hostname.example.net --authenticationMechanism=GSSAPI --authenticationDatabase='$external' --username application/reporting@EXAMPLE.NET
Si se conecta a un sistema cuyo nombre de host coincide con el nombre Kerberos, asegúrese 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 se conecta a un sistema cuyo nombre de host no coincide con el nombre de Kerberos, primero conectemongoshamongody luego, desdemongosh, utilice el métododb.auth()para autenticarse en la base de datos $external.
use $external db.auth( { mechanism: "GSSAPI", user: "application/reporting@EXAMPLE.NET" } )
Consideraciones adicionales
KRB5_KTNAME
Si instaló MongoDB Enterprise usando uno de los paquetes oficiales .deb o .rpm y usa los scripts init/upstart incluidos para controlar la instancia, puede configurar mongod la KRB5_KTNAME variable en el archivo de configuración del entorno predeterminado en lugar de configurar la variable cada vez.
Las versiones recientes de los sistemas basados en Red Hat y Debian usan systemd. Las versiones anteriores usan init para la inicialización del sistema. Siga las instrucciones correspondientes para configurar la variable KRB5_KTNAME en su sistema.
systemd Archivos de configuración
systemd Almacena la configuración en archivos de unidad. Actualice el archivo de unidad para configurar la variable KRB5_KTNAME.
Editar el archivo de unidad
Añade la línea editada al archivo de unidad. El archivo de unidad editado tendrá el siguiente aspecto:
[Unit] Description=High-performance, schema-free document-oriented database After=network.target Documentation=https://docs.mongodb.org/manual [Service] User=mongodb Group=mongodb ExecStart=/usr/bin/mongod --config /etc/mongod.conf Environment="KRB5_KTNAME=/etc/mongod.keytab" PIDFile=/var/run/mongodb/mongod.pid file size LimitFSIZE=infinity cpu time LimitCPU=infinity virtual memory size LimitAS=infinity open files LimitNOFILE=64000 processes/threads LimitNPROC=64000 locked memory LimitMEMLOCK=infinity total threads (user+kernel) TasksMax=infinity TasksAccounting=false Recommended limits for for mongod as specified in http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings [Install] WantedBy=multi-user.target
Reiniciar el mongod servicio
sudo systemctl restart mongod
init Archivos de configuración
Para las instalaciones .rpm, el archivo de configuración del entorno predeterminado es /etc/sysconfig/mongod.
Para .deb instalaciones, el archivo es /etc/default/mongodb.
Establezca el valor KRB5_KTNAME agregando una línea similar a la siguiente:
KRB5_KTNAME="<path to keytab>"
Configurar mongos para Kerberos
Para iniciar con soporte de Kerberos, establezca la variable mongos ambiental KRB5_KTNAME en la ruta de su archivo de claves y el mongos parámetro authenticationMechanisms en GSSAPI en el siguiente formato:
env KRB5_KTNAME=<path to keytab file> \ mongos \ --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:
env KRB5_KTNAME=/opt/mongodb/mongos.keytab \ mongos \ --setParameter authenticationMechanisms=GSSAPI \ --configdb shard0.example.net, shard1.example.net,shard2.example.net \ --keyFile /opt/mongodb/mongos.keyfile \ --bind_ip localhost,<hostname(s)|ip address(es)>
La ruta a su archivo mongos y a su archivo keytab puede ser diferente. El archivo keytab solo debe ser accesible para el propietario del mongos proceso.
Modifique o incluya las mongos opciones adicionales que necesite para su configuración. Por ejemplo, en lugar de usar para la autenticación interna de los miembros del clúster fragmentado, puede usar 509 la --keyFile autenticación de miembros X..
Utilice un archivo de configuración
Para configurar mongod o mongos para compatibilidad con Kerberos mediante un archivo de configuración, especifique la authenticationMechanisms configuración en el archivo de configuración.
Si utiliza el formato de archivo de configuración YAML:
setParameter: authenticationMechanisms: GSSAPI
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.
Por ejemplo, si /opt/mongodb/mongod.conf contiene las siguientes configuraciones para un mongod independiente:
security: authorization: enabled setParameter: authenticationMechanisms: GSSAPI storage: dbPath: /opt/mongodb/data net: bindIp: localhost,<hostname(s)|ip address(es)>
Para iniciar con soporte Kerberos, utilice el siguiente mongod formulario:
env KRB5_KTNAME=/opt/mongodb/mongod.keytab \ /opt/mongodb/bin/mongod --config /opt/mongodb/mongod.conf
La ruta a, al mongod archivo keytab y al archivo de configuración puede variar. El archivo keytab solo debe ser accesible para el propietario del mongod proceso.
Solución de problemas de configuración de Kerberos para MongoDB
Si encuentra problemas al iniciar mongod o con la autenticación Kerberos, consulte Solucionar mongosproblemas de autenticación Kerberos autoadministrada.
Incorporar mecanismos de autenticación adicionales
La autenticación Kerberos(GSSAPI (Kerberos)) puede funcionar junto con:
El mecanismo de autenticación SCRAM de MongoDB:
Mecanismo de autenticación de MongoDB para LDAP:
PLAIN (SASL LDAP)
Mecanismo de autenticación de MongoDB para X.509:
Especifique los mecanismos de la siguiente manera:
--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, puede validar su configuración con la mongokerberos herramienta.
mongokerberos proporciona un método práctico para verificar la configuración de Kerberos de su plataforma para su uso con MongoDB y para comprobar que la autenticación Kerberos desde un cliente MongoDB funciona correctamente. Consulte la mongokerberos documentación de para obtener más información.
mongokerberos Está disponible únicamente en MongoDB Enterprise.