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

Dataflow の役割

役割 役職 説明 権限 最下位のリソース
roles/
dataflow.admin
Dataflow 管理者 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.* 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 を使用した組織のアクセス制御をご覧ください。

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