mongokerberos Herramienta de validación
La mongokerberos programa ofrece un método conveniente para verificar la configuración de Kerberos de tu plataforma para usar con MongoDB y para comprobar que la autenticación Kerberos desde un cliente MongoDB funcione según lo esperado.
La herramienta mongokerberos puede ayudar a diagnosticar problemas comunes de configuración y es el lugar recomendado para empezar a resolver problemas de configuración de Kerberos. Consulta la documentación mongokerberos 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 componente principal del nombre del principal del servicio (SPN) del SPN será
mongodb. Si el componente principal del SPN no esmongodb, debe especificar el componente principal usando--setParameter saslServiceName.
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 un KDC, asegúrese de que la cuenta del servicio de MongoDB sea una cuenta de usuario y no una cuenta de máquina.
Si usas el cifrado AES con Active Directory, activa AES en la cuenta de servicio de MongoDB con la propiedad
msDS-SupportedEncryptionTypeso la configuración de la política 'Seguridad de red: Configurar los tipos de cifrado permitidos para Kerberos'.Kerberos sala 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 utilizan el mismo proceso para generar sales. Esta discrepancia puede causar fallos de autenticación al trabajar entre entornos Linux y Windows. Para mitigar este problema, puedes: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.Utiliza
ktutilen Linux y obliga a que use la sal correcta. Para forzar a quektutiluse la sal correcta:Generar una entrada de keytab que utilice
userPrincipalNamecomo el 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 keytab utilizando
<spn>@<KERBEROS REALM>como nombre principal y utilice la clave hexdumpeada.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 esto 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.