mongokerberos Herramienta de validación
El mongokerberos El programa proporciona un método conveniente para verificar la configuración Kerberos de su plataforma para su uso con MongoDB y para probar que la autenticación Kerberos desde un cliente MongoDB funciona como se espera.
La herramienta puede ayudar a diagnosticar problemas comunes de configuración y es el punto de partida recomendado para solucionar problemas de configuración de Kerberos.mongokerberos Consulte la documentación mongokerberos de para obtener más información.
mongokerberos Está disponible únicamente en MongoDB Enterprise.
Estrategias de depuración de la configuración de Kerberos
Si tiene dificultades para iniciar o autenticarse contra mongod o mongos con Kerberos, considere lo siguiente:
Asegúrese de estar ejecutando MongoDB Enterprise, no MongoDB Community Edition. La autenticación Kerberos es una función de MongoDB Enterprise y no funciona con los binarios de MongoDB Community Edition.
Para verificar que está utilizando MongoDB Enterprise, pase la
--versionopción de línea de comando amongodmongoso:mongod --version En la salida de este comando, busque la cadena
modules: subscriptionomodules: enterprisepara confirmar que está utilizando los binarios de MongoDB Enterprise.Asegúrese de que el nombre de host del sistema canónico de la
mongodinstancia o sea un nombre de dominio completamente calificado y que se pueda resolver.mongosEn Linux, puede verificar la resolución del nombre de host del sistema con el comando
hostname -fen el indicador del sistema.En Linux, asegúrese de que El componente principal del nombre principal de servicio (SPN) del SPN
mongodbes. Si el componente principal del SPN nomongodbes, debe especificarlo--setParameter saslServiceNamecon.
En Linux, asegúrese de que el componente de instancia del nombre principal de servicio (SPN) en el archivo keytab coincida con el nombre de host del sistema canónico de la
mongodmongosinstancia o. Si el nombre de hostmongoddel sistema de la instancia o no está en el archivo keytab, la autenticación fallará con unmongosGSSAPI error acquiring credentials.mensaje de error.Si el nombre de host de su instancia o devuelto
mongodmongosporhostname -fno está completamente calificado, utilice--setParameter saslHostNamepara establecer el nombre de dominio completamente calificado de la instancia al iniciar sumongodmongoso.Asegúrese de que cada host que ejecute una instancia
mongodomongostengaAPTRregistros DNS y para proporcionar búsquedas DNS directas e inversas. ElAregistro debe corresponder al FQDN demongodmongoso.Asegúrese de que los relojes de los servidores que alojan sus instancias de MongoDB y la infraestructura Kerberos estén dentro del desfase horario máximo: 5 minutos por defecto. Las diferencias horarias superiores al desfase horario máximo impiden una autenticación correcta.
Asegúrese de que las tablas de claves KRB5 de Linux contengan nombres de principal que terminen en
@<KERBEROS REALM>. Para validar SPN: ejecutesetspn -Q <spn>en Active Directory. Si se configura correctamente, este comando devuelve un nombre distintivo para la cuenta asociada al SPN. Si ejecutaklist -k <keytab>en Linux,<spn>@<KERBEROS REALM>aparecerá en la tabla de claves.Si utiliza Active Directory como KDC, asegúrese de que la cuenta de servicio MongoDB sea una cuenta de usuario, no una cuenta de máquina.
Si utiliza el cifrado AES con Active Directory, habilite AES en la cuenta de servicio MongoDB con la
msDS-SupportedEncryptionTypespropiedad o la configuración de política "Seguridad de red: Configurar tipos de cifrado permitidos para Kerberos".Kerberos aplica sales a sus algoritmos de generación de claves para garantizar que dos usuarios con la misma contraseña generen claves distintas.
ktutilen Linux y Active Directory (AD) no utiliza el mismo proceso para generar sales. Esta discrepancia puede provocar fallos de autenticación al trabajar en entornos Linux y Windows. Para mitigar este problema, puede:Genere el archivo keytab en el servidor AD y mueva el archivo resultante al servidor Linux.
ktpass /out <outfile.keytab> /princ <spn>@<KERBEROS REALM> /mapuser <current userPrincipalName> /crypto ALL /ptype KRB5_NT_PRINCIPAL +rndpass Nota
Esto cambiará
userPrincipalNameal valor en/princ.Use
ktutilen Linux y fuerce el uso de la sal correcta. Para forzar el uso dektutil:Genere una entrada de tabla de claves que utilice
userPrincipalNamecomo nombre principal.ktutil: add_entry -password -p <userPrincipalName>@<KERBEROS REALM> -e aes256-cts-hmac-sha1-96 -k <KVNO> Password for <userPrincipalName>@<KERBEROS REALM>: ktutil: list -k slot KVNO Principal Volcar hexadecimalmente la clave.
Cree una nueva entrada de tabla de claves, utilizando
<spn>@<KERBEROS REALM>como nombre principal y utilice la clave hexadecimal.1 <KVNO> <userPrincipalName>@<KERBEROS REALM>(0x<HEXDUMP>) ktutil: add_entry -key -p <spn>@<KERBEROS REALM> -e aes256-cts-hmac-sha1-96 -k <KVNO> Key for <spn>@<KERBEROS REALM> (hex): <HEXDUMP> ktutil: write_kt mongodb_ad.keytab
Utilice RC4-HMAC, que no utiliza sales, aunque no se recomienda.
Registro de seguimiento de Kerberos en Linux
MIT Kerberos proporciona la KRB5_TRACE variable de entorno para la salida del registro de seguimiento. Si tiene problemas persistentes con MIT Kerberos en Linux, puede configurar KRB5_TRACE al iniciar mongod mongoslas instancias, u mongosh para generar un registro detallado.
Por ejemplo, el siguiente comando inicia un independiente cuyo archivo de claves está en la ruta mongod predeterminada /etc/krb5.keytab y configura KRB5_TRACE para escribir /logs/mongodb-kerberos.log en:
env KRB5_KTNAME=/etc/krb5.keytab \ KRB5_TRACE=/logs/mongodb-kerberos.log \ mongod --dbpath /data/db --logpath /data/db/mongodb.log \ --auth --setParameter authenticationMechanisms=GSSAPI \ --bind_ip localhost,<hostname(s)|ip address(es)> --fork
Mensajes de error comunes
En algunas situaciones, MongoDB devolverá mensajes de error desde la interfaz GSSAPI si hay un problema con el servicio Kerberos. Algunos mensajes de error comunes son:
GSSAPI error in client while negotiating security context.Este error se produce en el cliente y refleja credenciales insuficientes o un intento malicioso de autenticación.
Si recibe este error, asegúrese de estar utilizando las credenciales correctas y el nombre de dominio completo correcto al conectarse al host.
GSSAPI error acquiring credentials.- Este error ocurre durante el inicio de
mongodo y refleja una configuración incorrecta del nombre de host del sistema o un archivo keytab faltante o configuradomongosincorrectamente.