Authentifizierungsprobleme in Azure HDInsight
In diesem Artikel werden Schritte zur Problembehandlung und mögliche Lösungen für Probleme bei der Interaktion mit Azure HDInsight-Clustern beschrieben.
Bei sicheren Clustern, die durch Azure Data Lake Gen2 unterstützt werden, versucht das HDI-Gateway zunächst, ein OAuth-Token aus Microsoft Entra und anschließend ein Kerberos-Ticket aus Microsoft Entra Domain Services abzurufen, wenn sich Domänenbenutzer über das HDI-Gateway bei den Clusterdiensten anmelden (z.B. Anmelden am Apache Ambari-Portal). Die Authentifizierung kann in beiden Phasen fehlschlagen. Dieser Artikel soll Ihnen dabei helfen, einige dieser Probleme zu debuggen.
Wenn die Authentifizierung fehlschlägt, werden Sie zur Eingabe von Anmeldeinformationen aufgefordert. Wenn Sie dieses Dialogfeld abbrechen, wird die Fehlermeldung ausgegeben. Im Anschluss finden Sie einige gängige Fehlermeldungen:
invalid_grant oder unauthorized_client, 50126
Problem
Fehler bei der Anmeldung für Verbundbenutzer mit dem Fehlercode 50126 (Anmeldung ist für Cloudbenutzer erfolgreich). Die Fehlermeldung ähnelt der folgenden:
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"}
Ursache
Microsoft Entra- Fehlercode 50126 bedeutet, dass die AllowCloudPasswordValidation
-Richtlinie nicht vom Mandanten festgelegt wurde.
Lösung
Verwenden Sie die Anmeldeinformationen von Administrator*in für hybride Identität, um Kennworthashes für ADFS-gesicherte Benutzer*innen zu verwenden. Wenden Sie die AllowCloudPasswordValidationPolicy
wie im Artikel Verwenden des Enterprise-Sicherheitspakets in HDInsight gezeigt an.
invalid_grant oder unauthorized_client, 50034
Problem
Bei der Anmeldung tritt der Fehlercode 50034 auf. Die Fehlermeldung ähnelt der folgenden:
{"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"}
Ursache
Der Benutzername ist falsch (nicht vorhanden). Der Benutzer verwendet nicht denselben Benutzernamen, der im Azure-Portal verwendet wird.
Lösung
Verwenden Sie den gleichen Benutzernamen, der in diesem Portal funktioniert.
invalid_grant oder unauthorized_client, 50053
Problem
Das Benutzerkonto ist gesperrt, Fehlercode 50053. Die Fehlermeldung ähnelt der folgenden:
{"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"}
Ursache
Zu viele Anmeldeversuche mit einem falschen Kennwort.
Lösung
Warten Sie ungefähr 30 Minuten, und beenden Sie alle Anwendungen, die möglicherweise versuchen, sich zu authentifizieren.
invalid_grant oder unauthorized_client, 50053 (#2)
Problem
Das Kennwort ist abgelaufen, Fehlercode 50053. Die Fehlermeldung ähnelt der folgenden:
{"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"}
Ursache
Das Kennwort ist abgelaufen.
Lösung
Ändern Sie das Kennwort im Azure-Portal (auf Ihrem lokalen System), und warten Sie 30 Minuten, bis die Synchronisierung abgeschlossen ist.
interaction_required
Problem
Sie erhalten die Fehlermeldung interaction_required
.
Ursache
Die Richtlinie für bedingten Zugriff oder die MFA wird auf den Benutzer angewendet. Da die interaktive Authentifizierung noch nicht unterstützt wird, muss der Benutzer oder der Cluster von MFA/bedingtem Zugriff ausgenommen werden. Wenn Sie den Cluster (auf der IP-Adresse basierende Ausnahmerichtlinie) ausnehmen möchten, vergewissern Sie sich, dass die AD-ServiceEndpoints
für dieses VNET aktiviert sind.
Lösung
Verwenden Sie die Richtlinie für bedingten Zugriff, und schließen Sie die HDInsight-Cluster von MFA aus, wie unter Konfigurieren eines HDInsight-Clusters mit dem Enterprise-Sicherheitspaket mithilfe von Microsoft Entra Domain Services gezeigt.
Anmeldung verweigert
Problem
Anmeldung verweigert.
Ursache
In dieser Phase ist die OAuth-Authentifizierung nicht das Problem, sondern die Kerberos-Authentifizierung. Wenn dieser Cluster durch ADLS gestützt wird, war die OAuth-Anmeldung erfolgreich, bevor die Kerberos-Authentifizierung versucht wird. Bei WASB-Clustern wird die OAuth-Anmeldung nicht versucht. Es kann viele Gründe für Kerberos-Fehler geben: nicht synchronisierte Kennworthashes, das Benutzerkonto ist in Microsoft Entra Domain Services gesperrt usw. Kennworthashes werden nur synchronisiert, wenn der Benutzer das Kennwort ändert. Wenn Sie die Microsoft Entra Domain Services-Instanz erstellen, wird damit begonnen, Kennwörter zu synchronisieren, die nach der Erstellung geändert werden. Kennwörter, die davor festgelegt wurden, werden nicht rückwirkend synchronisiert.
Lösung
Wenn Sie der Ansicht sind, dass Kennwörter ggf. nicht synchron sind, ändern Sie das Kennwort, und warten Sie einige Minuten, bis die Synchronisierung abgeschlossen ist.
Verwenden Sie SSH. Versuchen Sie, sich mit den gleichen Benutzeranmeldeinformationen über einen Computer zu authentifizieren (kinit), der in die Domäne eingebunden ist. Verwenden Sie SSH für den Haupt-/Edgeknoten als lokaler Benutzer, und führen Sie dann kinit aus.
Kinit schlägt fehl
Problem
Kinit schlägt fehl.
Ursache
Verschiedene Ursachen.
Lösung
Damit kinit erfolgreich ist, müssen Sie Ihren sAMAccountName
kennen (dies ist der kurze Kontoname ohne Bereich). sAMAccountName
ist normalerweise das Kontopräfix (z.B. bob in bob@contoso.com
). Für einige Benutzer ist dies möglicherweise anders. Sie müssen im Verzeichnis browsen bzw. es durchsuchen können, um Ihren sAMAccountName
zu ermitteln.
Möglichkeiten zur Ermittlung des sAMAccountName
:
Wenn Sie sich als lokaler Ambari-Administrator bei Ambari anmelden können, sehen Sie sich die Liste der Benutzer an.
Wenn Sie über einen in die Domäne eingebundenen Windows-Computer verfügen, können Sie die Windows AD-Standardtools zum Browsen verwenden. Hierfür ist ein funktionierendes Konto in der Domäne erforderlich.
Im Hauptknoten können Sie mithilfe von SAMBA-Befehlen suchen. Dies erfordert eine gültige Kerberos-Sitzung (erfolgreiches kinit). net ads search "(userPrincipalName=bob*)"
Die Such-/Browsergebnisse sollten das
sAMAccountName
-Attribut anzeigen. Sie können auch andere Attribute wiepwdLastSet
,badPasswordTime
,userPrincipalName
usw. untersuchen, um festzustellen, ob diese Eigenschaften Ihren Erwartungen entsprechen.
Kinit schlägt mit Vorauthentifizierungsfehlern fehl
Problem
Kinit schlägt mit dem Fehler Preauthentication
fehl.
Ursache
Falscher Benutzername oder falsches Kennwort.
Lösung
Überprüfen Sie Ihren Benutzernamen und Ihr Kennwort. Überprüfen Sie außerdem die beschriebenen Eigenschaften. Um ausführliches Debuggen zu aktivieren, führen Sie export KRB5_TRACE=/tmp/krb.log
aus der Sitzung aus, bevor Sie kinit versuchen.
Fehler beim Auftrag/HDFS-Befehl aufgrund von TokenNotFoundException
Problem
Der Auftrag/HDFS-Befehl schlägt aufgrund von TokenNotFoundException
fehl.
Ursache
Das erforderliche OAuth-Zugriffstoken wurde für die erfolgreiche Ausführung des Auftrags bzw. Befehls nicht gefunden. Der ADLS-/ABFS-Treiber versucht, das OAuth-Zugriffstoken aus dem Anmeldeinformationendienst abzurufen, bevor Speicheranforderungen ausgegeben werden. Dieses Token wird registriert, wenn Sie sich als derselbe Benutzer am Ambari-Portal anmelden.
Lösung
Stellen Sie sicher, dass Sie sich mit dem Benutzernamen, dessen Identität zum Ausführen des Auftrags verwendet wird, erfolgreich am Ambari-Portal angemeldet haben.
Fehler beim Abrufen des Zugriffstokens
Problem
Benutzer erhält Fehlermeldung Error fetching access token
.
Ursache
Dieser Fehler tritt zeitweilig auf, wenn Benutzer versuchen, mithilfe von ACLs auf ADLS Gen2 zuzugreifen, und das Kerberos-Token abgelaufen ist.
Lösung
Bereinigen Sie für Azure Data Lake Storage Gen1 den Browsercache, und melden Sie sich erneut bei Ambari an.
Führen Sie für Azure Data Lake Storage Gen2 aus,
/usr/lib/hdinsight-common/scripts/RegisterKerbTicketAndOAuth.sh <upn>
Benutzer versuchen, sich anzumelden als
Nächste Schritte
Wenn Ihr Problem nicht aufgeführt ist oder Sie es nicht lösen können, besuchen Sie einen der folgenden Kanäle, um weitere Unterstützung zu erhalten:
Nutzen Sie den Azure-Communitysupport, um Antworten von Azure-Experten zu erhalten.
Setzen Sie sich mit @AzureSupport in Verbindung, dem offiziellen Microsoft Azure-Konto zum Verbessern der Kundenfreundlichkeit. Verbinden der Azure-Community mit den richtigen Ressourcen: Antworten, Support und Experten.
Sollten Sie weitere Unterstützung benötigen, senden Sie eine Supportanfrage über das Azure-Portal. Wählen Sie dazu auf der Menüleiste die Option Support aus, oder öffnen Sie den Hub Hilfe und Support. Ausführlichere Informationen hierzu finden Sie unter Erstellen einer Azure-Supportanfrage. Zugang zu Abonnementverwaltung und Abrechnungssupport ist in Ihrem Microsoft Azure-Abonnement enthalten. Technischer Support wird über einen Azure-Supportplan bereitgestellt.