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: プリンシパルに付与するアクセス権の範囲に応じて、roles/metastore.metadataViewerroles/metastore.metadataEditorroles/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 または完全修飾 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 または完全修飾 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 または完全修飾 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 として使用します。

次のステップ