Docs Menu
Docs Home
/ /
Kerberos
/ / / / /

Solucionar problemas de autenticación Kerberos autogestionada

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.

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 --version opción de línea de comando a mongod mongoso:

    mongod --version

    En la salida de este comando, busque la cadena modules: subscription o modules: enterprise para confirmar que está utilizando los binarios de MongoDB Enterprise.

  • Asegúrese de que el nombre de host del sistema canónico de la mongod instancia o sea un nombre de dominio completamente calificado y que se pueda resolver.mongos

    En Linux, puede verificar la resolución del nombre de host del sistema con el comando hostname -f en el indicador del sistema.

  • En Linux, asegúrese de que el componente principal del nombre principal del servicio (SPN)del SPN mongodb es. Si el componente principal del SPN no mongodb es, debe especificarlo --setParameter saslServiceName con.

  • 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 mongod mongos instancia o. Si el nombre de host mongod del sistema de la instancia o no está en el archivo keytab, la autenticación fallará con un mongos GSSAPI error acquiring credentials. mensaje de error.

    Si el nombre de host de su instancia o devuelto mongod mongos por hostname -f no está completamente calificado, utilice --setParameter saslHostName para establecer el nombre de dominio completamente calificado de la instancia al iniciar su mongod mongoso.

  • Asegúrese de que cada host que ejecute una instancia mongod o mongos tenga A PTR registros DNS y para proporcionar búsquedas DNS directas e inversas. El A registro debe corresponder al FQDN de mongod mongoso.

  • 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: ejecute setspn -Q <spn> en Active Directory. Si se configura correctamente, este comando devuelve un nombre distintivo para la cuenta asociada al SPN. Si ejecuta klist -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-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:

    • 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á 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. Volcar hexadecimalmente 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 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

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

Tip

Volver

Configurar en Windows

En esta página