このページでは、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 に対する完全アクセス権(
roles/metastore.editor
)を付与する -
IAM 権限の更新を含め、Dataproc Metastore リソースに対する完全アクセス権(
roles/metastore.admin
)を付与する
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、プリンシパルに Dataproc Metastore メタデータへのアクセス権を付与するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
プリンシパルに Dataproc Metastore メタデータへのアクセス権を付与するには、次の権限が必要です。
-
resourcemanager.projects.get
-
resourcemanager.projects.getIamPolicy
-
resourcemanager.projects.setIamPolicy
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
Dataproc Metastore の特定のロールと権限については、Dataproc Metastore IAM の概要をご覧ください。プリンシパル アカウントにメタデータへのアクセス権を付与する
プリンシパル アカウントに、プロジェクト レベル、サービス レベル、データベース レベル、テーブルレベルでメタデータへのアクセス権を付与できます。
プロジェクト レベルでアクセス権を付与する
プロジェクト レベルですべての Dataproc Metastore メタデータへのアクセス権を付与するには、プリンシパル アカウントにメタデータロールを付与する必要があります。
指定したプロジェクト内のすべての Dataproc Metastore サービスにメタデータロールを付与するには、次の gcloud projects
add-iam-policy-binding
コマンドを実行します。
gcloud projects add-iam-policy-bindingPROJECT_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.metadataViewer
、roles/metastore.metadataEditor
、roles/metastore.metadataOwner
のいずれかのロール。
サービスレベルでアクセス権を付与する
サービスレベルですべての Dataproc Metastore メタデータへのアクセス権を付与するには、プリンシパル アカウントにメタデータロールを付与する必要があります。
単一の Dataproc Metastore メタストア サービスの粒度でメタデータロールを付与するには、次の gcloud metastore services
add-iam-policy-binding
コマンドを実行します。
gcloud metastore services add-iam-policy-bindingSERVICE_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.metadataViewer
、roles/metastore.metadataEditor
、roles/metastore.metadataOwner
のいずれかのロール。
データベース レベルでアクセス権を付与する
特定のデータベース内のすべての Dataproc Metastore メタデータへのアクセス権を付与するには、プリンシパル アカウントにメタデータロールを追加する必要があります。
特定のデータベースの粒度でメタデータロールを付与するには、次の gcloud metastore services databases
add-iam-policy-binding
コマンドを実行します。
gcloud metastore services databases add-iam-policy-bindingDATABASE_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.metadataViewer
、roles/metastore.metadataEditor
、roles/metastore.metadataOwner
のいずれかのロール。
テーブルレベルでアクセス権を付与する
特定のテーブル内のすべての Dataproc Metastore メタデータへのアクセス権を付与するには、プリンシパル アカウントにメタデータロールを付与する必要があります。
テーブルの粒度でメタデータロールを付与するには、次の gcloud metastore services databases tables add-iam-policy-binding
コマンドを実行します。
gcloud metastore services databases tables add-iam-policy-bindingTABLE_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.metadataViewer
、roles/metastore.metadataEditor
、roles/metastore.metadataOwner
のいずれかのロール。
メタデータへのアクセス権を付与した後
必要なロールをサービス アカウントに付与したら、Dataproc Metastore を Dataproc クラスタに接続できます。クラスタは、Dataproc Metastore サービスを Hive Metastore として使用します。