Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /
Kerberos
/ / / / /

Solucionar problemas de autenticación de Kerberos autogestionada

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.

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 --version a mongod o a mongos:

    mongod --version

    En la salida de este comando, busca la string modules: subscription o modules: enterprise para 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 mongod o mongos sea 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 -f en 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 es mongodb, 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 mongod o mongos. Si el nombre del host del sistema de la instancia mongod o mongos no está en el archivo keytab, la autenticación fallará con un mensaje de error GSSAPI error acquiring credentials..

    Si el hostname de tu instancia mongod o mongos, según lo devuelve hostname -f, no es completamente calificado, usa --setParameter saslHostName para establecer el Fully Qualified Domain Name (FQDN) de la instancia al iniciar tu mongod o mongos.

  • Asegúrate de que cada host que ejecute una instancia de mongod o mongos tenga los registros DNS A y PTR para proporcionar tanto la búsqueda directa como la inversa de DNS. El registro A debería mapearse al FQDN de mongod o mongos.

  • 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, ejecuta setspn -Q <spn> en Active Directory. Si está configurado correctamente, este comando devuelve un Nombre Distinguido para la cuenta adjunta al SPN. Si ejecutas klist -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-SupportedEncryptionTypes o 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. ktutil en 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á userPrincipalName al valor en /princ.

    • Utiliza ktutil en Linux y obliga a que use la sal correcta. Para forzar a que ktutil use la sal correcta:

      1. Generar una entrada de keytab que utilice userPrincipalName como 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
      2. Hexdump de la clave.

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

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

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 mongod o mongos y refleja una configuración incorrecta del nombre de host del sistema o un archivo keytab faltante o mal configurado.

Tip

Volver

Configurar en Windows

En esta página