Dataproc Metastore の gRPC エンドポイントにアクセスする

このページでは、gRPC エンドポイント プロトコルを使用して、Dataproc Metastore サービスへのアクセス権を Google Cloud ユーザー アカウントまたはサービス アカウントに付与する方法について説明します。

gRPC メタデータのロールの付与について

アカウントにメタデータへのアクセス権を付与する場合は、次のコンセプトを考慮してください。

  • 提供するアクセスレベル。付与するアクセスレベルによって、アカウントがアクセスできるメタデータの量が決まります。たとえば、特定のデータベースや特定のテーブルに保存されているメタデータへのアクセス権を付与したり、プロジェクト全体へのアクセス権を付与したりできます。
  • アクセスを必要とするプリンシパル。ジョブの実行には IAM プリンシパル(ID)を使用します。たとえば、ユーザー アカウントまたはサービス アカウント(通常は Dataproc VM サービス アカウント)を使用して Dataproc クラスタ ジョブを実行できます。

    Dataproc Metastore で使用できるアカウントの詳細については、Dataproc サービス アカウントをご覧ください。

必要な制御の範囲に応じて、次のいずれかの IAM 事前定義ロールをプリンシパルに付与します。

  • メタデータ リソースへの完全アクセス権を付与するには。メタデータ オーナーのロール(roles/metastore.metadataOwner
  • メタデータに対する読み取り / 書き込みアクセス権を付与するには: メタデータ編集者のロール(roles/metastore.metadataEditor
  • メタデータに対する読み取りアクセス権を付与するには: メタデータ閲覧者のロール(roles/metastore.metadataViewer

始める前に

  • プロジェクトで Dataproc Metastore を有効にします。
  • gRPC プロトコルを使用するメタストア サービスを作成します。
  • プロジェクトに特有のネットワーキング要件を理解します。

    • gRPC と Virtual Private Cloud(VPC)の要件。gRPC を使用している場合は、共有 VPC を構成したり、追加のネットワーク構成を設定したりする必要はありません。デフォルトでは、gRPC エンドポイントには任意の VPC からアクセスできます。

    ただし、1 つ例外があります。プロジェクトで VPC-SC サービス境界を使用している場合、gRPC エンドポイントには、境界内のプロジェクトに属する VPC からのみアクセスできます。詳細については、Dataproc Metastore での VPC Service Controls をご覧ください。

必要なロール

Dataproc Metastore メタデータに対するプリンシパル アクセスを付与するために必要な権限を取得するには、最小権限の原則に従って、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

これらの事前定義ロールには、プリンシパルに Dataproc Metastore メタデータへのアクセス権を付与するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

プリンシパルに Dataproc Metastore メタデータへのアクセス権を付与するには、次の権限が必要です。

  • resourcemanager.projects.get
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy

カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。

Dataproc Metastore の特定のロールと権限については、Dataproc Metastore IAM の概要をご覧ください。

プリンシパル アカウントにメタデータへのアクセス権を付与する

プリンシパル アカウントには、プロジェクト レベル、サービスレベル、データベース レベル、テーブル レベルでメタデータへのアクセス権を付与できます。

プロジェクト レベルでアクセス権を付与する

プロジェクト レベルですべての Dataproc Metastore メタデータへのアクセス権を付与するには、プリンシパル アカウントにメタデータロールを付与する必要があります。

gcloud CLI

指定したプロジェクト内のすべての Dataproc Metastore サービスにメタデータロールを付与するには、次の gcloud projects add-iam-policy-binding コマンドを実行します。

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=PRINCIPAL \
    --role=METASTORE_ROLE

以下を置き換えます。

  • PROJECT_ID: メタデータへのアクセス権を付与する Google Cloud プロジェクト ID。
  • PRINCIPAL: プリンシパルのタイプとメール ID(メールアドレス)です。
    • ユーザー アカウントの場合: user:EMAIL_ID
    • サービス アカウントの場合: serviceAccount:EMAIL_ID
    • Google グループの場合: group:EMAIL_ID
    • その他のプリンシパル タイプ: プリンシパル ID
  • METASTORE_ROLE\`: One of the following roles, depending on the scope of access that you want to grant the principal:roles/metastore.metadataViewer,roles/metastore.metadataEditor, orroles/metastore.metadataOwner`.

サービスレベルでアクセス権を付与する

サービスレベルですべての Dataproc Metastore メタデータへのアクセス権を付与するには、プリンシパル アカウントにメタデータロールを付与する必要があります。

gcloud CLI

単一の Dataproc Metastore メタストア サービスの粒度でメタデータロールを付与するには、次の gcloud metastore services add-iam-policy-binding コマンドを実行します。

gcloud metastore services add-iam-policy-binding SERVICE_ID \
  --location=LOCATION \
  --member=PRINCIPAL \
  --role=METASTORE_ROLE

以下を置き換えます。

  • SERVICE_ID: Dataproc Metastore サービスの ID または完全修飾識別子。
  • LOCATION: アクセスを許可する Dataproc Metastore サービスのリージョン。
  • PRINCIPAL: プリンシパル アカウントのタイプとメール ID(メールアドレス)です。
    • ユーザー アカウントの場合: user:EMAIL_ID
    • サービス アカウントの場合: serviceAccount:EMAIL_ID
    • Google グループの場合: group:EMAIL_ID
    • その他のプリンシパル タイプ: プリンシパル ID
  • METASTORE_ROLE: プリンシパルに付与するアクセス権の範囲に応じて、roles/metastore.metadataViewerroles/metastore.metadataEditorroles/metastore.metadataOwner のいずれかのロール。

データベース レベルでアクセス権を付与する

特定のデータベース内のすべての Dataproc Metastore メタデータへのアクセス権を付与するには、プリンシパル アカウントにメタデータロールを追加する必要があります。

gcloud CLI

特定のデータベースの粒度でメタデータロールを付与するには、次の gcloud metastore services databases add-iam-policy-binding コマンドを実行します。

gcloud metastore services databases add-iam-policy-binding DATABASE_ID \
  --project=PROJECT \
  --location=LOCATION \
  --service=SERVICE_ID \
  --member=PRINCIPAL \
  --role=METASTORE_ROLE

以下を置き換えます。

  • DATABASE_ID: メタデータへのアクセス権を付与するデータベースの ID。 この ID はデータベース スキーマから取得されます。
  • PROJECT: メタデータへのアクセスを許可する Dataproc Metastore サービスを含む Google Cloud プロジェクト ID。
  • LOCATION: アクセスを許可する Dataproc Metastore サービスのリージョン。
  • SERVICE_ID: Dataproc Metastore サービスの ID または完全修飾識別子。
  • PRINCIPAL: プリンシパル アカウントのタイプとメール ID(メールアドレス)です。
    • ユーザー アカウントの場合: user:EMAIL_ID
    • サービス アカウントの場合: serviceAccount:EMAIL_ID
    • Google グループの場合: group:EMAIL_ID
    • その他のプリンシパル タイプ: プリンシパル ID
  • METASTORE_ROLE: プリンシパルに付与するアクセス権の範囲に応じて、roles/metastore.metadataViewerroles/metastore.metadataEditorroles/metastore.metadataOwner のいずれかのロール。

テーブルレベルでアクセス権を付与する

特定のテーブル内のすべての Dataproc Metastore メタデータへのアクセス権を付与するには、プリンシパル アカウントにメタデータロールを付与する必要があります。

gcloud CLI

テーブルの粒度でメタデータロールを付与するには、次の gcloud metastore services databases tables add-iam-policy-binding コマンドを実行します。

gcloud metastore services databases tables add-iam-policy-binding TABLE_ID \
  --database=DATABASE_ID \
  --project=PROJECT \
  --location=LOCATION \
  --service=SERVICE_ID \
  --member=PRINCIPAL \
  --role=METASTORE_ROLE

以下を置き換えます。

  • TABLE_ID: アクセス権を付与するテーブルの ID。この ID はデータベース スキーマから取得されます。
  • DATABASE_ID: メタデータへのアクセス権を付与するテーブルを含むデータベースの ID。この ID はデータベース スキーマから取得されます。
  • PROJECT: メタデータへのアクセス権を付与する Dataproc Metastore サービスを含む Google Cloud プロジェクト ID。
  • LOCATION: メタデータへのアクセスを許可する Dataproc Metastore サービスのリージョン。
  • SERVICE_ID: Dataproc Metastore サービスの ID または完全修飾識別子。
  • PRINCIPAL: プリンシパル アカウントのタイプとメール ID(メールアドレス)です。
    • ユーザー アカウントの場合: user:EMAIL_ID
    • サービス アカウントの場合: serviceAccount:EMAIL_ID
    • Google グループの場合: group:EMAIL_ID
  • METASTORE_ROLE: プリンシパルに付与するアクセス権の範囲に応じて、roles/metastore.metadataViewerroles/metastore.metadataEditorroles/metastore.metadataOwner のいずれかのロール。

メタデータへのアクセス権を付与した後

サービス アカウントに必要なロールを付与したら、Dataproc Metastore を Dataproc クラスタに接続できます。クラスタは、Dataproc Metastore サービスを Hive Metastore として使用します。

次のステップ