mongokerberos Herramienta de validación
La 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 solo en MongoDB Enterprise.
Estrategias de depuración de la configuración de Kerberos
Si tienes dificultades para iniciar o autenticarte mongod o mongos con Kerberos, considera lo siguiente:
Asegúrate de estar ejecutando MongoDB Enterprise, no MongoDB Community Edition. La autenticación Kerberos es una funcionalidad de MongoDB Enterprise y no funcionará con los binarios de MongoDB Community Edition.
Para comprobar que está utilizando MongoDB Enterprise, pase la opción de línea de comandos
--versionamongodo amongos:mongod --version En la salida de este comando, busca la string
modules: subscriptionomodules: enterprisepara confirmar que estás usando los binarios de MongoDB Enterprise.Asegúrate de que el nombre de host canónico del sistema de la instancia
mongodomongossea un nombre de dominio completamente calificado que pueda resolverse.En Linux, puedes verificar la resolución del nombre de host del sistema con el comando
hostname -fen el símbolo del sistema.En Linux, asegúrese de que el 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úrate de que el componente de instancia del nombre principal de servicio (SPN) en el archivo keytab coincida con el nombre de host canónico del sistema de la instancia de
mongodomongos. Si el nombre del host del sistema de la instanciamongodomongosno está en el archivo keytab, la autenticación fallará con un mensaje de errorGSSAPI error acquiring credentials..Si el hostname de tu instancia
mongodomongos, según lo devuelvehostname -f, no es completamente calificado, usa--setParameter saslHostNamepara establecer el Fully Qualified Domain Name (FQDN) de la instancia al iniciar tumongodomongos.Asegúrate de que cada host que ejecute una instancia de
mongodomongostenga los registros DNSAyPTRpara proporcionar tanto la búsqueda directa como la inversa de DNS. El registroAdebería mapearse al FQDN demongodomongos.Asegúrate de que los relojes en los servidores que alojan tus instancias de MongoDB y la infraestructura de Kerberos estén dentro de la desviación horaria máxima: 5 minutos por defecto. Las diferencias de tiempo superiores a la desviación horaria máxima impiden la autenticación exitosa.
Asegúrese de que los keytabs de KRB5 de Linux contengan nombres principales que terminen en
@<KERBEROS REALM>. Para validar SPNs, ejecutasetspn -Q <spn>en Active Directory. Si está configurado correctamente, este comando devuelve un Nombre Distinguido para la cuenta adjunta al SPN. Si ejecutasklist -k <keytab>en Linux, aparece<spn>@<KERBEROS REALM>en el keytab.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:Genera el archivo keytab en el servidor de AD y mueve 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 Hexdump de 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 trazas de Kerberos en Linux
MIT Kerberos proporciona la variable de entorno KRB5_TRACE para el registro de trazas. Si tienes problemas persistentes con MIT Kerberos en Linux, puedes configurar KRB5_TRACE al iniciar tus instancias de mongod, mongos o mongosh para generar registros detallados.
Por ejemplo, el siguiente comando inicia un mongod autónomo cuyo archivo keytab se encuentra en la ruta por defecto /etc/krb5.keytab y configura KRB5_TRACE para guardar en /logs/mongodb-kerberos.log:
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 de 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 ocurre en el cliente y refleja credenciales insuficientes o un intento malicioso de autenticación.
Si recibes este error, asegúrate de que estás utilizando las credenciales correctas y el nombre de dominio completo correcto al conectarte al host.
GSSAPI error acquiring credentials.- Este error ocurre durante el inicio del
mongodomongosy refleja una configuración incorrecta del nombre de host del sistema o un archivo keytab faltante o mal configurado.