Dataproc IAM のロールと権限

概要

Identity and Access Management(IAM)によって、プロジェクト リソースに対するユーザーとグループのアクセスを制御できます。このドキュメントでは、Dataproc に関係する IAM の権限と、それらの権限を付与する IAM ロールについて説明します。

Dataproc の権限

Dataproc の権限を使用して、サービス アカウントを含むユーザーは、Dataproc のクラスタ、ジョブ、オペレーション、ワークフロー テンプレートのアクションを実行できます。たとえば、dataproc.clusters.create 権限を持つユーザーは、プロジェクトで Dataproc クラスタを作成できます。通常、権限を付与することはありません。代わりに、役割を割り当てます。役割には、1 つ以上の権限が含まれています。

次の表に、Dataproc API(メソッド)を呼び出すのに必要な権限を示します。表は、各 Dataproc リソース(クラスタ、ジョブ、オペレーション、ワークフロー テンプレート)に関連付けられた API ごとに整理されています。

クラスタ権限

メソッド 必要な権限
projects.regions.clusters.create 1、2 dataproc.clusters.create
projects.regions.clusters.get dataproc.clusters.get
projects.regions.clusters.list dataproc.clusters.list
projects.regions.clusters.patch 1、2、3 dataproc.clusters.update
projects.regions.clusters.delete 1 dataproc.clusters.delete
projects.regions.clusters.start dataproc.clusters.start
projects.regions.clusters.stop dataproc.clusters.stop
projects.regions.clusters.getIamPolicy dataproc.clusters.getIamPolicy
projects.regions.clusters.setIamPolicy dataproc.clusters.setIamPolicy

注:

  1. dataproc.operations.get 権限も、Google Cloud CLI からステータスの更新を取得するために必要です。
  2. dataproc.clusters.get 権限も、Google Cloud CLI からオペレーションの結果を取得するために必要です。
  3. dataproc.autoscalingPolicies.use 権限は、クラスタに対して自動スケーリング ポリシーを有効にするためにも必要です。

ジョブ権限

メソッド 必要な権限
projects.regions.jobs.submit 1、2 dataproc.jobs.create
dataproc.clusters.use
projects.regions.jobs.get dataproc.jobs.get
projects.regions.jobs.list dataproc.jobs.list
projects.regions.jobs.cancel 1 dataproc.jobs.cancel
projects.regions.jobs.patch 1 dataproc.jobs.update
projects.regions.jobs.delete 1 dataproc.jobs.delete
projects.regions.jobs.getIamPolicy dataproc.jobs.getIamPolicy
projects.regions.jobs.setIamPolicy dataproc.jobs.setIamPolicy

注:

  1. Google Cloud CLI では、jobs submitjobs waitjobs updatejobs deletejobs kill コマンドに対する dataproc.jobs.get 権限も必要です。

  2. gcloud CLI では、ジョブを送信するために dataproc.clusters.get 権限も必要です。ユーザーが Dataproc Granular IAM を使用してクラスタで gcloud dataproc jobs submit を実行するために必要な権限の設定の例については、Granular IAM によるジョブの送信をご覧ください。

オペレーション権限

メソッド 必要な権限
projects.regions.operations.get dataproc.operations.get
projects.regions.operations.list dataproc.operations.list
projects.regions.operations.cancel dataproc.operations.cancel
projects.regions.operations.delete dataproc.operations.delete
projects.regions.operations.getIamPolicy dataproc.operations.getIamPolicy
projects.regions.operations.setIamPolicy dataproc.operations.setIamPolicy

ワークフロー テンプレートの権限

メソッド 必要な権限
projects.regions.workflowTemplates.instantiate dataproc.workflowTemplates.instantiate
projects.regions.workflowTemplates.instantiateInline dataproc.workflowTemplates.instantiateInline
projects.regions.workflowTemplates.create dataproc.workflowTemplates.create
projects.regions.workflowTemplates.get dataproc.workflowTemplates.get
projects.regions.workflowTemplates.list dataproc.workflowTemplates.list
projects.regions.workflowTemplates.update dataproc.workflowTemplates.update
projects.regions.workflowTemplates.delete dataproc.workflowTemplates.delete
projects.regions.workflowTemplates.getIamPolicy dataproc.workflowTemplates.getIamPolicy
projects.regions.workflowTemplates.setIamPolicy dataproc.workflowTemplates.setIamPolicy

注:

  1. ワークフロー テンプレートの権限は、クラスタおよびジョブの権限に依存しません。 ユーザーは create cluster 権限や submit job 権限がなくても、ワークフロー テンプレートを作成し、インスタンス化できます。

  2. Google Cloud CLI では、dataproc.operations.get 権限もワークフローの完了をポーリングするために必要です。

  3. 実行中のワークフローをキャンセルするには、dataproc.operations.cancel 権限が必要です。

自動スケーリング ポリシーの権限

メソッド 必要な権限
projects.regions.autoscalingPolicies.create dataproc.autoscalingPolicies.create
projects.regions.autoscalingPolicies.get dataproc.autoscalingPolicies.get
projects.regions.autoscalingPolicies.list dataproc.autoscalingPolicies.list
projects.regions.autoscalingPolicies.update dataproc.autoscalingPolicies.update
projects.regions.autoscalingPolicies.delete dataproc.autoscalingPolicies.delete
projects.regions.autoscalingPolicies.getIamPolicy dataproc.autoscalingPolicies.getIamPolicy
projects.regions.autoscalingPolicies.setIamPolicy dataproc.autoscalingPolicies.setIamPolicy

注:

  1. dataproc.autoscalingPolicies.use 権限は、clusters.patch メソッドのリクエストでクラスタに対して自動スケーリング ポリシーを有効にするために必要です。

ノードグループの権限

メソッド 必要な権限
projects.regions.nodeGroups.create dataproc.nodeGroups.create
projects.regions.nodeGroups.get dataproc.nodeGroups.get
projects.regions.nodeGroups.resize dataproc.nodeGroups.update

Dataproc のロール

Dataproc IAM ロールとは、1 つ以上の権限をまとめたものです。役割を付与されたユーザーまたはグループは、プロジェクト内の Dataproc リソースに対する操作を行えるようになります。たとえば、Dataproc 閲覧者ロールには、dataproc.*.get 権限と dataproc.*.list 権限が含まれています。これらの権限を付与されたユーザーは、プロジェクト内の Dataproc クラスタ、ジョブ、オペレーションを取得して一覧表示できます。

次の表に、Dataproc IAM ロールと、各ロールに関連付けられた権限を示します。

役割 ID 権限
roles/dataproc.admin dataproc.*.getIamPolicy
dataproc.*.setIamPolicy
dataproc.*.create
dataproc.*.get
dataproc.*.list
dataproc.*.delete
dataproc.*.update
dataproc.clusters.use
dataproc.clusters.start
dataproc.clusters.stop
dataproc.jobs.cancel
dataproc.workflowTemplates.instantiate
dataproc.workflowTemplates.instantiateInline
compute.machineTypes.get
compute.machineTypes.list
compute.networks.get
compute.networks.list
compute.projects.get
compute.regions.get
compute.regions.list
compute.zones.get
compute.zones.list
resourcemanager.projects.get
resourcemanager.projects.list
roles/dataproc.editor dataproc.*.create
dataproc.*.get
dataproc.*.list
dataproc.*.delete
dataproc.*.update
dataproc.clusters.use
dataproc.clusters.start
dataproc.clusters.stop
dataproc.jobs.cancel
dataproc.workflowTemplates.instantiate
dataproc.workflowTemplates.instantiateInline
compute.machineTypes.get
compute.machineTypes.list
compute.networks.get
compute.networks.list
compute.projects.get
compute.regions.get
compute.regions.list
compute.zones.get
compute.zones.list
resourcemanager.projects.get
resourcemanager.projects.list
roles/dataproc.viewer dataproc.*.get
dataproc.*.list
compute.machineTypes.get
compute.regions.get
compute.regions.list
compute.zones.get
resourcemanager.projects.get
resourcemanager.projects.list
roles/dataproc.worker(サービス アカウントの場合のみ) dataproc.agents.*
dataproc.tasks.*
logging.logEntries.create
monitoring.metricDescriptors.create
monitoring.metricDescriptors.get
monitoring.metricDescriptors.list
monitoring.monitoredResourceDescriptors.get
monitoring.monitoredResourceDescriptors.list
monitoring.timeSeries.create
storage.buckets.get
storage.objects.create
storage.objects.get
storage.objects.list
storage.objects.update
storage.objects.delete
storage.objects.getIamPolicy
storage.objects.setIamPolicy

注:

  • 「*」は「クラスタ」、「ジョブ」、「オペレーション」を表します。ただし、dataproc.operations. に関連付けられている権限が getlistdelete だけのものは除きます。
  • Google Cloud コンソールやgcloud CLI Google Cloud CLI を使用して Dataproc クラスタを作成・表示するには、先に挙げた compute権限 が必要または推奨されます。
  • ユーザーがファイルをアップロードできるようにするには、Storage Object Creator の役割を付与します。 ユーザーがジョブ出力を表示できるようにするには、Storage Object Viewer の役割を付与します。 これらの Cloud Storage のロールのいずれかを付与すると、ユーザーは、プロジェクト内の任意のバケットにアクセスできるようになります。
  • ユーザーが Google Cloud Console → Dataproc → クラスタの詳細 の [概要] タブでグラフを表示するには、monitoring.timeSeries.list 権限を持っている必要があります。
  • ユーザーが Google Cloud Console → Dataproc → クラスタの詳細 の VM インスタンス タブでインスタンスのステータスとマスター インスタンス SSH メニューを表示するには、compute.instances.list 権限を持っている必要があります。Compute Engine の役割については、Compute Engine ドキュメント → 利用できる IAM 役割をご覧ください。
  • ユーザー指定のサービス アカウントでクラスタを作成するには、指定したサービス アカウントに、Dataproc Worker ロールによって付与されるすべての権限が必要です。構成された機能によっては、追加の役割が必要になることがあります。 詳細については、サービス アカウントをご覧ください。

プロジェクトの役割

IAM プロジェクトのロールを使用して、権限をプロジェクト レベルで設定することもできます。次の表は、IAM プロジェクトのロールに関連付けられた権限を示したものです。

プロジェクトの役割 権限
プロジェクト閲覧者 状態を変更しない読み取り専用アクション(get、list)に関するすべてのプロジェクト権限
プロジェクト編集者 すべてのプロジェクト閲覧者権限+状態を変更するアクション(create、delete、update、use、cancel、stop、start)に関するすべてのプロジェクト権限
プロジェクト所有者 すべてのプロジェクト編集者権限+プロジェクトに対するアクセス制御を管理(get/set IamPolicy)し、プロジェクト課金をセットアップするための権限

IAM のロールと Dataproc のオペレーションの概要

次の表に、プロジェクトと Dataproc のロールに関連付けられた Dataproc オペレーションを示します。

オペレーション プロジェクト編集者 プロジェクト閲覧者 Dataproc Admin Dataproc 編集者 Dataproc 閲覧者
Dataproc IAM 権限の取得と設定 × × × ×
クラスタの作成 × ×
クラスタのリスト表示
クラスタの詳細取得 1、2 1、2 1、2
クラスタの更新 × ×
クラスタの削除 × ×
クラスタの起動または停止 × ×
ジョブの送信 × 3 3 ×
ジョブのリスト表示
ジョブの詳細取得 4 4 4
ジョブのキャンセル × ×
ジョブの削除 × ×
オペレーションのリスト表示
オペレーションの詳細取得
オペレーションの削除 × ×

注:

  1. ユーザーに monitoring.timeSeries.list 権限があるロールがない場合、パフォーマンス グラフを利用できません。
  2. ユーザーに compute.instances.list 権限があるロールがない場合、クラスタ内の VM のリストにはステータス情報やマスター インスタンスの SSH リンクが含まれません。
  3. ファイルをアップロードするジョブでは、Dataproc のステージング バケットに対する Storage Object Creator ロールまたは書き込みアクセス権がユーザーに必要です。
  4. ユーザーが Storage Object Viewer(ストレージ オブジェクト閲覧者)役割を与えられていない場合またはプロジェクトのステージング バケットへの読み取りアクセス権が付与されていない場合は、ジョブ出力を利用できません。

サービス アカウント

Dataproc API を呼び出してプロジェクトでのアクション(VM インスタンスの作成など)を実行すると、Dataproc は、アクションの実行に必要な権限があるサービス アカウントを使用して、ユーザーの代わりにアクションを実行します。詳細については、Dataproc サービス アカウントをご覧ください。

IAM の管理

IAM ポリシーは、Google Cloud Console、IAM API、Google Cloud CLI を使用して取得と設定ができます。

次のステップ