Cloud Dataflow アクセス制御ガイド

概要

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

このページでは、Dataflow の IAM 役割の使用方法について説明します。IAM とその機能の詳しい説明については、Google Cloud Identity and Access Management デベロッパー ガイドをご覧ください。

すべての 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 IAM ロールと、各ロールに含まれているすべての権限に対応するリストを示します。各権限は、それぞれ特定のリソースタイプを対象としています。

役割 役職 説明 権限 最下位のリソース
roles/dataflow.admin Dataflow 管理者 データフロー ジョブを作成し、管理するための最低限の役割。
  • compute.machineTypes.get
  • dataflow.*
  • resourcemanager.projects.get
  • resourcemanager.projects.list
  • storage.buckets.get
  • storage.objects.create
  • storage.objects.get
  • storage.objects.list
roles/dataflow.developer Dataflow デベロッパー Dataflow ジョブを実行、操作するために必要な権限を付与します。
  • dataflow.*
  • resourcemanager.projects.get
  • resourcemanager.projects.list
プロジェクト
roles/dataflow.viewer Dataflow 閲覧者 すべての Dataflow 関連リソースに対する読み取り専用アクセス権を付与します。
  • dataflow.jobs.get
  • dataflow.jobs.list
  • dataflow.messages.*
  • dataflow.metrics.*
  • dataflow.snapshots.get
  • dataflow.snapshots.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
プロジェクト
roles/dataflow.worker Dataflow ワーカー Compute Engine サービス アカウントが Dataflow パイプラインの作業単位を実行するために必要な権限を付与します。
  • compute.instanceGroupManagers.update
  • compute.instances.delete
  • compute.instances.setDiskAutoDelete
  • dataflow.jobs.get
  • logging.logEntries.create
  • storage.objects.create
  • storage.objects.get
プロジェクト

Dataflow ワーカー ロール(roles/dataflow.worker)は、Compute Engine サービス アカウントが Apache Beam パイプラインの作業単位を実行するのに必要な権限(dataflow.workItems.leasedataflow.workItems.updatedataflow.workItems.sendMessage)を付与します。通常はそのようなアカウントに対してのみ割り当てられ、Dataflow サービスからの作業のリクエストおよび更新のみを行うことができます。

Dataflow サービス エージェントのロール(roles/dataflow.serviceAgent)は、Dataflow サービス アカウントに対してマネージド リソースへのアクセス権を付与します。このサービス エージェント ロールは、Dataflow プロジェクトの作成時に Dataflow サービス アカウントに割り当てられます。ユーザーがこの役割を割り当てることはできません。

ジョブの作成

ジョブを作成する場合、ジョブの実行と検証に必要な最小限の権限セットが 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 を使用した組織のアクセス制御をご覧ください。

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