このページでは、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 に対する完全アクセス権(
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 メタデータへのアクセス権を付与するには、プリンシパル アカウントにメタデータロールを付与する必要があります。
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.metadataViewer
、roles/metastore.metadataEditor
、roles/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.metadataViewer
、roles/metastore.metadataEditor
、roles/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.metadataViewer
、roles/metastore.metadataEditor
、roles/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.metadataViewer
、roles/metastore.metadataEditor
、roles/metastore.metadataOwner
のいずれかのロール。
メタデータへのアクセス権を付与した後
必要なロールをサービス アカウントに付与したら、Dataproc Metastore を Dataproc クラスタに接続できます。クラスタでは、その Hive Metastore として Dataproc Metastore サービスが使用されます。