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

E-MapReduce:Kerberos 認証の有効化

最終更新日:Apr 21, 2026

Serverless Spark ワークスペースで Kerberos 認証を有効にすると、すべてのクライアントは Spark タスクを送信する前に認証が必要になります。これにより、不正アクセスが減少し、タスク実行のセキュリティが向上します。

制限事項

  • 1 つのワークスペースは、1 つの Kerberos クラスターにのみバインドできます。

  • Kerberos 認証は、Spark バッチジョブでのみサポートされています。

重要

Kerberos 認証には、EMR Serverless Spark とご利用の Virtual Private Cloud (VPC) との間のネットワーク接続が必要であり、Kerberos トラフィックのために UDP ポート 88 を開く必要があります。認証を設定する前に、ステップ 1 でネットワーク設定を完了してください。

前提条件

開始する前に、以下を確認してください。

  • Kerberos プリンシパルが作成され、その keytab ファイルがエクスポートされて Object Storage Service (OSS) にアップロードされていること。

  • Serverless Spark ワークスペースが作成されていること。詳細については、「ワークスペースの管理」をご参照ください。

ステップ 1:ネットワークの準備

EMR Serverless Spark とご利用の VPC との間にネットワーク接続を確立します。詳細については、「EMR Serverless Spark と他の VPC との間のネットワーク接続の確立」をご参照ください。

説明

セキュリティグループルールを追加する際は、Kerberos トラフィックのために UDP ポート 88 を開いてください。代わりに TCP 経由でネットワーク接続を設定する場合は、ステップ 2 で krb5.conf ファイルの [libdefaults] の下に udp_preference_limit = 1 を追加してください。

ステップ 2:Kerberos 認証の設定

このステップでは、Serverless Spark ワークスペースを Kerberos クラスターにバインドし、認証の強制を有効にします。

  1. EMR コンソールの左のナビゲーションウィンドウで、[EMR Serverless] > [Spark] を選択します。

  2. [Spark] ページで、対象のワークスペースの名前をクリックします。

  3. 左側のナビゲーションウィンドウで、[セキュリティ] > [Kerberos 認証] をクリックします。

  4. [Kerberos のバインド] をクリックします。

  5. [Kerberos のバインド] ページで、次のパラメーターを設定し、[OK] をクリックします。

    パラメーター説明
    Kerberos 名カスタム名を入力します。
    ネットワーク接続ステップ 1 で作成したネットワーク接続を選択します。
    ケルベロス krb5.confkrb5.conf ファイルの内容を入力します。以下の手順をご参照ください。

    krb5.conf コンテンツの取得方法

    krb5.conf ファイルは通常、Kerberos サーバーの /etc/krb5.conf にあります。

    • EMR DataLake クラスター: マスターノードにログオンし (クラスターにログオンするをご参照ください)、cat /etc/krb5.conf を実行して、その出力を [Kerberos Krb5.conf] フィールドにコピーします。

    • その他の EMR クラスターまたは自己管理型 Kerberos:ファイル内の hostname の値を、ご利用の VPC のプライベート IP アドレスに置き換えます。

    ステップ 1 で UDP ポート 88 を開いた場合、krb5.conf を変更する必要はありません。TCP を使用した場合は、[libdefaults] の下に udp_preference_limit = 1 を追加します。

    image

  6. 操作列で[有効化]をクリックし、確認ダイアログで [OK] をクリックします。

ステップ 3:Kerberos 認証を使用した Spark バッチジョブの送信

Kerberos 認証を有効にした後、すべての Spark バッチジョブに Kerberos 認証情報を含める必要があります。認証情報なしでジョブを送信すると、spark.kerberos.keytab and spark.kerberos.principal not configured というエラーが返されます。

  1. Spark バッチジョブを作成します。詳細については、「PySpark クイックスタート」をご参照ください。

  2. 「開発」タブで、[ネットワーク接続] をステップ 1 で追加した接続に設定し、次に [Spark 設定] に次の Kerberos パラメーターを追加して、[実行] をクリックします。

    spark.files oss://<bucketname>/path/test.keytab
    spark.kerberos.keytab test.keytab
    spark.kerberos.principal <username>@<REALM>
    パラメーター説明
    spark.filesOSS にアップロードされた keytab ファイルの完全なパス。
    spark.kerberos.keytabkeytab ファイルの名前。
    spark.kerberos.principalkeytab ファイル内のプリンシパル。Kerberos での身元認証に使用されます。klist -kt <keytab_file> を実行してプリンシパルを表示します。

    (任意) ジョブから Kerberos が有効な Hive メタストアに接続する Kerberos で保護された Hive メタストアからメタデータをクエリするには、以下のパラメーターを [Spark 設定] に追加します:

    spark.hive.metastore.sasl.enabled true
    spark.hive.metastore.kerberos.principal hive/<hostname>@<REALM>

    spark.hive.metastore.kerberos.principal を、Hive Metastore が使用する keytab ファイルのプリンシパルに設定します。これを見つけるには:

    • EMR on ECS コンソールで、Hive サービスの [設定] ページに移動して [hive-site.xml] タブを開き、hive.metastore.kerberos.keytab.file の値を見つけます。

    • klist -kt <path_to_Hive_Metastore_keytab_file> を実行してプリンシパルを取得します。

    プリンシパルのフォーマットは hive/<hostname>@<REALM> です。ここで、<hostname> は Hive Metastore を実行しているノードの完全修飾ドメイン名 (FQDN) であり (hostname -f を実行して取得)、<REALM> は KDC レルムです。

    Hive Metastore のエンドポイントがホスト名を使用している場合は、hive/_HOST@<REALM> を使用します。Spark は自動的に _HOST を Hive Metastore のエンドポイントのホスト名に置き換えます。このフォーマットは、複数の Hive Metastore を設定する場合に必要です。

  3. ジョブの実行後、[実行記録] セクションに移動し、[操作] 列の [詳細] をクリックします。

  4. [ジョブ履歴] では、[ログ探索] ページでログを表示できます。

    image

ステップ 4 (オプション):ワークスペースのデータカタログを Kerberos が有効な Hive Metastore に接続

ワークスペースのデータカタログが Kerberos で保護された Hive Metastore からメタデータをフェッチする必要がある場合は、外部 Hive Metastore を追加する際に keytab ファイルのパスとプリンシパルを指定します。

image
フィールド説明
Kerberos キータブファイルKerberos keytab ファイルのパス。
Kerberos プリンシパルkeytab ファイルのプリンシパル名。Kerberos での身元認証に使用されます。klist -kt <keytab_file> を実行してプリンシパルを表示します。