IAM を使用したアクセス制御

このページでは、Cloud Data Fusion のアクセス制御オプションについて説明します。

Cloud Data Fusion のリソースへのアクセスは、次の方法で制御できます。

  • Google Cloud コンソール、Google Cloud CLIREST APIでインスタンスを作成、更新するなど、コントロール プレーン オペレーションに対するアクセスを制御するには、このページで説明するように、Identity and Access Management(IAM)を使用します。

  • パイプラインが実行されているサービス アカウントに BigQuery や Cloud Storage などの Google Cloud データサービスへのアクセスを許可するには、IAM を使用します。

  • パイプラインの開始など、データプレーン オペレーションと呼ばれる、インスタンスで実行されるアクションに対するきめ細かい権限を制御するには、ロールベース アクセス制御(RBAC)を使用します。

Cloud Data Fusion のアクセス制御に関連するアーキテクチャとリソースについては、ネットワーキングをご覧ください。 ロールと権限の付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

Cloud Data Fusion での IAM について

Cloud Data Fusion 機能へのアクセスを制御するには、Google Cloud プロジェクト内のサービス アカウントと他のプリンシパルに IAM のロールと権限を付与します。

ユーザー アカウントにきめ細かいアクセス権を付与して Cloud Data Fusion ウェブ インターフェースを使用できるようにするには、RBAC を使用します。

デフォルトでは、Cloud Data Fusion は以下のサービス アカウントを使用します。

Cloud Data Fusion サービス アカウント

Cloud Data Fusion サービス アカウントは、パイプライン設計時にお客様のリソースにアクセスできる Google 管理のサービス エージェントです。このサービス エージェントは、Cloud Data Fusion API を有効にするとプロジェクトに自動的に追加されます。プロジェクト内のすべてのインスタンスで使用されます。

サービス エージェントには、次の責任があります。

  • パイプラインの設計中に、Cloud Storage、BigQuery、Datastream などの他のサービスと通信する。

  • Dataproc クラスタをプロビジョニングしてパイプライン ジョブを送信することで、実行を有効にする。

Cloud Data Fusion サービス アカウントのロール

デフォルトでは、Cloud Data Fusion サービス アカウントには Cloud Data Fusion API サービス エージェントのロールroles/datafusion.serviceAgent)のみが付与されています。

このサービス エージェントのプリンシパル名は service-CUSTOMER_PROJECT_NUMBER@gcp-sa-datafusion.iam.gserviceaccount.com です。

次のデフォルト リソースは、Cloud Data Fusion API サービス エージェントのロールに関連付けられています。

ロール リソース 権限
Cloud Data Fusion API サービス エージェント 関連付けられるサービス:
  • BigQuery
  • Bigtable
  • Compute Engine
  • Dataproc
  • Cloud DNS
  • Firebase
  • Cloud Monitoring
  • Network Connectivity
  • ネットワーク サービス統合マネージャー
  • Network Services API
  • 組織ポリシー
  • Recommender API
  • Cloud Resource Manager API
  • サービス ネットワーキング
  • Service Usage
  • Spanner
  • Cloud Storage
  • Traffic Director
Cloud Data Fusion API サービス エージェントの権限をご覧ください。

Compute Engine のデフォルト サービス アカウントまたはカスタム サービス アカウント

Compute Engine サービス アカウントは、Cloud Data Fusion が他の Google Cloud リソースにアクセスするジョブをデプロイして実行するデフォルトのアカウントです。デフォルトでは、Dataproc クラスタ VM に接続され、パイプラインの実行中に Cloud Data Fusion が Dataproc リソースにアクセスできるようにします。

Cloud Data Fusion インスタンスの作成時に、または Cloud Data Fusion ウェブ インターフェースで新しいコンピューティング プロファイルを作成することで、Dataproc クラスタに接続するカスタム サービス アカウントを選択できます。

詳細については、Cloud Data Fusion のサービス アカウントをご覧ください。

Compute Engine サービス アカウントのロール

デフォルトでは、Cloud Data Fusion はパイプラインの実行時にリソース(ソースやシンクなど)にアクセスするために、Compute Engine のデフォルト サービス アカウントを使用します。

Cloud Data Fusion インスタンス用にユーザーが管理するカスタム サービス アカウントを設定し、このアカウントにロールを付与できます。その後、新しいインスタンスを作成するときにこのサービス アカウントを選択できます。

Cloud Data Fusion ランナーのロール

Cloud Data Fusion インスタンスを含むプロジェクトで、デフォルトとユーザー管理カスタム サービス アカウント両方に対して、Cloud Data Fusion ランナーのロール(datafusion.runner)を付与します。

ロール 説明 権限
Data Fusion ランナー (datafusion.runner) Compute Engine サービス アカウントが、テナント プロジェクト内の Cloud Data Fusion サービスと通信できるようにします。 datafusion.instances.runtime

サービス アカウント ユーザーのロール

パイプラインの実行時に Dataproc クラスタを起動するプロジェクトのデフォルトまたはユーザー管理のサービス アカウントで、Cloud Data Fusion サービス アカウントにサービス アカウント ユーザーのロール(roles/iam.serviceAccountUser)を付与します。

詳しくは、サービス アカウントに権限を付与するをご覧ください。

Dataproc ワーカーのロール

Dataproc クラスタでジョブを実行するには、Dataproc ワーカーロール(roles/dataproc.worker)を、Cloud Data Fusion パイプラインで使用されるデフォルトまたはユーザー管理のサービス アカウントに付与します。

ユーザーのロール

Cloud Data Fusion でオペレーションをトリガーするには、自分(プリンシパル)に十分な権限が必要です。個々の権限はロールにグループ化され、自分がそのプリンシパルにロールを付与します。

RBAC が有効になっていない場合、または RBAC をサポートしていない Cloud Data Fusion エディションを使用している場合は、Cloud Data Fusion の IAM ロールを持つユーザーは、Cloud Data Fusion ウェブ インターフェースへの完全アクセス権を持ちます。管理者ロールでは、ユーザーは CreateUpdateUpgradeDelete オペレーションなどのインスタンスの管理のみが許可されます。

プリンシパルに Cloud Data Fusion で必要な権限に応じて、次のロールを付与します。

ロール 説明 権限
Cloud Data Fusion 管理者(roles/datafusion.admin すべての閲覧者権限に加えて Cloud Data Fusion インスタンスを作成、更新、削除する権限。
  • datafusion.instances.get
  • datafusion.instances.list
  • datafusion.instances.create
  • datafusion.instances.delete
  • datafusion.instances.update
  • datafusion.operations.get
  • datafusion.operations.list
  • datafusion.operations.cancel
  • resourcemanager.projects.get
  • resourcemanager.projects.list
Cloud Data Fusion 閲覧者(roles/datafusion.viewer
  • Google Cloud コンソールでプロジェクトの Cloud Data Fusion インスタンスを表示できます。
  • Cloud Data Fusion インスタンスを作成、更新、削除できません。
  • datafusion.instances.get
  • datafusion.instances.list
  • datafusion.operations.get
  • datafusion.operations.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list

設計時に別のプロジェクトのリソースにアクセスする

このセクションでは、設計時の Cloud Data Fusion インスタンスとは異なる Google Cloud プロジェクト内にあるリソースへのアクセス制御について説明します。

Cloud Data Fusion ウェブ インターフェースでパイプラインを設計する場合は、他のプロジェクトのリソースにアクセスする Wrangler や Preview などの関数を使用できます。

以降のセクションでは、環境内のサービス アカウントを決定し、適切な権限を付与する方法について説明します。

環境のサービス アカウントを決定する

サービス アカウント名は Cloud Data Fusion サービス アカウントであり、このサービス エージェントのプリンシパルは service-CUSTOMER_PROJECT_NUMBER@gcp-sa-datafusion.iam.gserviceaccount.com です。

別のプロジェクトのリソースにアクセスする権限を付与する

さまざまなリソースへのアクセス権を付与するロールを付与するには、次の手順に沿って操作します。

  1. ターゲット リソースが存在するプロジェクトで、Cloud Data Fusion サービス アカウント(service-CUSTOMER_PROJECT_NUMBER@gcp-sa-datafusion.iam.gserviceaccount.com)をプリンシパルとして追加します。
  2. ターゲット リソースが存在するプロジェクトのターゲット リソースの Cloud Data Fusion サービス アカウントにロールを付与します。

ロールを付与すると、インスタンスが配置されているプロジェクトのリソースにアクセスするのと同じ方法で、設計時に別のプロジェクトのリソースにアクセスできます。

実行時に別のプロジェクトのリソースにアクセスする

このセクションでは、実行時の Cloud Data Fusion インスタンスとは異なる Google Cloud プロジェクト内にあるリソースへのアクセス制御について説明します。

実行時に、Dataproc クラスタでパイプラインを実行します。これにより、他のプロジェクトのリソースにアクセスできる場合があります。デフォルトでは、Dataproc クラスタ自体は Cloud Data Fusion インスタンスと同じプロジェクトで起動しますが、別のプロジェクトのクラスタを使用できます。

他の Google Cloud プロジェクトのリソースにアクセスするには、次の手順に従います。

  1. プロジェクトのサービス アカウントを決定します。
  2. リソースが存在するプロジェクトで、Compute Engine のデフォルトのサービス アカウントに IAM ロールを付与して、別のプロジェクトのリソースへのアクセス権を付与します。

Compute Engine サービス アカウントを決定する

Compute Engine サービス アカウントの詳細については、Cloud Data Fusion での IAM についてをご覧ください。

別のプロジェクトのリソースへの IAM アクセスを付与する

Compute Engine のデフォルトのサービス アカウントには、別のプロジェクトのリソースにアクセスするための権限が必要です。これらのロールと権限は、アクセスするリソースによって異なる場合があります。

リソースにアクセスするには、次の手順に沿って操作します。

  1. ロールと権限を付与します。ターゲット リソースが存在するプロジェクトのプリンシパルとして Compute Engine サービス アカウントを指定します。
  2. リソースにアクセスするための適切なロールを追加します。

Cloud Data Fusion の API 権限

Cloud Data Fusion API を実行するには、以下の権限が必要です。

API 呼び出し 権限
instances.create datafusion.instances.create
instances.delete datafusion.instances.delete
instances.list datafusion.instances.list
instances.get datafusion.instances.get
instances.update datafusion.instances.update
operations.cancel datafusion.operations.cancel
operations.list datafusion.operations.list
operations.get datafusion.operations.get

一般的なタスクの権限

Cloud Data Fusion の一般的なタスクには、次の権限が必要です。

タスク 権限
Cloud Data Fusion ウェブ インターフェースへのアクセス datafusion.instances.get
Google Cloud コンソールでの Cloud Data Fusion の [インスタンス] ページへのアクセス datafusion.instances.list
インスタンスの [詳細] ページへのアクセス datafusion.instances.get
新しいインスタンスの作成 datafusion.instances.create
ラベルと詳細オプションを更新してインスタンスをカスタマイズする datafusion.instances.update
インスタンスの削除 datafusion.instances.delete

次のステップ