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

E-MapReduce:Kyuubi Gateway で Kerberos を使用する

最終更新日:Nov 09, 2025

Serverless Spark の Kyuubi Gateway で Kerberos を使用して、安全な身分認証とアクセスの制御を行うことができます。構成が完了すると、クライアントは Kerberos 認証を使用してワークスペース内の Kyuubi Gateway にタスクを送信する必要があります。このプロセスにより、タスク実行のセキュリティが強化されます。

制限事項

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

  • Kerberos が有効になっているワークスペースでは、Kyuubi Gateway は 1 つしか作成できません。

前提条件

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

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

ネットワーク接続の確立

Kyuubi Gateway で Kerberos を使用するには、PrivateLink を構成して、Serverless Spark と Kerberos クラスター間のネットワーク接続を確立する必要があります。

エンドポイントの作成

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

  1. [エンドポイントコンソール] にログインします。

  2. [エンドポイントの作成] ページで、エンドポイントの次のパラメーターを構成し、[作成] をクリックします。image

    構成

    説明

    リージョン

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

    エンドポイント名

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

    エンドポイントタイプ

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

    エンドポイントサービス

    [利用可能なサービスを選択] をクリックし、ターゲットのエンドポイントサービス ID を選択または入力します。

    説明

    次の情報を チケット で送信して、エンドポイントサービス ID を取得します。

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

    • Kyuubi Gateway にアクセスする Kerberos クラスターの VPC ID。VPC には、2 つのゾーンで利用可能な vSwitch が必要です (例: vpc-bp1tXXXXXX)。

    • 選択した 2 つのゾーン (例: I,J)。リージョンでサポートされているゾーンを確認するには、チケットでカスタマーサービスにお問い合わせください。

    VPC

    Kyuubi Gateway にアクセスする Kerberos クラスターの VPC を選択します。

    セキュリティグループ

    エンドポイント ENI に関連付けるセキュリティグループを選択します。

    説明

    デフォルトでは、エンドポイントに最大 9 つのセキュリティグループを追加できます。

    ゾーンと VSwitch

    前述のゾーンとそれに対応する vSwitch を選択します。

    IP バージョン

    サポートされているネットワークタイプ。

    • IPv4: IPv4 アドレスを使用したクライアントアクセスをサポートします。

    • デュアルスタック: IPv4 と IPv6 の両方のアドレスを使用したクライアントアクセスをサポートします。

    説明

    サービス利用者は、サービスプロバイダーがデュアルスタック構成を完了した後にのみ、このオプションを選択できます。

    リソースグループ

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

    タグ

    [タグキー][タグ値] を選択または入力します。

  3. [基本情報] ページで、[ステータス]アクティブな になっている場合は、エンドポイントサービスが正常に作成されたことを示します。エンドポイントサービスのドメイン名は ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com です。

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

ドメイン名解決の設定 (オプション)

デフォルトのエンドポイントサービスのドメイン名は長いです。便宜上、カスタムの内部権限のあるドメイン名を設定できます。詳細については、「内部権限のあるドメイン名」をご参照ください。

  1. コンソールにログインします。[内部権限] タブで、[カスタムドメイン名] タブをクリックし、[ゾーンの追加] をクリックします。

  2. [内部権限のあるドメイン名] を入力し、ドメイン名が適用される VPC を選択して、[OK] をクリックします。このトピックでは、例として kyuubi-kerberos.abc を使用します。

    説明

    [ドメイン名タイプ] オプションが利用可能な場合は、[内部権限アクセラレーションゾーン] を選択します。[ドメイン名タイプ] オプションが利用できない場合は、デフォルトで [内部権限アクセラレーションゾーン] ドメイン名が作成されるため、タイプを選択する必要はありません。

  3. [カスタムドメイン名] タブで、ターゲットのドメイン名を見つけ、[アクション] 列の [DNS 設定] をクリックします。表示されるダイアログボックスで、[レコードの追加] をクリックし、[フォームモード] を選択します。

  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 の作成

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

  2. 次のコマンドを実行して、Kerberos admin.local ツールにアクセスします。

    kadmin.local
  3. フォーマット kyuubi/<fqdn>@<REALM> でプリンシパルを作成します。fqdn の部分には、エンドポイントのドメイン名 ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com を使用します。CNAME レコードでカスタムドメイン名を設定した場合は、代わりに test.kyuubi-kerberos.abc などのカスタムドメイン名を使用します。

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

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

    hadoop fs -put /root/kyuubi.keytab oss://<YOUR_BUCKET>.<region>.oss-dls.aliyuncs.com/

Kyuubi Gateway の構成

Kyuubi Gateway で Kerberos を使用するには、次の [Kyuubi 構成] を設定します。

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

構成項目

説明

kyuubi.authentication

Kyuubi Gateway で使用される認証方式を指定します。KERBEROS に設定します。

kyuubi.kinit.principal

Kyuubi Gateway が Kerberos 認証に使用するプリンシパルを指定します。フォーマットは <user>/<host>@<realm> です。

kyuubi.kinit.keytab

Kyuubi Gateway で使用される keytab ファイルを指定します。注: パスは固定です。keytab ファイル名を置き換えるだけで済みます。

kyuubi.files

「keytab の作成」ステップでアップロードした keytab ファイルの OSS パス。

Kerberos が有効な Hive Metastore (HMS) に接続するには、次の [Spark 構成] が必要です。

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.hive.metastore.kerberos.principal             hive/_HOST@EMR.C-DFD4*****C204.COM
spark.hive.metastore.sasl.enabled                   true
spark.emr.serverless.network.service.name           <network_name>

構成項目

説明

spark.hadoop.hive.metastore.uris

HMS アドレス。

spark.hadoop.hive.imetastoreclient.factory.class

HMS クライアントを作成するためのファクトリクラスを指定します。

spark.hive.metastore.kerberos.principal

Kerberos 環境における HMS のプリンシパル。

spark.hive.metastore.sasl.enabled

Kerberos 認証を有効にするかどうかを指定します。

spark.emr.serverless.network.service.name

ネットワーク接続の名前。

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

  • `metastore.uris` に Thrift アドレスを 1 つだけ指定する場合、IP アドレスを使用できます。ただし、`metastore.kerberos.principal` は `hive/<HMS のホスト名>@<REALM>` のフォーマットである必要があります。

  • `metastore.uris` がホスト名を使用している場合にのみ、`metastore.kerberos.principal` を `hive/_HOST@<REALM>` のフォーマットに簡略化できます。

構成を保存し、Kyuubi Gateway を起動します。

ジョブの送信

show databases ジョブを使用して、Kerberos クラスターが Kyuubi Gateway に接続し、Spark ジョブを正常に開始できることを確認できます。

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

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

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

      kadmin.local
      addprinc -randkey hadoop
      xst -kt /root/hadoop.keytab hadoop
      quit
  2. Kerberos 認証に keytab ファイルを使用します。

    kinit -kt hadoop.keytab hadoop
  3. 次のコマンドを実行して Kyuubi Gateway に接続し、Spark ジョブを開始します。

    /opt/apps/KYUUBI/kyuubi-1.9.2-1.0.0/bin/kyuubi-beeline -u 'jdbc:hive2://ep-xxxxxxxxxxx.epsrv-xxxxxxxxxxx.cn-hangzhou.privatelink.aliyuncs.com:10009/;principal=kyuubi/_HOST@EMR.C-DFD43*****7C204.COM'
  4. 接続後、show databases を実行します。image

Spark ジョブが Kerberos 認証が有効になっている HMS または Hadoop 分散ファイルシステム (HDFS) サービスに接続する必要がある場合は、クラスター上の HADOOP-COMMON または HDFS コンポーネントの core-site.xml ファイルを変更する必要があります。ファイルに次の 2 つの構成を追加します。これにより、kyuubi ユーザーは HDFS または HMS サービスにアクセスする際に他のユーザーを偽装できます。これらの構成を追加しないと、接続が失敗する可能性があります。

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

新しいバージョンの EMR DataLake クラスターには、これらのパラメーターがデフォルトで含まれています。パラメーターを追加した後、HDFS または HMS サービスを再起動する必要があります。