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 の [ロール] ページをご覧ください。

ロール 権限

Dataflow 管理者
roles/dataflow.admin

データフロー ジョブを作成し、管理するための最低限のロール。

  • cloudbuild.builds.create
  • cloudbuild.builds.get
  • cloudbuild.builds.list
  • cloudbuild.builds.update
  • compute.machineTypes.get
  • compute.projects.get
  • compute.regions.list
  • compute.zones.list
  • dataflow.jobs.*
  • dataflow.messages.list
  • dataflow.metrics.get
  • dataflow.snapshots.*
  • recommender.dataflowDiagnosticsInsights.*
  • remotebuildexecution.blobs.get
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • storage.buckets.get
  • storage.objects.create
  • storage.objects.get
  • storage.objects.list

Dataflow デベロッパー
roles/dataflow.developer

Dataflow ジョブを実行、操作するために必要な権限を付与します。

このロールを付与できる最下位レベルのリソース:

  • プロジェクト
  • cloudbuild.builds.create
  • cloudbuild.builds.get
  • cloudbuild.builds.list
  • cloudbuild.builds.update
  • compute.projects.get
  • compute.regions.list
  • compute.zones.list
  • dataflow.jobs.*
  • dataflow.messages.list
  • dataflow.metrics.get
  • dataflow.snapshots.*
  • recommender.dataflowDiagnosticsInsights.*
  • remotebuildexecution.blobs.get
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Dataflow 閲覧者
roles/dataflow.viewer

すべての Dataflow 関連リソースに対する読み取り専用アクセス権を付与します。

このロールを付与できる最下位レベルのリソース:

  • プロジェクト
  • 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

Dataflow ワーカー
roles/dataflow.worker

Compute Engine サービス アカウントが Dataflow パイプラインの作業単位を実行するために必要な権限を付与します。

このロールを付与できる最下位レベルのリソース:

  • プロジェクト
  • autoscaling.sites.readRecommendations
  • autoscaling.sites.writeMetrics
  • autoscaling.sites.writeState
  • compute.instanceGroupManagers.update
  • compute.instances.delete
  • compute.instances.setDiskAutoDelete
  • dataflow.jobs.get
  • dataflow.shuffle.*
  • dataflow.streamingWorkItems.*
  • dataflow.workItems.*
  • logging.logEntries.create
  • 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 のさまざまなロールの用途の例として、以下の点を考慮してください。

  • ジョブの作成と確認を行うデベロッパーには、roles/dataflow.admin ロールが必要です。
  • 権限をより詳細に管理する場合、Dataflow ジョブを扱うデベロッパーには、roles/dataflow.developer のロールが必要です。
    • 必要なファイルをステージングするには、roles/storage.objectAdmin または関連するロールが必要です。
    • デバッグと割り当ての確認を行うには、プロジェクトの roles/compute.viewer ロールが必要です。
    • 他のロールの割り当てがない場合、デベロッパーは Dataflow ジョブの作成とキャンセルを行えますが、個々の VM を操作することや、他の Cloud サービスにアクセスすることはできません。
  • ワーカー サービス アカウントが Dataflow サービスのデータを処理するには、roles/dataflow.worker ロールが必要です。ジョブデータにアクセスするには、サービス アカウントに roles/storage.objectAdmin などの他のロールが必要です。

Dataflow のロールを割り当てる

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

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

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