Problemas de autenticación en Azure HDInsight
En este artículo se describen los pasos de solución de problemas y las posibles soluciones para los problemas que se producen al usar clústeres de Azure HDInsight.
En clústeres seguros respaldados por Azure Data Lake Gen2, cuando los usuarios del dominio inician sesión en los servicios de clúster a través de la puerta de enlace de HDI (como iniciar sesión en el portal de Apache Ambari), HDI Gateway intenta obtener primero un token de OAuth de Microsoft Entra y, a continuación, obtener un vale kerberos de Microsoft Entra Domain Services. La autenticación puede dar errores en cualquiera de estas fases. Este artículo está pensado para depurar de algunos de estos problemas.
Cuando se produce un error en la autenticación, se le pedirán credenciales. Si cancela este cuadro de diálogo, se imprime el mensaje de error. Estos son algunos de los escenarios comunes:
invalid_grant o unauthorized_client, 50126
Problema
Se produce un error de inicio de sesión para los usuarios federados con el código de error 50126 (el inicio de sesión se realiza correctamente para los usuarios en la nube). El mensaje de error es similar al siguiente:
Reason: Bad Request, Detailed Response: {"error":"invalid_grant","error_description":"AADSTS70002: Error validating credentials. AADSTS50126: Invalid username or password\r\nTrace ID: 0000aaaa-11bb-cccc-dd22-eeeeee333333\r\n Correlation ID: aaaa0000-bb11-2222-33cc-444444dddddd\r\nTimestamp: 2019-01-28 17:49:58Z","error_codes":[70002,50126], "timestamp":"2019-01-28 17:49:58Z","trace_id":"0000aaaa-11bb-cccc-dd22-eeeeee333333","correlation_id":"aaaa0000-bb11-2222-33cc-444444dddddd"}
Causa
El código de error 50126 de Microsoft Entra significa que el inquilino no ha establecido la directiva AllowCloudPasswordValidation
.
Solución
Use las credenciales del administrador de identidad híbrida para usar hashes de contraseña para los usuarios respaldados por ADFS. Aplique AllowCloudPasswordValidationPolicy
como se muestra en el artículo Uso de Enterprise Security Package en HDInsight.
invalid_grant o unauthorized_client, 50034
Problema
El inicio de sesión produce un error con el código 50034. El mensaje de error es similar al siguiente:
{"error":"invalid_grant","error_description":"AADSTS50034: The user account Microsoft.AzureAD.Telemetry.Diagnostics.PII doesn't exist in the aaaabbbb-0000-cccc-1111-dddd2222eeee directory. To sign into this application, the account must be added to the directory.\r\nTrace ID: 2222cccc-33dd-eeee-ff44-aaaaaa555555\r\nCorrelation ID: cccc2222-dd33-4444-55ee-666666ffffff\r\nTimestamp: 2019-04-29 15:52:16Z", "error_codes":[50034],"timestamp":"2019-04-29 15:52:16Z","trace_id":"2222cccc-33dd-eeee-ff44-aaaaaa555555", "correlation_id":"cccc2222-dd33-4444-55ee-666666ffffff"}
Causa
El nombre de usuario es incorrecto (no existe). El usuario no está utilizando el mismo nombre de usuario que se usa en Azure Portal.
Solución
Use el mismo nombre de usuario que funciona en ese portal.
invalid_grant o unauthorized_client, 50053
Problema
La cuenta de usuario está bloqueada; código de error 50053. El mensaje de error es similar al siguiente:
{"error":"unauthorized_client","error_description":"AADSTS50053: You've tried to sign in too many times with an incorrect user ID or password.\r\nTrace ID: 00aa00aa-bb11-cc22-dd33-44ee44ee44ee\r\nCorrelation ID: 11bb11bb-cc22-dd33-ee44-55ff55ff55ff\r\nTimestamp: 2019-06-06 09:47:23Z","error_codes":[50053],"timestamp":"2019-06-06 09:47:23Z","trace_id":"aaaa0000-bb11-2222-33cc-444444dddddd","correlation_id":"aaaa0000-bb11-2222-33cc-444444dddddd"}
Causa
Demasiados intentos de inicio de sesión con una contraseña incorrecta.
Solución
Espere treinta minutos aproximadamente o detenga las aplicaciones que puedan estar intentando autenticarse.
invalid_grant o unauthorized_client, 50053 (#2)
Problema
Contraseña expirada, código de error 50053. El mensaje de error es similar al siguiente:
{"error":"user_password_expired","error_description":"AADSTS50055: Password is expired.\r\nTrace ID: 6666aaaa-77bb-cccc-dd88-eeeeee999999\r\nCorrelation ID: eeee4444-ff55-6666-77aa-888888bbbbbb\r\nTimestamp: 2019-06-06 17:29:37Z","error_codes":[50055],"timestamp":"2019-06-06 17:29:37Z","trace_id":"6666aaaa-77bb-cccc-dd88-eeeeee999999","correlation_id":"eeee4444-ff55-6666-77aa-888888bbbbbb","suberror":"user_password_expired","password_change_url":"https://portal.microsoftonline.com/ChangePassword.aspx"}
Causa
La contraseña ha expirado.
Solución
Cambie la contraseña en Azure Portal (en el sistema local) y espere treinta minutos para que la sincronización se ponga al día.
interaction_required
Problema
Recibe el mensaje de error interaction_required
.
Causa
La directiva de acceso condicional o MFA se está aplicando al usuario. Como todavía no se admite la autenticación interactiva, el usuario o el clúster deben estar exentos del acceso condicional o MFA. Si decide excluir el clúster (directiva de exención basada en dirección IP), asegúrese de que ServiceEndpoints
de AD está habilitado para esa red virtual.
Solución
Use la directiva de acceso condicional y excluya los clústeres de HDInisght de MFA, tal como se muestra en Configurar un clúster de HDInsight con Enterprise Security Package mediante Azure Microsoft Entra Domain Services.
Inicio de sesión denegado
Problema
Inicio de sesión denegado.
Causa
Para llegar a esta fase, la autenticación de OAuth no es un problema, pero sí lo es la autenticación Kerberos. Si este clúster respaldado por ADLS, el inicio de sesión de OAuth se realizó correctamente antes de intentar la autenticación Kerberos. En los clústeres WASB, no se intenta iniciar sesión en OAuth. Podría haber muchos motivos para el error de Kerberos, como que los hashes de contraseña no estén sincronizados, la cuenta de usuario se bloqueó en Microsoft Entra Domain Services, etc. Los hashes de contraseña solo se sincronizan cuando el usuario cambia la contraseña. Al crear la instancia de Microsoft Entra Domain Services, se iniciará la sincronización de las contraseñas que se cambian después de la creación. No sincroniza retroactivamente las contraseñas que se establecieron antes de su inicio.
Solución
Si cree que las contraseñas pueden no estar sincronizadas, pruebe a cambiar la contraseña y espere unos minutos a que se sincronicen.
Debe intentar autenticarse (kinit) utilizando las mismas credenciales de usuario, desde una máquina que esté unida al dominio. Pruebe SSH en el nodo principal o perimetral con un usuario local y luego ejecute kinit.
Error de Kinit
Problema
Error de kinit.
Causa
Varía.
Solución
Para que kinit se realice correctamente, debe conocer su sAMAccountName
(este es el nombre corto de la cuenta sin el dominio Kerberos). sAMAccountName
es normalmente el prefijo de la cuenta (como bob en bob@contoso.com
). Para algunos usuarios, podría ser diferente. Necesita la capacidad de examinar el directorio o buscar en él para aprender su sAMAccountName
.
Formas de encontrar sAMAccountName
:
Si puede iniciar sesión en Ambari mediante el administrador de Ambari local, consulte la lista de usuarios.
Si tiene una máquina Windows unida a un dominio, puede usar las herramientas estándar de AD de Windows para examinar. Esto requiere una cuenta profesional en el dominio.
En el nodo principal, puede usar los comandos de SAMBA para buscar. Esto requiere una sesión Kerberos válida (kinit correcto). net ads search "(userPrincipalName=bob*)"
Los resultados de la búsqueda y el examen deben mostrarle el atributo
sAMAccountName
. Además, podría examinar otros atributos comopwdLastSet
,badPasswordTime
,userPrincipalName
etc. para ver si esas propiedades coinciden con lo que espera.
Kinit produce un error de autenticación previa
Problema
Kinit genera el error Preauthentication
.
Causa
Nombre de usuario o contraseña incorrectos.
Solución
Compruebe su nombre de usuario y contraseña. Compruebe también si hay otras propiedades descritas. Para habilitar la depuración detallada, ejecute export KRB5_TRACE=/tmp/krb.log
desde la sesión antes de intentar kinit.
Error del trabajo o comando HDFS debido a TokenNotFoundException
Problema
El trabajo o comando HDFS produce un error debido a TokenNotFoundException
.
Causa
No se encontró el token de acceso de OAuth necesario para que el trabajo o el comando se ejecutara correctamente. El controlador ADLS/ABFS intenta recuperar el token de acceso de OAuth desde el servicio de credenciales antes de realizar las solicitudes de almacenamiento. Este token se registra cuando inicia sesión en el portal de Ambari con el mismo usuario.
Solución
Asegúrese de que ha iniciado sesión correctamente en el portal de Ambari una vez a través del nombre de usuario cuya identidad se usa para ejecutar el trabajo.
Error al recuperar el token de acceso
Problema
El usuario recibe el mensaje de error Error fetching access token
.
Causa
Este error se produce de forma intermitente cuando los usuarios intentan acceder a ADLS Gen2 mediante ACL y el token Kerberos ha expirado.
Solución
Para Azure Data Lake Storage Gen1, limpie la memoria caché del explorador y vuelva a iniciar sesión en Ambari.
Para Azure Data Lake Storage Gen2, ejecute
/usr/lib/hdinsight-common/scripts/RegisterKerbTicketAndOAuth.sh <upn>
usuario intenta iniciar sesión como
Pasos siguientes
Si su problema no aparece o es incapaz de resolverlo, visite uno de nuestros canales para obtener ayuda adicional:
Obtenga respuestas de expertos de Azure mediante el soporte técnico de la comunidad de Azure.
Póngase en contacto con @AzureSupport, la cuenta oficial de Microsoft Azure para mejorar la experiencia del cliente. Esta cuenta pone en contacto a la comunidad de Azure con los recursos adecuados: respuestas, soporte técnico y expertos.
Si necesita más ayuda, puede enviar una solicitud de soporte técnico desde Azure Portal. Seleccione Soporte técnico en la barra de menús o abra la central Ayuda + soporte técnico. Para obtener información más detallada, revise Creación de una solicitud de soporte técnico de Azure. La suscripción a Microsoft Azure incluye acceso al soporte técnico para facturación y administración de suscripciones. El soporte técnico se proporciona a través de uno de los planes de soporte técnico de Azure.