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

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

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

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

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

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

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

  • メタデータ リソースに対する完全アクセス権を付与する。メタデータ オーナーのロール(roles/metastore.metadataOwner
  • メタデータに対する読み取り / 書き込みアクセス権を付与するには: Metadata Editor のロール 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

1 つの 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 クラスタに接続できます。クラスタでは、その Hive Metastore として Dataproc Metastore サービスが使用されます。

次のステップ