Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Solucionar problemas de autenticación Kerberos autogestionada

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.

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 El componente principal del nombre principal de servicio (SPN) del SPN mongodb es. Si el componente principal del SPN no mongodb es, debe especificarlo --setParameter saslServiceName con.

  • 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 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-SupportedEncryptionTypes propiedad 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. ktutil en 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á userPrincipalName al valor en /princ.

    • Use ktutil en Linux y fuerce el uso de la sal correcta. Para forzar el uso de ktutil:

      1. Genere una entrada de tabla de claves que utilice userPrincipalName como 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 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.

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