このページでは、gRPC エンドポイント プロトコルを使用する Dataproc Metastore サービスに Kerberos を構成する方法について説明します。 Dataproc Metastore サービスで Thrift エンドポイント プロトコルを使用している場合は、 Thrift エンドポイントの Kerberos を構成するをご覧ください。
準備
-
これらの手順では、Managed Service for Apache Spark クラスタを使用して次の Kerberos アセットを作成します。
- Keytab ファイル。
krb5.confファイル。- Kerberos プリンシパル。
これらの Kerberos アセットが Dataproc Metastore サービスと連携する仕組みについては、Kerberos についてをご覧ください。
独自の Kerberos KDC を作成してホストするか、 Managed Service for Apache Spark クラスタのローカル KDC を使用する方法を学習します。
Cloud Storage バケットを作成するか、既存のものへのアクセス権を取得します。このバケットに
krb5.confファイルを保存する必要があります。
必要なロール
Kerberos で構成した Dataproc Metastore の作成に必要な権限を取得するには、最小権限の原則に基づいて、プロジェクトで次の IAM のロールを付与するよう管理者に依頼してください。
- Dataproc Metastore リソースに対する完全アクセス権を付与する (
roles/metastore.editor) - IAM ポリシー管理を含むすべての Dataproc Metastore リソースに対する完全アクセス権を付与する(
roles/metastore.admin) - gRPC の読み取り / 書き込みアクセス権を Dataproc Metastore メタデータに付与する(
roles/metastore.metadataEditor)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
この事前定義ロールには、metastore.services.create 権限が含まれています。これは、Kerberos で構成された Dataproc Metastore を作成するために必要です。
カスタムロールや他の事前定義ロールを使用して、この権限を取得することもできます。
Dataproc Metastore の特定のロールと権限については、IAM によるアクセス管理をご覧ください。詳細については、Dataproc Metastore IAM とアクセス制御をご覧ください。
Dataproc Metastore に対して Kerberos を構成する
次の手順では、gRPC エンドポイントを使用する Dataproc Metastore サービスに Kerberos を構成する方法を示します。
まず、gRPC エンドポイントを使用する Dataproc Metastore を作成します。次に、Kerberos で構成された Managed Service for Apache Spark クラスタを作成し、それに接続します。
gRPC エンドポイントで Dataproc Metastore サービスを作成する
gRPC エンドポイントを使用する Dataproc Metastore を作成するには、
次の gcloud metastore services create コマンドを実行します。
gcloud
gcloud metastore services create SERVICE \
--instance-size=medium \
--endpoint-protocol=grpc
以下のように置き換えます。
SERVICE: Dataproc Metastore サービスの名前。
Managed Service for Apache Spark クラスタを作成してサービスに接続する
Kerberos で構成された Managed Service for Apache Spark を作成するには、次の gcloud dataproc clusters create コマンドを実行します。
このコマンドで --enable-kerberos オプションによって、Kerberos Keytab ファイル、krb5.conf
ファイル、プリンシパルが作成されます。これらの値はすべて、Managed Service for Apache Spark
クラスタによって設定されたデフォルトの名前と設定を使用して作成されます。
gcloud
gcloud dataproc clusters create CLUSTER_NAME \
--project PROJECT_ID \
--region REGION \
--image-version 2.0-debian10 \
--dataproc-metastore DATAPROC_METASTORE_NAME \
--enable-kerberos \
--scopes 'https://www.googleapis.com/auth/cloud-platform'
以下のように置き換えます。
CLUSTER_NAME: Managed Service for Apache Spark クラスタの名前。PROJECT_ID: Google Cloud プロジェクト ID。REGION: Managed Service for Apache Spark クラスタを作成する Google Cloud リージョン 。DATAPROC_METASTORE_NAME: クラスタに接続する Dataproc Metastore サービスの名前。 形式はprojects/<my_project>/locations/<location>/services/<service_id>です。
ジョブを送信する前に Managed Service for Apache Spark を構成する
Managed Service for Apache Spark ジョブを実行するには、Hadoop container-executor.cfg ファイルの allowed.system.users プロパティに hive ユーザーを追加する必要があります。これにより、ユーザーは select * from などのクエリを実行してデータにアクセスできます。
次の手順では、Dataproc Metastore サービスに関連付けられているプライマリ Managed Service for Apache Spark クラスタに SSH 接続し、container-executor.cfg ファイルを更新する方法を示します。
- コンソールで、[VM インスタンス] ページに移動します。 Google Cloud
仮想マシン インスタンスのリストで、Managed Service for Apache Spark プライマリ ノード(
your-cluster-name-m)の行の [SSH] をクリックします。ノード上のホーム ディレクトリでブラウザ ウィンドウが開きます。
SSH セッションで、Hadoop
container-executor.cfgファイルを開きます。sudo vim /etc/hadoop/conf/container-executor.cfgManaged Service for Apache Spark ノードごとに次の行を追加します。
allowed.system.users=hive
Kerberos チケットを取得する
次の手順では、Kerberos チケットを生成する方法を示します。
Managed Service for Apache Spark クラスタの SSH セッションで、Kerberos チケットを生成して Dataproc Metastore サービスに接続します。
このコマンドは、Managed Service for Apache Spark クラスタによって生成されたデフォルトの Keytab 名を使用します。
sudo klist -kte /etc/security/keytab/hive.service.keytab sudo kinit -kt /etc/security/keytab/hive.service.keytab hive/_HOST@${realm} sudo klist # gets the ticket information._HOST値は、klist -kteコマンドを使用して Keytab ファイルが一覧表示された際に取得されます。それには、プライマリ ノードのホスト名が含まれています。
(省略可)新しいプリンシパルを追加する
新しいプリンシパルを追加するには、次のコマンドを実行します。
sudo kadmin.local -q "addprinc -randkey PRINCIPAL" sudo kadmin.local -q "ktadd -k /etc/security/keytab/hive.service.keytab PRINCIPAL"Kerberos チケットを取得します。
sudo klist -kte /etc/security/keytab/hive.service.keytab sudo kinit -kt /etc/security/keytab/hive.service.keytab PRINCIPAL sudo klist sudo hive