Docs Menu
Docs Home
/ /
Kerberos
/ / / / /

Configura MongoDB autogestionado con la autenticación Kerberos en Linux

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 admite la implementación MIT. de Kerberos.

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

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.

1

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.

2

Conectemongosha la instanciamongod. Simongodtiene--authhabilitado, asegúrese de conectarse con los privilegios necesarios para crear un usuario.

3

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.

4

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.

5

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" } )

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 Almacena la configuración en archivos de unidad. Actualice el archivo de unidad para configurar la variable KRB5_KTNAME.

1
sudo systemctl cat mongod

El comando systemctl devuelve la ubicación del archivo y muestra su contenido.

2

Para establecer la variable KRB5_KTNAME, edite la siguiente línea para reflejar la ubicación de su archivo keytab:

Environment="KRB5_KTNAME=<path-to-your-mongod.keytab-file>"
3

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
4
sudo systemctl daemon-reload
5
sudo systemctl restart mongod

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>"

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

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.

Si encuentra problemas al iniciar mongod o con la autenticación Kerberos, consulte Solucionar mongosproblemas de autenticación Kerberos autoadministrada.

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:

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

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.

Volver

Kerberos

En esta página