IAM によるアクセス制御

プロジェクト内または組織内のユーザーのアクセスを制限するには、Dataflow で Identity and Access Management(IAM)のロールを使用します。Google Cloud プロジェクト全体に対する閲覧者、編集者、オーナーのロールを付与するのではなく、Dataflow 関連リソースへのアクセスのみを制御できます。

このページでは、Dataflow の IAM ロールの使用方法について説明します。IAM とその機能の詳細については、IAM のドキュメントをご覧ください。

どの Dataflow メソッドでも、呼び出し側に一定の権限が必要になります。Dataflow でサポートされる権限と役割のリストについては、次のセクションをご覧ください。

権限と役割

ここでは、Dataflow IAM でサポートされる権限と役割について簡単に説明します。

必要な権限

呼び出し元が各メソッドを呼び出す際に必要となる権限のリストを次の表に示します。

メソッド 必要な権限
dataflow.jobs.create dataflow.jobs.create
dataflow.jobs.cancel dataflow.jobs.cancel
dataflow.jobs.updateContents dataflow.jobs.updateContents
dataflow.jobs.list dataflow.jobs.list
dataflow.jobs.get dataflow.jobs.get
dataflow.messages.list dataflow.messages.list
dataflow.metrics.get dataflow.metrics.get
dataflow.jobs.snapshot dataflow.jobs.snapshot

ロール

次の表に、Dataflow IAM のロールと、各ロールに含まれている Dataflow に関連するすべての権限に対応するリストを示します。各権限は、それぞれ特定のリソースタイプを対象としています。権限のリストについては、Google Cloud Console の [ロール] ページをご覧ください。

Role Permissions

(roles/dataflow.admin)

Minimal role for creating and managing dataflow jobs.

cloudbuild.builds.create

cloudbuild.builds.get

cloudbuild.builds.list

cloudbuild.builds.update

cloudbuild.operations.*

  • cloudbuild.operations.get
  • cloudbuild.operations.list

compute.machineTypes.get

compute.projects.get

compute.regions.list

compute.zones.list

dataflow.jobs.*

  • dataflow.jobs.cancel
  • dataflow.jobs.create
  • dataflow.jobs.get
  • dataflow.jobs.list
  • dataflow.jobs.snapshot
  • dataflow.jobs.updateContents

dataflow.messages.list

dataflow.metrics.get

dataflow.snapshots.*

  • dataflow.snapshots.delete
  • dataflow.snapshots.get
  • dataflow.snapshots.list

recommender.dataflowDiagnosticsInsights.*

  • recommender.dataflowDiagnosticsInsights.get
  • recommender.dataflowDiagnosticsInsights.list
  • recommender.dataflowDiagnosticsInsights.update

remotebuildexecution.blobs.get

resourcemanager.projects.get

resourcemanager.projects.list

storage.buckets.get

storage.objects.create

storage.objects.get

storage.objects.list

(roles/dataflow.developer)

Provides the permissions necessary to execute and manipulate Dataflow jobs.

Lowest-level resources where you can grant this role:

  • Project

cloudbuild.builds.create

cloudbuild.builds.get

cloudbuild.builds.list

cloudbuild.builds.update

cloudbuild.operations.*

  • cloudbuild.operations.get
  • cloudbuild.operations.list

compute.projects.get

compute.regions.list

compute.zones.list

dataflow.jobs.*

  • dataflow.jobs.cancel
  • dataflow.jobs.create
  • dataflow.jobs.get
  • dataflow.jobs.list
  • dataflow.jobs.snapshot
  • dataflow.jobs.updateContents

dataflow.messages.list

dataflow.metrics.get

dataflow.snapshots.*

  • dataflow.snapshots.delete
  • dataflow.snapshots.get
  • dataflow.snapshots.list

recommender.dataflowDiagnosticsInsights.*

  • recommender.dataflowDiagnosticsInsights.get
  • recommender.dataflowDiagnosticsInsights.list
  • recommender.dataflowDiagnosticsInsights.update

remotebuildexecution.blobs.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataflow.viewer)

Provides read-only access to all Dataflow-related resources.

Lowest-level resources where you can grant this role:

  • Project

dataflow.jobs.get

dataflow.jobs.list

dataflow.messages.list

dataflow.metrics.get

dataflow.snapshots.get

dataflow.snapshots.list

recommender.dataflowDiagnosticsInsights.get

recommender.dataflowDiagnosticsInsights.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/dataflow.worker)

Provides the permissions necessary for a Compute Engine service account to execute work units for a Dataflow pipeline.

Lowest-level resources where you can grant this role:

  • Project

autoscaling.sites.readRecommendations

autoscaling.sites.writeMetrics

autoscaling.sites.writeState

compute.instanceGroupManagers.update

compute.instances.delete

compute.instances.setDiskAutoDelete

dataflow.jobs.get

dataflow.shuffle.*

  • dataflow.shuffle.read
  • dataflow.shuffle.write

dataflow.streamingWorkItems.*

  • dataflow.streamingWorkItems.ImportState
  • dataflow.streamingWorkItems.commitWork
  • dataflow.streamingWorkItems.getData
  • dataflow.streamingWorkItems.getWork
  • dataflow.streamingWorkItems.getWorkerMetadata

dataflow.workItems.*

  • dataflow.workItems.lease
  • dataflow.workItems.sendMessage
  • dataflow.workItems.update

logging.logEntries.create

logging.logEntries.route

monitoring.timeSeries.create

storage.buckets.get

storage.objects.create

storage.objects.get

Dataflow ワーカーロール(roles/dataflow.worker)は、Compute Engine サービス アカウントが Apache Beam パイプラインの作業単位を実行するのに必要な権限を付与します。Dataflow ワーカーのロールは、Dataflow サービスから作業をリクエストして更新できるサービス アカウントに割り当てる必要があります。

Dataflow サービス エージェントのロール(roles/dataflow.serviceAgent)は、Dataflow サービス アカウントによってのみ使用されます。これにより、サービス アカウントは、Dataflow ジョブを実行する Google Cloud プロジェクトのマネージド リソースにアクセスできます。Google Cloud Console の [API] ページでプロジェクトの Dataflow API を有効にすると、サービス アカウントに自動的に割り当てられます。

ジョブの作成

ジョブを作成する場合、ジョブの実行と検証に必要な最小限の権限セットが roles/dataflow.admin ロールに含まれています。

あるいは、次の権限が必要です。

  • roles/dataflow.developer ロールは、ジョブをインスタンス化するために必要です。
  • roles/compute.viewer ロールは、マシンタイプ情報にアクセスし、その他の設定を表示するために必要です。
  • roles/storage.objectAdmin ロールは、Cloud Storage 上のファイルをステージングする権限を付与するために必要です。

役割の割り当て例

Dataflow のさまざまなロールの用途の例として、以下の点を考慮してください。

Dataflow のロールを割り当てる

現在、Dataflow のロールは組織とプロジェクトに対してのみ設定できます。

組織レベルでロールを管理するには、IAM を使用した組織のアクセス制御をご覧ください。

プロジェクト レベルのロールを設定するには、リソースへのアクセス権の付与、変更、取り消しをご覧ください。