mongokerberos Herramienta de validación
El programa mongokerberos proporciona un método conveniente para verificar la configuración de Kerberos de tu plataforma para usar con MongoDB y para probar que la autenticación de Kerberos desde un cliente de MongoDB funcione correctamente.
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.On Linux, ensure that the primary component of the service principal name (SPN) of the SPN is
mongodb. If the primary component of the SPN is notmongodb, you must specify the primary component using--setParameter saslServiceName.
On Linux, ensure that the instance component of the service principal name (SPN) in the keytab file matches the canonical system hostname of the
mongodormongosinstance. If themongodormongosinstance's system hostname is not in the keytab file, authentication will fail with aGSSAPI error acquiring credentials.error message.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 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 SPN, ejecutesetspn -Q <spn>en Active Directory. Si está configurado correctamente, este comando devuelve un nombre distinguido para la cuenta adjunta al SPN. Si ejecutaklist -k <keytab>en Linux,<spn>@<KERBEROS REALM>aparece 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 utiliza el cifrado AES con Active Directory, habilite AES en la cuenta de servicio de MongoDB con la
msDS-SupportedEncryptionTypespropiedad o con la configuración de directiva "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 provides the KRB5_TRACE environment variable for trace logging output. If you are having persistent problems with MIT Kerberos on Linux, you can set KRB5_TRACE when starting your mongod, mongos, or mongosh instances to produce verbose logging.
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.