gRPC メタデータのロールの付与について
アカウントにメタデータへのアクセス権を付与する場合は、次のコンセプトを考慮してください。
- 付与するアクセスレベル 。付与するアクセスレベルによって、アカウントがアクセスできるメタデータの量が決まります。たとえば、特定のデータベースや特定のテーブルに保存されているメタデータへのアクセス権を付与することも、プロジェクト全体へのアクセス権を付与することもできます。
アクセスを必要とするプリンシパル 。ジョブを実行するには、IAM プリンシパル(ID)を使用します。たとえば、ユーザー アカウントまたはサービス アカウント(通常は Dataproc VM サービス アカウント)を使用して、Managed Service for Apache Spark クラスタ ジョブを実行できます。
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 メタデータへのアクセス権を付与するには、プリンシパル アカウントにメタデータロールを付与する必要があります。
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.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: メタデータへのアクセス権を付与する Google Cloud Dataproc Metastore サービスを含む プロジェクト 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 サービスを含む プロジェクト ID。 Google CloudLOCATION: メタデータへのアクセスを許可する 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 を Managed Service for Apache Spark クラスタに接続できます。クラスタは、Dataproc Metastore サービスを Hive メタストアとして使用します。
次のステップ
- Managed Service for Apache Spark クラスタを接続する
- Dataproc Metastore を更新して削除する
- メタデータを Dataproc Metastore にインポートする