Azure HDInsight ID ブローカー (HIB)

この記事では、Azure HDInsight ID ブローカー機能を設定して使用する方法について説明します。 この機能を使用すると、Microsoft Entra Domain Services 内の従来のパスワード ハッシュを必要とせずに多要素認証を実施しながら、Apache Ambari で最新の OAuth 認証を使用することができます。

概要

HDInsight ID ブローカーにより、次のシナリオで複雑な認証設定が簡略化されます。

  • 組織では、クラウド リソースにアクセスするユーザーを認証するためにフェデレーションに依存しています。 以前は、HDInsight Enterprise セキュリティ パッケージ クラスターを使用するには、オンプレミス環境から Microsoft Entra ID へのパスワード ハッシュ同期を有効にする必要がありました。 この要件は、組織によっては難しい場合や望ましくない場合があります。
  • あなたの組織では、Apache Ambari や他のクラスター リソースへの Web ベースまたは HTTP ベースのアクセスに対して多要素認証を実施したいと考えているとします。

HDInsight ID ブローカーにより、パスワード ハッシュの Microsoft Entra Domain Services への同期を必要とせずに、OAuth (最新) から Kerberos (レガシ) へのプロトコル移行を可能にする認証インフラストラクチャが実現します。 このインフラストラクチャは、HDInsight ID ブローカー ノードが有効になっている Windows Server 仮想マシン (VM) 上で動作するコンポーネントと、クラスター ゲートウェイ ノードで構成されています。

次の表を使用して、組織のニーズに基づいた最適な認証オプションを決定します。

認証オプション HDInsight 構成 検討するべき要素
OAuth のみ Enterprise セキュリティ パッケージ + HDInsight ID ブローカー 最も安全なオプションです。 (多要素認証がサポートされています)。パス ハッシュ同期は必要ありません。 Microsoft Entra Domain Services 内にパスワード ハッシュがないオンプレミス アカウントに対する ssh/kinit/keytab アクセスはありません。 クラウド専用アカウントでは、引き続き ssh/kinit/keytab 接続することができます。 OAuth による Ambari への Web ベースのアクセス。 OAuth をサポートするために、レガシ アプリ (JDBC/ODBC など) を更新する必要があります。
OAuth と基本認証 Enterprise セキュリティ パッケージ + HDInsight ID ブローカー OAuth による Ambari への Web ベースのアクセス。 レガシ アプリでは、基本認証が引き続き使用されます。基本認証アクセスでは、多要素認証を無効にする必要があります。 パス ハッシュ同期は必要ありません。 Microsoft Entra Domain Services 内にパスワード ハッシュがないオンプレミス アカウントに対する ssh/kinit/keytab アクセスはありません。 クラウド専用アカウントでは、引き続き ssh/kinit 接続することができます。
基本認証のみ Enterprise セキュリティ パッケージ オンプレミスのセットアップに最も似ています。 Microsoft Entra Domain Services へのパスワード ハッシュ同期が必要です。 オンプレミスのアカウントでは、ssh/kinit 接続することも、keytab を使用することもできます。 バッキング ストレージが Azure Data Lake Storage Gen2 である場合は、多要素認証を無効にする必要があります。

次の図は、HDInsight ID ブローカーが有効になった後の、フェデレーション ユーザーを含むすべてのユーザーの、最新の OAuth ベースの認証フローを示しています。

Diagram that shows authentication flow with HDInsight ID Broker.

この図では、まず最初にクライアント (つまり、ブラウザーまたはアプリ) で OAuth トークンを取得する必要があります。 次に、HTTP 要求でゲートウェイにトークンが提示されます。 Azure portal などの他の Azure サービスに既にサインインしている場合は、シングル サインオン エクスペリエンスによって HDInsight クラスターにサインインできます。

基本認証 (つまり、ユーザー名とパスワード) のみがサポートされるレガシ アプリケーションはまだ多数存在する可能性があります。 これらのシナリオでは、引き続き HTTP 基本認証を使用してクラスター ゲートウェイに接続できます。 この設定では、ゲートウェイ ノードから Active Directory Federation Services (AD FS) エンドポイントへのネットワーク接続を確保して、ゲートウェイ ノードからの直接の通信経路を確保する必要があります。

次の図は、フェデレーション ユーザーの基本認証フローを示しています。 まず、ゲートウェイで ROPC フローを使用した認証が試みられます。 Microsoft Entra ID に同期されたパスワード ハッシュがない場合は、フォールバックして AD FS エンドポイントを検出し、AD FS エンドポイントへアクセスすることで認証が完了します。

Diagram that shows architecture with basic authentication.

HDInsight ID ブローカーを有効にする

HDInsight ID ブローカーが有効になっている Enterprise セキュリティ パッケージ クラスターを作成するには、次のようにします。

  1. Azure portal にサインインします。
  2. Enterprise セキュリティ パッケージ クラスターの基本的な作成手順に従います。 詳細については、Enterprise セキュリティ パッケージが有効な HDInsight クラスターを作成する方法に関するページを参照してください。
  3. [HDInsight ID ブローカーを有効にする] を選択します。

HDInsight ID ブローカー機能によって、クラスターに追加の VM が 1 つ追加されます。 この VM は HDInsight ID ブローカー ノードであり、認証をサポートするサーバー コンポーネントが含まれています。 HDInsight ID ブローカー ノードは、Microsoft Entra Domain Services ドメインに参加しているドメインです。

Diagram that shows option to enable HDInsight ID Broker.

Azure リソース マネージャー テンプレートの使用

テンプレートのコンピューティング プロファイルに次の属性を含む idbrokernode という名前の新しいロールを追加すると、HDInsight ID ブローカー ノードが有効になっているクラスターが作成されます。

.
.
.
"computeProfile": {
    "roles": [
        {
            "autoscale": null,
            "name": "headnode",
           ....
        },
        {
            "autoscale": null,
            "name": "workernode",
            ....
        },
        {
            "autoscale": null,
            "name": "idbrokernode",
            "targetInstanceCount": 2,
            "hardwareProfile": {
                "vmSize": "Standard_A2_V2"
            },
            "virtualNetworkProfile": {
                "id": "string",
                "subnet": "string"
            },
            "scriptActions": [],
            "dataDisksGroups": null
        }
    ]
}
.
.
.

ARM テンプレートの完全なサンプルについては、こちらで公開されているテンプレートを参照してください。

ツールの統合

HDInsight ツールは、OAuth をネイティブにサポートするように更新されています。 これらのツールは、クラスターへの最新の OAuth ベースのアクセスに使用します。 HDInsight IntelliJ プラグインは、Scala などの Java ベースのアプリケーションに使用できます。 Visual Studio Code 用の Spark および Hive Tools は、PySpark および Hive ジョブに使用できます。 これらのツールでは、バッチと対話型ジョブの両方がサポートされています。

Microsoft Entra Domain Services 内のパスワード ハッシュなしの SSH アクセス

SSH オプション 検討するべき要素
ローカル VM アカウント (例: sshuser) このアカウントは、クラスターの作成時に指定済みです。 このアカウントには Kerberos 認証はありません。
クラウド専用アカウント (alice@contoso.onmicrosoft.com など) パスワード ハッシュは、Microsoft Entra Domain Services 内で使用することができます。 Kerberos 認証は、SSH Kerberos 経由で行うことができます。
オンプレミスのアカウント (alice@contoso.com など) SSH Kerberos 認証は、Microsoft Entra Domain Services 内でパスワード ハッシュを使用できる場合にのみ可能です。 それ以外の場合、このユーザーはクラスターに SSH 接続できません。

ドメイン参加済みの VM に SSH 接続する場合、または kinit コマンドを実行する場合は、パスワードを入力する必要があります。 SSH Kerberos 認証では、Microsoft Entra Domain Services 内でハッシュを使用できる必要があります。 管理シナリオにのみ SSH を使用する場合は、クラウド専用アカウントを 1 つ作成し、それを使用してクラスターに SSH 接続することができます。 その他のオンプレミスのユーザーは、Microsoft Entra Domain Services 内でパスワード ハッシュを使用できるようにすることなく、Ambari または HDInsight ツールまたは HTTP 基本認証を引き続き使用することができます。

組織が Microsoft Entra Domain Services にパスワード ハッシュを同期していない場合は、ベスト プラクティスとして、Microsoft Entra ID 内にクラウド専用ユーザーを 1 人作成します。 次に、クラスターを作成するときにこれをクラスター管理者として割り当て、管理目的で使用します。 これを使用して、SSH 経由で VM へのルート アクセスを取得できます。

認証問題を解決するには、こちらのガイドを参照してください。

HDInsight ID ブローカーで OAuth を使用して HDInsight ゲートウェイに接続するクライアント

HDInsight ID ブローカーの設定では、ゲートウェイに接続するカスタム アプリやクライアントを、必要な OAuth トークンを最初に取得するように更新できます。 詳細については、Azure サービスを使用して .NET アプリケーションを認証する方法に関するページを参照してください。 HDInsight ゲートウェイへのアクセスを承認するために必要なキー値は次のとおりです。

  • OAuth リソース URI: https://hib.azurehdinsight.net
  • アプリID: 7865c1d2-f040-46cc-875f-831a1ef6a28a
  • アクセス許可: (名前: Cluster.ReadWrite、ID:8f89faa0-ffef-4007-974d-4989b39ad77d)

OAuth トークンを取得した後、クラスター ゲートウェイへの HTTP 要求の Authorization ヘッダーでそれを使用します (例: https://<clustername>-int.azurehdinsight.net)。 Apache Livy API へのサンプル curl コマンドは次のようになります。

curl -k -v -H "Authorization: Bearer Access_TOKEN" -H "Content-Type: application/json" -X POST -d '{ "file":"wasbs://mycontainer@mystorageaccount.blob.core.windows.net/data/SparkSimpleTest.jar", "className":"com.microsoft.spark.test.SimpleFile" }' "https://<clustername>-int.azurehdinsight.net/livy/batches" -H "X-Requested-By:<username@domain.com>"

Beeline と Livy を使用する場合は、こちらで提供されているサンプル コードに従い、OAuth を使用してクラスターに接続するようにクライアントを設定することもできます。

よく寄せられる質問

HDInsight によって Microsoft Entra ID 内に作成されるアプリは何ですか?

クラスターごとに、サード パーティのアプリケーションが、identifierUri (https://clustername.azurehdinsight.net など) として、クラスター URI と共に Microsoft Entra ID 内に登録されます。

Microsoft Entra ID 内では、ユーザーを認証するまたはデータにアクセスする前に、すべてのサード パーティのアプリケーションに同意を求めます。

Microsoft Graph API を使用すると、同意を自動化できます。API のドキュメントを参照してください。同意を自動化する順序は、以下のとおりです。

  • アプリを登録し、Microsoft Graph にアクセスするための Application.ReadWrite.All アクセス許可をそのアプリに付与します
  • クラスターが作成されたら、識別子 URI に基づいてクラスター アプリを照会します
  • アプリの同意を登録します

クラスターが削除されると、HDInsight によりアプリが削除されます。同意をクリーンアップする必要はありません。

次のステップ