すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:Kyuubi ゲートウェイでの Kerberos の使用

最終更新日:Sep 21, 2026

Serverless Spark の Kyuubi ゲートウェイで Kerberos を有効にすることで、安全な認証とアクセス制御を適用できます。設定が完了すると、クライアントはゲートウェイにジョブを送信する際に Kerberos による認証が必要となり、ジョブ実行のセキュリティが向上します。

制限事項

  • KDC と Serverless Spark ワークスペースは、同じリージョンに存在する必要があります。

前提条件

  • Kerberos 認証が有効になっている EMR on ECS クラスターが作成済みであること。詳細については、「クラスターの作成」をご参照ください。

  • Kerberos 認証が有効になっている Serverless Spark ワークスペースが作成済みであること。詳細については、「Kerberos 認証の有効化」をご参照ください。

  • Serverless Spark ワークスペースに Kyuubi ゲートウェイが作成済みであること。ゲートウェイは実行中である必要はありません。

ネットワーク接続の確立

Kyuubi ゲートウェイで Kerberos を使用するには、PrivateLink を設定して、Serverless Spark と Kerberos クラスター間のネットワーク接続を確立する必要があります。この設定はセルフサービスでは行えません。設定を完了するには、必要な情報を記載したチケットを送信し、epsrv-bp10******2j5ms のようなエンドポイントサービス ID を取得する必要があります。

説明

エンドポイントサービス ID を取得するには、チケットシステムで次の情報を送信してください。

  • Serverless Spark ワークスペース ID (例:w-f8cfXXXXXX)。

  • Kyuubi ゲートウェイ ID (例:kb-564e********266f)。

  • Kyuubi サービスへのアクセスに使用できるゾーン (2 つ以上)。例:cn-hangzhou-j,cn-hangzhou-k。各リージョンでサポートされているゾーンの詳細については、チケットでカスタマーサービス担当者にお問い合わせください。

エンドポイントの作成

エンドポイントは、サービスコンシューマーによって作成および維持され、エンドポイントサービスに関連付けることで、PrivateLink を介して外部サービスにアクセスするためのプライベートネットワーク接続を確立できます。詳細については、「エンドポイント」をご参照ください。

  1. [Endpoint コンソール]にログオンします。

  2. エンドポイントの作成 ページで、次のパラメーターを使用してエンドポイントを設定し、作成 をクリックします。

    Parameter

    Description

    [リージョン]

    エンドポイントのリージョンを選択します。リージョンが Kerberos クラスターおよび Serverless Spark ワークスペースのリージョンと同じであることを確認してください。

    [エンドポイント名]

    エンドポイントのカスタム名を入力します。

    [エンドポイントタイプ]

    [インターフェイスエンドポイント] を選択します。

    [エンドポイントサービス]

    利用可能なサービスの選択 をクリックし、ターゲットエンドポイントサービスの ID として、前のステップで取得した値 epsrv-bp10******2j5ms を選択または入力します。

    [VPC]

    Kyuubi ゲートウェイにアクセスするノードが存在する VPC を選択します。

    [ゾーンと vSwitch]

    先ほど指定したゾーンと vSwitch を選択します。少なくとも 2 つのゾーンを選択することを推奨します。

    [セキュリティグループ]

    エンドポイントのネットワークインターフェイスに関連付けるセキュリティグループを選択します。接続要求がセキュリティグループによってブロックされるのを防ぐため、Kyuubi ゲートウェイにアクセスするノードが存在するクラスターのセキュリティグループを選択することを推奨します。

    [IP バージョン]

    サポートされているネットワークタイプです。デフォルトでは IPv4 が使用されます。

    [Resource Group]

    任意。エンドポイントが属するリソースグループを選択します。

    [タグ]

    任意: Tag Key と Tag Value を設定します。

  3. エンドポイントの 基本情報 ページで、Status が「利用可能」の場合、エンドポイントは作成済みです。エンドポイントサービスドメイン名は ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com です。

  4. Kerberos クラスターにログインし、ネットワーク接続をテストします。

    ping コマンドを使用して、Kerberos クラスターノードからエンドポイントのプライベートネットワーク接続を確認します。正常な応答は、ネットワークが接続されていることを示します。

    [root@master-1-1(xxx) ~]# ping ep-bp1ixxx.cn-hangzhou.privatelink.aliyuncs.com
    PING ep-bp1xxx              xxx.cn-hangzhou.privatelink.aliyuncs.com (xxx) 56(84) bytes of data.
    64 bytes from xxx (xxx): icmp_seq=1 ttl=102 time=0.989 ms

DNS 名前解決の設定 (任意)

デフォルトのエンドポイントサービスのドメイン名は長いです。使用を簡素化するために、カスタムの内部権威ドメイン名を設定できます。詳細については、「内部権威ドメイン名」をご参照ください。

  1. にログインし、[権威ゾーン] ページで [ユーザー定義ゾーン] タブをクリックして、[ゾーンの追加] をクリックします。

  2. [権威ゾーン] のドメイン名を入力し、ドメイン名が有効になる VPC を選択してから、OK をクリックします。この例では、kyuubi-kerberos.abc を使用します。

    説明

    [ドメインタイプ] オプションが利用可能な場合は、[加速ゾーン] を選択します。[ドメインタイプ] オプションが利用できない場合は、選択する必要はなく、デフォルトで [加速ゾーン] ドメイン名が作成されます。

  3. [ユーザー定義ゾーン] タブで、ターゲットドメイン名を見つけ、操作 列にある [設定] をクリックします。 次に、[レコードの追加] をクリックし、ダイアログボックスで [フォームエディターモード] を選択します。

  4. [レコードタイプ] を CNAME に設定します。 [ホスト名] には、ビジネス要件に基づいて値を入力します。 この例では、test が使用されます。 [レコード値] には、エンドポイントサービスのドメイン名 ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com を入力します。 OK をクリックすると、エンドポイントサービスのドメイン名が [test.kyuubi-kerberos.abc] にマッピングされます。

  5. Kerberos クラスターにログインし、ネットワーク接続をテストします。

    ping test.kyuubi-kerberos.abc

keytab ファイルの作成

kyuubi.keytab ファイルを作成します。この keytab ファイルは、Serverless Spark の Kyuubi ゲートウェイ認証サービスでのみ使用されます。

  1. Kerberos クラスターにログインし、Kadmin ノード (EMR on ECS クラスターの master-1-1 ノードなど) にアクセスします。

  2. 次のコマンドを実行して、Kerberos の kadmin.local ツールを起動します。

    kadmin.local

    次のコマンドを実行して、既存のプリンシパルを表示します。

    listprincs
  3. kyuubi/<fqdn>@<REALM> の形式でプリンシパルを作成します。fqdn 部分には、エンドポイントのドメイン名 ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com を使用することを推奨します。CNAME レコードを設定してカスタムドメイン名を解決している場合は、カスタムドメイン名 test.kyuubi-kerberos.abc を使用します。<REALM> 部分は、現在のクラスター設定と一致している必要があります。既存の他のプリンシパルを参照できます。

    addprinc -randkey kyuubi/ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com@EMR.C-DFD4*****C204.COM
  4. keytab ファイルをエクスポートし、エクスポートが完了したら kadmin.local ツールを終了します。

    xst -kt /root/kyuubi.keytab kyuubi/ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com@EMR.C-DFD4*****C204.COM
    quit
  5. 生成された keytab ファイルを Object Storage Service (OSS) バケットにアップロードします。

    hadoop fs -put /root/kyuubi.keytab oss://<bucket_name>.oss-<region-id>-internal.aliyuncs.com/<path>/

Kyuubi ゲートウェイの設定

Kyuubi Gateway で Kerberos を使用するには、KDC クラスターにアクセスできる[ネットワーク接続]を選択し、次のKyuubi Configurationを追加します。

kyuubi.authentication              KERBEROS
kyuubi.kinit.principal             kyuubi/ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com@EMR.C-DFD43******7C204.COM
kyuubi.files                       oss://<bucket_name>/<path>/kyuubi.keytab
kyuubi.kinit.keytab                /opt/kyuubi/work-dir/kyuubi.keytab

パラメーター

説明

kyuubi.authentication

Kyuubi ゲートウェイが使用する認証モードを指定します。このパラメーターを KERBEROS に設定します。

kyuubi.kinit.principal

Kyuubi ゲートウェイが Kerberos 認証に使用するプリンシパルを指定します。形式は <user>/<host>@<realm> です。

kyuubi.files

このパラメーターは、指定されたファイルを /opt/kyuubi/work-dir/ ディレクトリにダウンロードします。前の手順でアップロードした keytab ファイルの OSS パスを入力します。パスに oss-<region-id>-internal.aliyuncs.com ドメイン名を含める必要はありません。

kyuubi.kinit.keytab

Kyuubi ゲートウェイが使用する keytab ファイルを指定します。注意:パスは /opt/kyuubi/work-dir/ ディレクトリに固定されています。必要に応じてファイル名を変更してください。

Kerberos 認証が有効な Hive メタストア (HMS) に接続し、ワークスペースデータカタログが HMS データカタログで既に構成されている場合は、以下の Spark Configuration を追加します。

spark.hive.metastore.kerberos.principal             hive/_HOST@EMR.C-DFD4*****C204.COM
spark.hive.metastore.sasl.enabled                   true

パラメーター

説明

spark.hive.metastore.kerberos.principal

Kerberos 環境における HMS のプリンシパルです。前の手順で listprincs コマンドを実行して取得した hive プリンシパルを入力します。<fqdn> 部分は _HOST (hive/_HOST@<REALM>) に簡略化できます。

spark.hive.metastore.sasl.enabled

Kerberos 認証を有効にするかどうかを指定します。このパラメーターを true に設定します。

任意。Kerberos が有効な HMS に接続する必要があり、ワークスペースのデータカタログが HMS データカタログで設定されて[いない]場合は、次の [Spark Configuration] も[追加]する必要があります。

spark.hadoop.hive.metastore.uris                    thrift://master-1-1.c-1d36*****e840c.cn-hangzhou.emr.aliyuncs.com:9083
spark.hadoop.hive.imetastoreclient.factory.class    org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClientFactory

パラメーター

説明

spark.hadoop.hive.metastore.uris

Hive Metastore (HMS) のアドレスです。

spark.hadoop.hive.imetastoreclient.factory.class

固定値です。

説明
  • 高可用性 (HA) クラスターでは、metastore.uris に複数の Thrift アドレスを設定できます。アドレスはカンマで区切り、IP アドレスではなくホスト名を使用する必要があります。

  • metastore.uris に Thrift アドレスを 1 つだけ指定する場合、IP アドレスを使用できます。ただし、metastore.kerberos.principal は hive/<hostname of HMS>@<REALM> の形式である必要があります。

  • metastore.kerberos.principal を hive/_HOST@<REALM> 形式に簡略化できるのは、metastore.uris がホスト名を使用している場合のみです。

設定を保存し、Kyuubi ゲートウェイを起動します。

ジョブの送信

Kerberos クラスターが Kyuubi ゲートウェイに接続し、Spark ジョブを開始できることを確認します。

  1. (任意) 必要な権限を持つ Kerberos ユーザーを準備し、そのユーザーの keytab ファイルをエクスポートします。

    1. Kerberos クラスターにログインします。

    2. 次のコマンドを実行して、keytab ファイルをエクスポートします。

      kadmin.local
      addprinc -randkey emr-user@EMR.C-DFD4*****C204.COM
      xst -kt /root/emr-user.keytab emr-user@EMR.C-DFD4*****C204.COM
      quit
  2. keytab ファイルを使用して Kerberos で認証します。

    kinit -kt /root/emr-user.keytab emr-user

    前の手順で keytab ファイルが作成されていない場合は、EMR on ECS にデフォルトで存在する hive.keytab ファイルのような既存のサービス keytab ファイルを使用することもできます。

    説明

    テスト目的で、クラスター上の既存の keytab ファイルを直接使用できます。ただし、既存のサービス keytab ファイルを変更または再エクスポートしないでください。そうしないと、元のサービスが利用できなくなる可能性があります。

    klist -kt /etc/taihao-apps/hive-conf/keytab/hive.keytab
    kinit -kt /etc/taihao-apps/hive-conf/keytab/hive.keytab hive/master-1-1.c-596f1842f3ed8ad0.cn-hangzhou.emr.aliyuncs.com@EMR.C-596F1842F3ED8AD0.COM
  3. 現在の Kerberos チケットを表示します。

    klist
  4. kyuubi-beeline または spark-beeline を使用して Kyuubi ゲートウェイに接続し、Spark ジョブを開始します。

    kyuubi-beeline -u 'jdbc:hive2://ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com:10009/;principal=kyuubi/_HOST@EMR.C-DFD43*****7C204.COM'
    説明
    • ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com は、「エンドポイントの作成」の手順で取得したサービスドメイン名です。

    • デフォルトのポート番号は 10009 です。

    • principal は Kyuubi サービスのプリンシパルです。<fqdn> 部分は _HOST に簡略化できます。つまり、kyuubi/_HOST@EMR.C-DFD43*****7C204.COM です。

  5. 接続が確立された後、show databases を実行します。

    2025-08-21 14:55:18.392 INFO KyuubiSessionManager-exec-pool: Thread-83 org.apache.kyuubi.operation.ExecuteState STATE -> FINISHED_STATE, time taken: 0.301 seconds
    2025-08-21 14:55:18.393 INFO nioEventLoopGroup-3-1 org.apache.kyuubi.websocket.MessageSender: [KyuubiSqlStateme success!
    2025-08-21 14:55:18.418 INFO nioEventLoopGroup-3-1 org.apache.kyuubi.websocket.MessageSender: channel listener
    2025-08-21 14:55:18.420 INFO nioEventLoopGroup-3-1 org.apache.kyuubi.websocket.WebSocketClientHandler: channel: !
    +------------+
    | namespace  |
    +------------+
    | default    |
    +------------+
    1 row selected (0.539 seconds)

よくある質問

  1. Kerberos が有効な HDFS サービスに接続するにはどうすればよいですか?

HDFS サービスが存在するクラスターの HADOOP-COMMON または HDFS コンポーネントの core-site.xml 設定ファイルを変更する必要があります。kyuubi ユーザーが HDFS/HMS サービスにアクセスする際に他のユーザーを偽装できるように、次のプロパティをファイルに追加します。そうしないと、接続が失敗する可能性があります。プロパティを追加した後、HDFS/HMS サービスを再起動します。新しいバージョンの EMR DataLake クラスターには、デフォルトでこれらのプロパティが既に含まれています。

hadoop.proxyuser.kyuubi.hosts = *
hadoop.proxyuser.kyuubi.groups = *

次の [Spark Configuration] も追加する必要があります。

spark.kerberos.access.hadoopFileSystems hdfs://hdfs-cluster
  1. Kerberos 認証なしで Kyuubi にジョブを送信し、Spark ジョブが HMS にアクセスするときにのみ Kerberos 認証を実行するにはどうすればよいですか?

次のように Kyuubi 設定を変更します。この場合、Kyuubi に接続する際にプリンシパルを指定する必要はありません。

kyuubi.authentication              KERBEROS,NONE
  1. Kerberos を有効にした後、Ranger サービスに接続するにはどうすればよいですか?

次の [Spark Configuration] を追加します。

spark.ranger.plugin.enabled                      true
spark.emr.serverless.user.defined.jars           /opt/ranger/ranger-spark.jar
ranger.plugin.spark.policy.rest.url              http://master-1-1.c-xxxx.cn-hangzhou.emr.aliyuncs.com:6080
spark.files                                      oss://<bucket_name>/<path>/kyuubi.keytab
ranger.plugin.spark.policy.download.loginKeytab  true
ranger.plugin.spark.policy.download.keytab       /opt/spark/work-dir/kyuubi.keytab
ranger.plugin.spark.policy.download.principal    kyuubi/ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com@EMR.C-DFD43******7C204.COM

パラメーター

説明

spark.files

このパラメーターは、指定されたファイルを /opt/spark/work-dir/ ディレクトリにダウンロードします。前の手順でアップロードした keytab ファイルの OSS パスを入力します。パスに oss-<region-id>-internal.aliyuncs.com ドメイン名を含める必要はありません。

ranger.plugin.spark.policy.download.loginKeytab

固定値です。

ranger.plugin.spark.policy.download.keytab

任意の有効な keytab ファイルです。

ranger.plugin.spark.policy.download.principal

keytab ファイルに保存されているプリンシパルです。このプリンシパルは、認証の失敗を防ぐために Ranger ポリシーをダウンロードするために使用されます。