Azure HDInsight での認証の問題
この記事では、Azure HDInsight クラスターと対話するときの問題のトラブルシューティング手順と可能な解決策について説明します。
Azure Data Lake Gen2 を利用するセキュア クラスターでは、ドメイン ユーザーが HDI ゲートウェイを通してクラスター サービスにサインインすると (Apache Ambari ポータルへのサインインなど)、HDI ゲートウェイは最初に Microsoft Entra から OAuth トークンの取得を、次に Microsoft Entra Domain Services から Kerberos チケットの取得を試みます。 これらのいずれかの段階で認証に失敗する可能性があります。 この記事の目的は、これらの問題の一部をデバッグすることです。
認証が失敗すると、資格情報の入力を求められます。 このダイアログをキャンセルすると、エラー メッセージが出力されます。 一般的なエラー メッセージの一部を次に示します。
invalid_grant または unauthorized_client、50126
問題
フェデレーション ユーザーのサインインがエラー コード 50126 で失敗します (クラウド ユーザーのサインインは成功します)。 エラー メッセージは次のようになります。
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"}
原因
Microsoft Entra エラー コード 50126 は、テナントによって設定されていない AllowCloudPasswordValidation
ポリシーを意味します。
解決方法
ハイブリッド ID 管理者認証情報を使用して、ADFS でサポートされているユーザーのパスワード ハッシュを使用します。 記事「AllowCloudPasswordValidationPolicy
HDInsight で Enterprise セキュリティ パッケージを使用する」で示されているように、 を適用します。
invalid_grant または unauthorized_client、50034
問題
エラー コード 50034 でサインインが失敗します。 エラー メッセージは次のようになります。
{"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"}
原因
ユーザー名が正しくありません (存在しません)。 ユーザーは、Azure portal で使用されているものと同じユーザー名を使用していません。
解決策
そのポータルで使用できるものと同じユーザー名を使用します。
invalid_grant または unauthorized_client、50053
問題
ユーザー アカウントがロックアウトされています。エラー コードは 50053 です。 エラー メッセージは次のようになります。
{"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"}
原因
正しくないパスワードを使用して何度もサインインが試行されました。
解決策
30 分ほど待つか、認証しようとしているアプリケーションがあれば終了します。
invalid_grant または unauthorized_client、50053 (#2)
問題
パスワードの有効期限が切れました。エラー コードは 50053 です。 エラー メッセージは次のようになります。
{"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"}
原因
パスワードの有効期限が切れています。
解決策
(オンプレミス システムの) Azure portal でパスワードを変更し、同期が完了するまで 30 分間待ちます。
interaction_required
問題
エラー メッセージ interaction_required
を受信します。
原因
条件付きアクセス ポリシーまたは MFA がユーザーに適用されています。 対話型認証はまだサポートされていないため、ユーザーまたはクラスターを MFA/条件付きアクセスから除外する必要があります。 クラスターを除外することを選択した場合は (IP アドレス ベースの除外ポリシー)、その vnet に対して AD ServiceEndpoints
が有効になっていることを確認します。
解決策
「Microsoft Entra Domain Services を使用して Enterprise セキュリティ パッケージで HDInsight クラスターを構成する」に示すように、条件付きアクセス ポリシーを使用し、HDInsight クラスターを MFA から除外します。
サインインが拒否される
問題
サインインが拒否されました。
原因
この段階に到達するには、OAuth 認証ではなく Kerberos 認証に問題があります。 このクラスターが ADLS を利用している場合、Kerberos 認証が試行される前に OAuth サインインは成功しています。 WASB クラスターでは、OAuth サインインは試行されません。 Kerberos エラーには、パスワード ハッシュが同期されていない、Microsoft Entra Domain Services でユーザー アカウントがロックアウトされているなど、さまざまな理由が考えられます。 パスワード ハッシュは、ユーザーがパスワードを変更した場合にのみ同期されます。 Microsoft Entra Domain Services インスタンスを作成すると、作成後に変更されたパスワードの同期が開始されます。 開始前に設定されたパスワードがさかのぼって同期されることはありません。
解決策
パスワードが同期されていないと思われる場合は、パスワードを変更して、同期されるまで数分間待ちます。
SSH 接続を試します。ドメインに参加しているマシンから、同じユーザーの資格情報を使用して認証 (kinit) を試行する必要があります。 ローカル ユーザーを使用してヘッド/エッジ ノードに SSH で接続し、kinit を実行します。
Kinit が失敗する
問題
kinit が失敗します。
原因
状況に応じて異なります。
解決策
kinit が成功するには、自分の sAMAccountName
を把握しておく必要があります (これは、領域のない短いアカウント名です)。 通常、sAMAccountName
はアカウントのプレフィックスです (bob@contoso.com
の BLOB など)。 ユーザーによって異なる場合があります。 sAMAccountName
を確認するには、ディレクトリを参照または検索できる必要があります。
sAMAccountName
を確認する方法:
ローカルの Ambari 管理者を使用して Ambari にサインインできる場合は、ユーザーの一覧を確認します。
ドメインに参加している Windows コンピューターがある場合は、標準の Windows AD ツールを使用して参照できます。 これには、ドメイン内に有効なアカウントが必要です。
ヘッド ノードから、SAMBA コマンドを使用して検索することができます。 これには、有効な Kerberos セッション (kinit の成功) が必要です。 net ads search "(userPrincipalName=bob*)"
検索または参照の結果には、
sAMAccountName
属性が表示されます。 また、pwdLastSet
、badPasswordTime
、userPrincipalName
などの他の属性を調べて、それらのプロパティが期待どおりに一致するかどうかを確認することもできます。
Kinit が Preauthentication エラーで失敗する
問題
kinit が Preauthentication
エラーで失敗します。
原因
ユーザー名またはパスワードが正しくありません。
解決策
ユーザー名とパスワードを確認します。 また、前述した他のプロパティも確認します。 詳細なデバッグを有効にするには、kinit を試す前に、セッションから export KRB5_TRACE=/tmp/krb.log
を実行します。
TokenNotFoundException が原因でジョブまたは HDFS コマンドが失敗する
問題
TokenNotFoundException
が原因でジョブまたは HDFS コマンドが失敗します。
原因
ジョブまたはコマンドの成功に必要な OAuth アクセス トークンが見つかりませんでした。 ADLS または ABFS ドライバーでは、ストレージ要求を行う前に、資格情報サービスから OAuth アクセス トークンの取得が試行されます。 このトークンは、同じユーザーを使用して Ambari ポータルにサインインするときに登録されます。
解決策
ジョブの実行に ID が使用されているユーザー名で、Ambari ポータルへのログインが 1 回成功することを確認します。
アクセス トークンのフェッチ エラー
問題
ユーザーがエラー メッセージ Error fetching access token
を受け取ります。
原因
このエラーは、ユーザーが ACL を使用して ADLS Gen2 にアクセスしようとして Kerberos トークンの有効期限が切れている場合に断続的に発生します。
解決方法
Azure Data Lake Storage Gen1 の場合は、ブラウザー キャッシュを消去し、もう一度 Ambari にログインします。
Azure Data Lake Storage Gen2 の場合、ユーザーがログインしようとしている
/usr/lib/hdinsight-common/scripts/RegisterKerbTicketAndOAuth.sh <upn>
実行します
次のステップ
問題がわからなかった場合、または問題を解決できない場合は、次のいずれかのチャネルでサポートを受けてください。
Azure コミュニティのサポートを通じて Azure エキスパートから回答を得る。
カスタマー エクスペリエンスを向上させるための Microsoft Azure の公式アカウントの @AzureSupport に連絡する。 Azure コミュニティで適切なリソース (回答、サポート、エキスパートなど) につながる。
さらにヘルプが必要な場合は、Azure portal からサポート リクエストを送信できます。 メニュー バーから [サポート] を選択するか、 [ヘルプとサポート] ハブを開いてください。 詳細については、「Azure サポート要求を作成する方法」を参照してください。 サブスクリプション管理と課金サポートへのアクセスは、Microsoft Azure サブスクリプションに含まれていますが、テクニカル サポートはいずれかの Azure のサポート プランを通して提供されます。