Identity and Access Management(IAM)を使用すると、プロジェクト リソースへのユーザーとグループのアクセスを制御できます。このドキュメントでは、Managed Service for Apache Spark に関連する IAM の権限と、それらの権限を付与する IAM のロールについて説明します。
Managed Service for Apache Spark の権限
Managed Service for Apache Spark の権限により、サービス アカウントを含むユーザーは、Managed Service for Apache Spark のクラスタ、ジョブ、オペレーション、ワークフロー テンプレートに対するアクションを実行できます。たとえば、dataproc.clusters.create 権限を持つユーザーは、プロジェクトで Managed Service for Apache Spark クラスタを作成できます。通常、権限を付与することはありません。代わりに、ロールを割り当てます。ロールには、1 つ以上の権限が含まれています。
次の表に、Managed Service for Apache Spark API(メソッド)を呼び出すために必要な権限を示します。表は、各 Managed Service for Apache Spark リソース(クラスタ、ジョブ、オペレーション、ワークフロー テンプレート)に関連付けられた API ごとに整理されています。
権限のスコープ: 次の表に示す Managed Service for Apache Spark 権限のスコープは、含まれる Google Cloudプロジェクト(cloud-platform スコープ)です。サービス アカウント権限をご覧ください。
例:
dataproc.clusters.createは、含まれるプロジェクト内の Managed Service for Apache Spark クラスタの作成を許可しますdataproc.jobs.createは、含まれるプロジェクト内の Managed Service for Apache Spark ジョブの Managed Service for Apache Spark クラスタへの送信を許可します。dataproc.clusters.listは、含まれるプロジェクト内の Managed Service for Apache Spark クラスタの詳細の一覧表示を許可します
クラスタ メソッドで必要な権限
| メソッド | 必要な権限 |
|---|---|
| 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 |
注:
- Google Cloud CLI からステータスの更新を取得するために、
dataproc.operations.get権限も必要です。 - Google Cloud CLI からオペレーションの結果を取得するために、
dataproc.clusters.get権限も必要です。 - クラスタに対して自動スケーリング ポリシーを有効にするために
dataproc.autoscalingPolicies.use権限も必要です。
Jobs メソッドで必要な権限
| メソッド | 必要な権限 |
|---|---|
| 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 |
注:
Google Cloud CLI では、
jobs submit、jobs wait、jobs update、jobs delete、jobs killコマンドにdataproc.jobs.get権限も必要です。gcloud CLI では、ジョブを送信するために
dataproc.clusters.get権限も必要です。ユーザーが Managed Service for Apache Spark 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 |
注:
ワークフロー テンプレートの権限は、クラスタおよびジョブの権限に依存しません。ユーザーは
create cluster権限やsubmit job権限がなくても、ワークフロー テンプレートを作成し、インスタンス化できます。Google Cloud CLI では、ワークフローの完了をポーリングするために
dataproc.operations.get権限も必要です。実行中のワークフローをキャンセルするには、
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 |
注:
clusters.patchメソッドのリクエストでクラスタに対して自動スケーリング ポリシーを有効にするために、dataproc.autoscalingPolicies.use権限が必要です。
ノードグループ メソッドで必要な権限
| メソッド | 必要な権限 |
|---|---|
| projects.regions.nodeGroups.create | dataproc.nodeGroups.create |
| projects.regions.nodeGroups.get | dataproc.nodeGroups.get |
| projects.regions.nodeGroups.resize | dataproc.nodeGroups.update |
Managed Service for Apache Spark のロール
Managed Service for Apache Spark IAM ロールとは、1 つ以上の権限をまとめたものです。ロールを付与されたユーザーまたはグループは、プロジェクト内の Managed Service for Apache Spark リソースに対する操作を行えるようになります。たとえば、Managed Service for Apache Spark 閲覧者ロールには、get 権限と list 権限が含まれています。これらの権限を付与されたユーザーは、プロジェクト内の Managed Service for Apache Spark クラスタ、ジョブ、オペレーションを取得して一覧表示できます。
次の表に、Managed Service for Apache Spark クラスタの作成と管理に必要な権限を含むロールを示します。
| ロールを付与する | ロール |
|---|---|
| ユーザー | ユーザーに次のロールを付与します。
|
| サービス アカウント | Managed Service for Apache Spark VM サービス アカウントに Dataproc ワーカーのロールを付与します。 |
次の点にご注意ください。
Cloud Storage、BigQuery、Cloud Logging などの Google Cloud リソースとの間でデータの読み取りと書き込みを行うなど、他のオペレーションに必要な権限を含む追加の事前定義ロールまたはカスタムロールを Managed Service for Apache Spark VM サービス アカウントに付与する必要がある場合があります。
一部のプロジェクトでは、Managed Service for Apache Spark VM サービス アカウントにプロジェクトの編集者ロールが自動的に付与されている場合があります。このロールには、Managed Service for Apache Spark ワーカーのロールの権限に加えて、Managed Service for Apache Spark データプレーン オペレーションに必要のない追加の権限が含まれています。最小権限のセキュリティ ベスト プラクティスの原則に従うには、編集者ロールを Managed Service for Apache Spark ワーカーロールに置き換えます(VM サービス アカウントのロールを表示するをご覧ください)。
ロールを付与する必要がありますか?
組織のポリシーによっては、必要なロールがすでに付与されている場合があります。
ユーザーに付与されたロールを確認する
ユーザーにロールが付与されているかどうかを確認するには、プロジェクト、フォルダ、組織へのアクセスを管理する > 現在のアクセス権を表示するの手順に沿って操作します。
サービス アカウントに付与されているロールを確認する
サービス アカウントにロールが付与されているかどうかを確認するには、IAM サービス アカウントのロールを表示して管理するをご覧ください。
サービス アカウントに付与されているロールを確認する
ユーザーにサービス アカウントのロールが付与されているかどうかを確認するには、サービス アカウントに対するアクセス権の管理 > 現在のアクセス権を表示するの手順に沿って操作します。
Managed Service for Apache Spark のロールと権限を調べる
次のセクションでは、Managed Service for Apache Spark のロールと権限を確認できます。
| Role | Permissions |
|---|---|
Dataproc Administrator( Full control of Dataproc resources. |
|
Dataproc Editor( Provides the permissions necessary for viewing the resources required to manage Managed Service for Apache Spark, including machine types, networks, projects, and zones. Lowest-level resources where you can grant this role:
|
|
Dataproc Viewer( Provides read-only access to Managed Service for Apache Spark resources. Lowest-level resources where you can grant this role:
|
|
Dataproc Hub Agent( Allows management of Dataproc resources. Intended for service accounts running Dataproc Hub instances. |
|
Dataproc Serverless Editor( Permissions needed to run serverless sessions and batches as a user |
|
Dataproc Serverless Node.( Node access to Dataproc Serverless sessions and batches. Intended for service accounts. |
|
Dataproc Serverless Viewer( Permissions needed to view serverless sessions and batches |
|
Dataproc Worker( Provides worker access to Managed Service for Apache Spark resources. Intended for service accounts. |
|
Service agent roles
Service agent roles should only be granted to service agents.
| Role | Permissions |
|---|---|
Dataproc Service Agent( Gives Dataproc Service Account access to service accounts, compute resources, storage resources, and kubernetes resources. Includes access to service accounts. |
|
注:
- Google Cloud コンソール、gcloud CLI、または Google Cloud CLI を使用して Managed Service for Apache Spark クラスタを作成・表示するには、
compute権限が必要または推奨されます。 - ユーザーがファイルをアップロードできるようにするには、
Storage Object Creatorロールを付与します。ユーザーがジョブ出力を表示できるようにするには、Storage Object Viewerロールを付与します。 - ユーザーが Google Cloud コンソール → [Managed Service for Apache Spark] → [クラスタの詳細] の [概要] タブでグラフを表示するには、
monitoring.timeSeries.list権限が必要です。 - ユーザーがGoogle Cloud コンソール → [Managed Service for Apache Spark] → [クラスタの詳細] の [VM インスタンス] タブでインスタンスのステータスとマスター インスタンス SSH メニューを表示するには、
compute.instances.list権限が必要です。Compute Engine のロールについては、Compute Engine ドキュメント → 利用できる IAM ロールをご覧ください。 - ユーザー指定のサービス アカウントでクラスタを作成するには、指定したサービス アカウントに、
Managed Service for Apache Spark Workerロールによって付与されるすべての権限が必要です。これには、Managed Service for Apache Spark のステージング バケットと一時バケットへのアクセスが含まれます。構成された機能によっては、追加のロールが必要になることがあります。詳細については、カスタム VM サービス アカウントを使用してクラスタを作成するをご覧ください。
プロジェクトのロール
IAM プロジェクトのロールを使用して、権限をプロジェクト レベルで設定することもできます。次の表に、IAM プロジェクト ロールに関連付けられている権限を示します。
| プロジェクトのロール | 権限 |
|---|---|
| プロジェクト閲覧者 | 状態を変更しない読み取り専用アクション(get、list)に関するすべてのプロジェクト権限 |
| プロジェクト編集者 | すべてのプロジェクト閲覧者権限と、状態を変更するアクション(create、delete、update、use、cancel)に関するすべてのプロジェクト権限 |
| プロジェクト所有者 | すべてのプロジェクト編集者権限+プロジェクトに対するアクセス制御を管理(get/set IamPolicy)し、プロジェクト課金をセットアップするための権限 |
IAM のロールと Managed Service for Apache Spark のオペレーションの概要
次の表に、プロジェクトと Managed Service for Apache Spark のロールに関連付けられた Managed Service for Apache Spark オペレーションを示します。
| オペレーション | プロジェクト編集者 | プロジェクト閲覧者 | Managed Service for Apache Spark 管理者 | Managed Service for Apache Spark 編集者 | Managed Service for Apache Spark 閲覧者 |
|---|---|---|---|---|---|
| Managed Service for Apache Spark IAM 権限の取得と設定 | × | いいえ | はい | いいえ | × |
| クラスタを作成 | ○ | いいえ | はい | はい | × |
| クラスタのリスト表示 | ○ | はい | はい | はい | ○ |
| クラスタの詳細取得 | ○ | ○ | ○ 1、2 | ○ 1、2 | ○ 1、2 |
| クラスタの更新 | ○ | いいえ | はい | はい | × |
| クラスタの削除 | ○ | いいえ | はい | はい | いいえ |
| クラスタの起動または停止 | はい | いいえ | はい | はい | × |
| ジョブの送信 | ○ | × | ○ 3 | ○ 3 | × |
| ジョブのリスト表示 | ○ | はい | はい | はい | ○ |
| ジョブの詳細取得 | ○ | ○ | ○ 4 | ○ 4 | ○ 4 |
| ジョブのキャンセル | ○ | いいえ | はい | はい | × |
| ジョブの削除 | ○ | いいえ | はい | はい | × |
| オペレーションのリスト表示 | ○ | はい | はい | はい | ○ |
| オペレーションの詳細取得 | ○ | はい | はい | はい | ○ |
| オペレーションの削除 | ○ | いいえ | はい | はい | いいえ |
注:
- ユーザーに
monitoring.timeSeries.list権限を含むロールがない限り、パフォーマンス グラフを利用できません。 - ユーザーに
compute.instances.list権限を含むロールがない限り、クラスタ内の VM のリストにステータス情報やマスター インスタンスの SSH リンクが含まれません。 - ファイルをアップロードするジョブでは、ユーザーに
Storage Object Creatorロールまたは Managed Service for Apache Spark ステージング バケットへの書き込みアクセス権が必要です。 - ユーザーが Storage オブジェクト閲覧者ロールを与えられていない場合、またはプロジェクトのステージング バケットへの読み取りアクセス権が付与されていない場合は、ジョブ出力を利用できません。
Managed Service for Apache Spark VM のアクセス スコープ
VM アクセス スコープと IAM ロールが連携して、 Google CloudAPI への VM によるアクセスを制限します。たとえば、クラスタ VM に https://www.googleapis.com/auth/storage-full スコープのみが付与されている場合、クラスタ VM 上で実行されるアプリケーションは Cloud Storage API を呼び出すことができますが、広範な権限を含む BigQuery のロールが付与された VM サービス アカウントとして実行しても、BigQuery にリクエストを送信することはできません。
VM に広範な cloud-platform スコープ(https://www.googleapis.com/auth/cloud-platform)を付与してから、特定の IAM ロールを VM サービス アカウントに付与して VM アクセスを制限するのがベスト プラクティスです(スコープのベスト プラクティスをご覧ください)。
Managed Service for Apache Spark VM のデフォルトのスコープ。クラスタの作成時にスコープが指定されていない場合(gcloud dataproc cluster create --scopes を参照)、Managed Service for Apache Spark VM には次のデフォルトのスコープセットが適用されます。
https://www.googleapis.com/auth/cloud-platform (clusters created with image version 2.1+).
https://www.googleapis.com/auth/bigquery
https://www.googleapis.com/auth/bigtable.admin.table
https://www.googleapis.com/auth/bigtable.data
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.full_control
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write
クラスタの作成時にスコープを指定した場合、クラスタ VM には指定したスコープおよび(指定しない場合でも)次の最小の必要なスコープセットが設定されます。
https://www.googleapis.com/auth/cloud-platform (clusters created with image version 2.1+).
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write
IAM 許可ポリシーの管理
プリンシパルに IAM ロールを付与するには、許可ポリシーを使用します。許可ポリシーは、 Google Cloud コンソール、IAM API、Google Cloud CLI を使用して取得と設定ができます。
- Google Cloud コンソールについては、 Google Cloud コンソールによるアクセス制御をご覧ください。
- API については、API によるアクセス制御をご覧ください。
- Google Cloud CLI については、Google Cloud CLI によるアクセス制御をご覧ください。
次のステップ
- Managed Service for Apache Spark のプリンシパルとロールについて学習する
- Managed Service for Apache Spark のきめ細かい IAM について学習する
- IAM の詳細について学習する。
- Managed Service for Apache Spark のサービス アカウントについて学習する