このガイドでは、Spark デベロッパー、Spark 管理者、Spark 閲覧者が、Managed Service for Apache Spark サーバーレスのバッチ ワークロードとインタラクティブ セッションの使用を開始するために必要な権限を取得する方法について説明します。
| ペルソナ | 組織内での役割 | IAM に求めるもの |
|---|---|---|
| Spark デベロッパー | プラットフォームのビルダーとコンシューマー。PySpark ジョブと Spark ジョブの作成と実行、ノートブックとセッションでの開発、データセットの読み取りと書き込み、ワークロードのモニタリングとトラブルシューティングを行います。データ エンジニア、データ サイエンティスト、デベロッパーが含まれます。 | ワークロードの送信、実行、モニタリング、トラブルシューティングを行う権限と、ジョブがアクセスするデータの読み取りと書き込みを行う権限。 |
| Spark 管理者 | プラットフォームのオーナーと管理者。プロジェクトの設定、ワークロードの認証方法の決定、Spark デベロッパーのオンボーディング、共有サービス アカウントの管理、組織のガードレールと最小権限の適用を行います。プラットフォーム管理者とも呼ばれます。 | 他のユーザーにアクセス権を付与し、実行 ID(エンドユーザーの認証情報または共有サービス アカウント)を構成し、プロジェクト全体のサーバーレス リソースを管理する権限。 |
| Spark ビューア | プラットフォームのオブザーバーと監査担当者。ワークロードの送信や変更を行わずに、ジョブの完了、実行履歴、指標、ダッシュボードを追跡します。アナリスト、プロジェクト マネージャー、FinOps、コンプライアンス監査人が含まれます。 | バッチ、セッション、オペレーション、ステータス ダッシュボードを表示するための読み取り専用権限。 |
ランタイム バージョンを選択する
推奨されるランタイム バージョンは、ワークロードが実行される Apache Spark のバージョンによって異なります。
ランタイム
3.x(推奨): Spark4を使用し、オンボーディングと使用方法が簡素化されています。デフォルトでは、ワークロードはユーザーの EUC を使用して送信ユーザーとして実行されます。これには、ユーザーに 1 つの IAM ロールを付与する必要があります。管理者は、より高度な使用のためにワークロード カスタム サービス アカウントを構成できます。ランタイム
2.x: Spark3.5を使用し、個別の送信者アカウントとワークロード アカウントを使用します。デフォルトでは、送信者はユーザー ID で、Compute Engine のデフォルトのサービス アカウントはワークロード ID です。管理者は、きめ細かいアクセス制御のためにカスタム ワークロード サービス アカウントを構成できます。
詳細については、Managed Service for Apache Spark ランタイム リリースをご覧ください。
機能の比較
ランタイム 3.x アップグレードでは、2.x コンポーネントと機能がアップグレードされ、設定が簡素化されます。
| 機能とワークフロー | ランタイム 3.x(推奨) |
ランタイム 2.x |
|---|---|---|
| Apache Spark のバージョン | Spark 4 | Spark 3.5(およびそれ以前の 3.x) |
| インタラクティブな開発 | Spark Connect セッション(業界標準のインタラクティブ Spark クライアント) | Jupyter セッション |
| R バッチ ワークロード | sparklyr |
SparkR バッチ |
| 実行 ID | エンドユーザー認証情報(EUC)1 | サービス アカウント 1 |
| ジョブ ステージング用のストレージ | 不要(内部で管理) | Cloud Storage ステージング バケット |
| ログの出力形式 | 構造化された JSON 形式(jsonPayload) |
プレーンテキスト形式(textPayload) |
1 ワークロードまたはセッションにカスタム サービス アカウントが指定されていない限り、ランタイム 3.x は送信者のエンドユーザー認証情報(EUC)にデフォルト設定されます。ワークロードまたはセッションにカスタム サービス アカウントが指定されていない限り、ランタイム 2.x はデフォルトで Compute Engine のデフォルト サービス アカウントになります。
一般的なデータロールとサービスロール
通常、Managed Service for Apache Spark は、他のGoogle Cloud サービスからの読み取りと書き込みを行います。このセクションでは、一般的にアクセスされるサービスに関連付けられているロールを一覧表示します。
- ランタイム
3.x(デフォルトの EUC ID): Spark デベロッパー(ユーザーまたはグループ)にロールを付与します。 - ランタイム
2.x: ワークロード サービス アカウント(Compute Engine のデフォルトのサービス アカウントまたはカスタム ワークロード サービス アカウント)にロールを付与します。
| サービスまたは API | ロール | 目的 |
|---|---|---|
| Cloud Storage | roles/storage.objectViewerroles/storage.objectAdmin |
入力データとステージングされたスクリプトを読み取ります。 出力データを書き込みます。 |
| BigLake と Lakehouse ランタイム カタログ | roles/biglake.viewerroles/biglake.editorroles/biglake.admin |
BigLake REST カタログ(Lakehouse REST カタログ(LRC))を使用して、Apache Iceberg や Delta Lake などのオープン テーブル形式のクエリと管理を行います。 |
| Bigtable | roles/bigtable.readerroles/bigtable.user |
Bigtable テーブルの読み取り。 Bigtable データの読み取りと書き込み。 |
| Dataproc Metastore(DPMS) | roles/metastore.metadataViewerroles/metastore.editor |
Hive メタデータを読み取る。 メタデータ スキーマとテーブルを管理する。 DPMS は以前のメタストアです。BigLake Lakehouse REST カタログ(LRC)を使用することをおすすめします。 |
BigQuery には、多くのきめ細かい IAM ロールとリソースレベルの ACL が用意されています。詳細については、BigQuery の IAM ロールと権限をご覧ください。
ロールを付与
次のセクションでは、Managed Service for Apache Spark サーバーレス 3.x と 2.x のバッチ ワークロードとインタラクティブ セッションの設定、送信、モニタリングに関連付けられた各ペルソナにロールを付与する方法について説明します。
Runtime 3.x
デフォルトでは、3.x ワークロードは、送信ユーザーのエンドユーザー認証情報(EUC)で実行されます。管理者はユーザーに 1 つのロールを付与します。共有サービス アカウントやステージング バケットは必要ありません。管理者は、専用のサービス ID が必要な場合にカスタム サービス アカウントを構成できます。
デベロッパー
Spark デベロッパー(ランタイム 3.x)
Spark デベロッパーは、ユーザー認証情報を使用してランタイム 3.x を使用し、Spark ワークロードの開発、送信、モニタリング、トラブルシューティングを行い、データに直接アクセスできます。
サーバーレス編集者のロールをリクエストします。プロジェクトに対する
roles/dataproc.serverlessEditorを付与するよう管理者に依頼してください。gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEVELOPER_EMAIL" \ --role="roles/dataproc.serverlessEditor"このロールを使用すると、Spark バッチ ワークロードとインタラクティブな Spark Connect セッションの送信、モニタリング、トラブルシューティング、キャンセルを行うことができます。
データとサービスにアクセスします。ワークロードはユーザーとして実行されるため、Spark アプリケーションが使用するサービスとデータセットにアクセスできる ID が必要です(一般的なデータロールとサービスロールをご覧ください)。
たとえば、入力 Cloud Storage バケットに対する読み取りアクセス権を自分に付与します。
gcloud storage buckets add-iam-policy-binding gs://INPUT_BUCKET \ --member="user:DEVELOPER_EMAIL" \ --role="roles/storage.objectViewer"テスト ワークロードを送信します。テスト バッチ ワークロードを送信して、設定を確認します。
gcloud dataproc batches submit spark \ --region=REGION \ --version=3.0 \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ -- 1000注:
エンドユーザー認証情報(EUC)で
3.xワークロードを初めて送信する場合は、1 回限りの OAuth 同意を求められます。同意を付与してから、ワークロードを再送信します。プロジェクトに
defaultVPC ネットワークがない場合は、subnetフラグまたはフィールドを使用してリージョン サブネットを指定します(Managed Service for Apache Spark サーバーレス ネットワーク構成をご覧ください)。PySpark ワークロードの実行と、Cloud Storage、BigLake、BigQuery 全体で必要な権限の構成のエンドツーエンドの例については、データを変換して Apache Iceberg テーブルに書き込むをご覧ください。
カスタム ワークロード サービス アカウント(ランタイム 3.x)
組織で、エンドユーザーの認証情報ではなく、監査可能な専用の ID でワークロードを実行する必要がある場合は、ランタイム 3.x を使用するカスタム サービス アカウントを使用します(IAM サービス アカウントのベスト プラクティスをご覧ください)。
カスタム サービス アカウントとしてワークロードを実行する権限を取得します。カスタム サービス アカウントに対する
roles/iam.serviceAccountUserを付与するよう管理者に依頼します。gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"カスタム サービスを指定します。
gcloud dataproc batches submit spark \ --region=REGION \ --service-account=WORKLOAD_SA_EMAIL \ --version=3.0 \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ -- 1000データセットへのアクセス権を付与します。カスタム サービス アカウントを使用する場合は、データレベルのロールを
WORKLOAD_SA_EMAILに直接付与します(一般的なデータロールとサービスロールをご覧ください)。
管理者
Spark 管理者(ランタイム 3.x)
Spark 管理者は、プロジェクトを設定し、ワークロードの認証方法を決定して、Spark デベロッパーにアクセス権を付与します。
ワークロードは、default という名前の VPC サブネットを自動的に使用します。プロジェクトに default ネットワークがない場合や、カスタム VPC を使用している場合は、Managed Service for Apache Spark サーバーレス ネットワーク構成で、ワークロードとセッションのサブネットを設定して指定します。
エンドユーザー認証情報を使用してランタイム 3.x を有効にする(推奨)
これは、最小権限でメンテナンスの負担が最も少ない設定です。各 Spark デベロッパーは、ユーザー ID としてワークロードを実行します。管理者は、ワークロード サービス アカウントを設定して管理する必要はありません。
Spark デベロッパーに
roles/dataproc.serverlessEditorを付与します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEVELOPER_EMAIL" \ --role="roles/dataproc.serverlessEditor"読み取り専用閲覧者に
roles/dataproc.serverlessViewerを付与します。このロールは、ワークロードの送信や変更を行わずにジョブのステータスとログをモニタリングする必要がある監査担当者、ダッシュボードの利用者、チームメンバーに付与します。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:VIEWER_EMAIL" \ --role="roles/dataproc.serverlessViewer"デベロッパーがデータにアクセスできるようにします。
デフォルトでは、ランタイム
3.xワークロードは送信ユーザーとして実行されます。Spark デベロッパーまたは Spark デベロッパーを含む Google グループに、roles/storage.objectViewerやroles/storage.objectAdminなどのデータアクセス ロールを付与します(一般的なデータロールとサービスロールをご覧ください)。
ワークロード カスタム サービス アカウントを有効にする(ランタイム 3.x)
エンドユーザーの認証情報ではなく、監査可能な専用の ID でワークロードを実行する必要がある場合は、ランタイム 3.x を使用するカスタム サービス アカウントを使用します(IAM サービス アカウントのベスト プラクティスをご覧ください)。
ワークロードのカスタム サービス アカウントに
roles/iam.serviceAccountUserを付与します。gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"ワークロードのカスタム サービス アカウントに
roles/dataproc.serverlessNodeを付与します。このロールにより、サービス アカウントはコンピューティング ノードプールを管理し、ワークロードの実行中に Spark アプリケーションと通信できます。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:WORKLOAD_SA_EMAIL" \ --role="roles/dataproc.serverlessNode"アプリケーション データへのアクセス権を付与します。
ワークロード サービス アカウントにデータレベルのロールを直接付与して、アプリケーション データセットを読み取り、書き込めるようにします(一般的なデータロールとサービスロールをご覧ください)。ワークロードでステージングされたスクリプトまたはカスタム JAR を使用する場合は、対応する Cloud Storage バケットに対する読み取りアクセス権も付与します。
送信者のカスタム サービス アカウントを有効にする(ランタイム 3.x)
自動システム(Managed Service for Apache Airflow、Cloud Scheduler、CI / CD パイプラインなど)がインタラクティブなユーザーなしでワークロードを送信する場合は、送信者のカスタム サービス アカウントを使用します。
このシナリオでは、送信者のサービス アカウントがジョブを開始する
gcloudコマンドを実行します。以下にgcloudを使用した例を示します。gcloud dataproc batches submit spark \ --service-account=WORKLOAD_SA_EMAIL \ ...ワークロード サービス アカウントは、コンピューティング ノードで Spark コードを実行し、アプリケーション データセットにアクセスします。
- 送信者のカスタム サービス アカウントに
roles/dataproc.serverlessEditorを付与します。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SUBMITTER_SA_EMAIL" \ --role="roles/dataproc.serverlessEditor"送信者のカスタム サービス アカウントでランタイム
3.xを使用する場合、ワークロードを実行するにはカスタム ワークロード サービス アカウントが必要です。インタラクティブなエンドユーザーが存在しないため、ランタイムはエンドユーザーの認証情報(EUC)にフォールバックできません。ジョブは、指定されたワークロード サービス アカウント(--service-account)として実行する必要があります。- 送信者のカスタム サービス アカウントに
ワークロードのカスタム サービス アカウントに
roles/iam.serviceAccountUserを付与します。gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="serviceAccount:SUBMITTER_SA_EMAIL" \ --role="roles/iam.serviceAccountUser"ワークロードのカスタム サービス アカウントを構成します。
WORKLOAD_SA_EMAILにroles/dataproc.serverlessNodeとアプリケーション データロールを付与します。
Spark 管理者ロールのリファレンス(ランタイム 3.x)
次の表に、ランタイム 3.x で付与するロールの概要を示します。
| 送信者 | Workload Identity | 送信者に付与 | ワークロード サービス アカウントに付与する |
|---|---|---|---|
| エンドユーザー(デフォルト) | エンドユーザー(EUC) | roles/dataproc.serverlessEditor(+ ユーザーのデータロール) |
(なし - SA は使用されていません) |
| エンドユーザー | カスタム SA | カスタム SA の roles/dataproc.serverlessEditor + roles/iam.serviceAccountUser |
roles/dataproc.serverlessNode + データロール |
| カスタム SA(自動化) | カスタム SA | カスタム SA の roles/dataproc.serverlessEditor + roles/iam.serviceAccountUser |
roles/dataproc.serverlessNode + データロール |
閲覧者
Spark ビューア(ランタイム 3.x)
Spark 閲覧者は、ワークロードを送信または変更することなく、バッチ ワークロード、インタラクティブ セッション、実行指標、ログ、ステータス ダッシュボードを表示します。
roles/dataproc.serverlessViewer を付与するよう管理者に依頼してください。
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="user:VIEWER_EMAIL" \
--role="roles/dataproc.serverlessViewer"
このロールは、サーバーレス バッチ ワークロード、インタラクティブ セッション、オペレーション ステータスを表示するための読み取り専用アクセス権を付与します。
詳細な権限
詳細な権限(ランタイム 3.x)
このセクションでは、ランタイム 3.x に関連付けられている IAM ロールに含まれる IAM 権限を一覧表示します。
サーバーレス編集者のロール(roles/dataproc.serverlessEditor)
このロールとその権限により、ランタイム 3.x サーバーレス バッチ ワークロードとインタラクティブ セッションに対する読み取り / 書き込みアクセス権が付与されます。
| 権限 | 説明 |
|---|---|
dataproc.batches.create |
新しいバッチ ワークロードを作成して送信します。 |
dataproc.batches.get |
バッチ ワークロードのステータスと詳細を取得します。 |
dataproc.batches.list |
プロジェクトまたはリージョン内のすべてのバッチ ワークロードを一覧表示します。 |
dataproc.batches.delete |
完了または終了したバッチを削除します。 |
dataproc.batches.cancel |
実行中のバッチ ワークロードをキャンセルします。 |
dataproc.sessions.create |
インタラクティブな Spark Connect セッションを作成します。 |
dataproc.sessions.get |
セッションのステータスと詳細を取得します。 |
dataproc.sessions.list |
プロジェクトまたはリージョン内のすべてのセッションを一覧表示します。 |
dataproc.sessions.delete |
終了したセッションを削除します。 |
dataproc.sessions.terminate |
実行中のインタラクティブ セッションを終了します。 |
dataproc.operations.get |
非同期オペレーションのステータスをポーリングします(gcloud CLI で必要)。 |
サーバーレス ノードのロール(roles/dataproc.serverlessNode)
ランタイム 3.x カスタム ワークロード サービス アカウントに、ノードプール管理と内部 Spark 通信権限を提供します。
ランタイム 3.x でカスタム ワークロード サービス アカウントを使用する場合は、このロールとその権限が必要です。デフォルトの 3.x エンドユーザー認証情報(EUC)で実行されるワークロードは、ワークロード サービス アカウントを使用しません。
| 権限 | 説明 |
|---|---|
dataproc.batches.sparkApplicationWrite |
バッチ ワークロードの Spark アプリケーション通信。 |
dataproc.sessions.sparkApplicationWrite |
インタラクティブ セッションの Spark アプリケーション通信。 |
dataprocrm.nodePools.create |
コンピューティング ノードプールを作成します。 |
dataprocrm.nodePools.delete |
コンピューティング ノードプールを削除します。 |
dataprocrm.nodePools.resize |
ノードプールを動的にスケーリングします。 |
dataprocrm.nodePools.get |
ノードプールのステータスを読み取ります。 |
dataprocrm.nodePools.list |
ノードプールを一覧表示します。 |
dataprocrm.nodePools.update |
ノードプールの構成を更新します。 |
dataprocrm.nodePools.deleteNodes |
プールから特定のノードを削除します。 |
dataprocrm.nodes.list |
プール内のノードを一覧表示します。 |
dataprocrm.nodes.delete |
タスクの完了時にノードを削除します。 |
dataprocrm.nodes.get |
ノードのステータスを読み取ります。 |
dataprocrm.nodes.heartbeat |
ノードの健全性とハートビートを報告します。 |
dataprocrm.nodes.mintOAuthToken |
ノード オペレーション用の OAuth トークンを生成します。 |
dataprocrm.operations.get |
インフラストラクチャ オペレーションのステータスを確認します。 |
サーバーレス閲覧者のロール(roles/dataproc.serverlessViewer)
このロールとその権限は、送信者のカスタム サービス アカウントでランタイム 3.x を使用する場合に必要です。これらは、ランタイム 3.x サーバーレス バッチ ワークロード、インタラクティブ セッション、オペレーション ステータスに対する読み取り専用アクセス権を提供します。
| 権限 | 説明 |
|---|---|
dataproc.batches.get |
バッチ ワークロードのステータスと詳細を読み取ります。 |
dataproc.batches.list |
バッチ ワークロードを一覧表示します。 |
dataproc.sessions.get |
セッションのステータスと詳細を読み取ります。 |
dataproc.sessions.list |
セッションの一覧を取得する。 |
dataproc.operations.get |
オペレーションのステータスを読み取ります。 |
dataproc.operations.list |
オペレーションを一覧表示します。 |
サービス アカウントの委任ロール(roles/iam.serviceAccountUser)
ユーザーまたは自動システムが、カスタム サービス アカウントとしてワークロードを接続して実行できるようにします。ワークロードは、送信するユーザーのエンドユーザー認証情報(EUC)ではなく、そのサービス アカウントに付与された権限とリソース アクセス権で実行されます。
| 権限 | 説明 |
|---|---|
iam.serviceAccounts.actAs |
送信者が指定されたサービス アカウントとしてワークロードを実行できるようにします。 |
Runtime 2.x
デフォルトでは、ランタイム 2.x ワークロードは Compute Engine のデフォルトのサービス アカウントとして実行されます。送信者(ユーザーまたは自動システム)は、ワークロードまたはセッションの実行時にこのアカウントとして機能します。
デベロッパー
Spark デベロッパー(ランタイム 2.x)
ランタイム 2.x を使用する Spark デベロッパーは、Spark ワークロードの開発、送信、モニタリング、トラブルシューティングを行い、データにアクセスします。ワークロードはユーザー ID ではなくサービス アカウントとして実行されるため、管理者は IAM 編集者ロールとサービス アカウント ユーザーロールを付与して、ワークロード サービス アカウントとしてワークロードを実行できるようにします。
編集者ロールをリクエストします。プロジェクトに対する
roles/dataproc.editor権限を付与するよう管理者に依頼してください。gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEVELOPER_EMAIL" \ --role="roles/dataproc.editor"委任権限をリクエストします。ワークロード サービス アカウントに対する
roles/iam.serviceAccountUser権限を付与するよう管理者に依頼してください。デフォルトのワークロード サービス アカウントは、Compute Engine のデフォルトのサービス アカウント
PROJECT_NUMBER-compute@developer.gserviceaccount.comです。gcloud iam service-accounts add-iam-policy-binding \ PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"ステージング バケットへのアクセス権を取得します。ランタイム
2.x送信者には、スクリプトと JAR をアップロードする権限が必要です。また、ワークロード サービス アカウントには、一時ファイルとログを管理する権限が必要です。これらの権限は、roles/storage.objectAdminロールに含まれています。# Grant submitter access to upload staged files gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEVELOPER_EMAIL" \ --role="roles/storage.objectAdmin" # Grant workload service account access for staging, temporary files, and logs gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/storage.objectAdmin"テスト バッチ ワークロードを送信します。テスト バッチ ワークロードを送信して、設定を確認します。
gcloud dataproc batches submit spark \ --region=REGION \ --version=2.2 \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ -- 1000注:
ワークロードはワークロード サービス アカウントとして実行されるため、ジョブが読み取りと書き込みを行うデータにアクセスする必要があるのは、ユーザー アカウントではなく、そのアカウントです(一般的なデータロールとサービスロールをご覧ください)。
プロジェクトに
defaultVPC ネットワークがない場合は、subnetフラグまたはフィールドを使用してリージョン サブネットを指定します(Managed Service for Apache Spark サーバーレス ネットワーク構成をご覧ください)。PySpark ワークロードの実行と、Cloud Storage、BigLake、BigQuery 全体で必要な権限の構成のエンドツーエンドの例については、データを変換して Apache Iceberg テーブルに書き込むをご覧ください。
カスタム ワークロードのカスタム サービス アカウント(ランタイム 2.x)
組織で、共有の Compute Engine のデフォルトの service_account ではなく、専用の監査可能な ID でワークロードを実行する必要がある場合は、カスタム サービス アカウントを使用します(IAM サービス アカウントのベスト プラクティスをご覧ください)。
カスタム サービス アカウントとしてワークロードを実行する権限を取得します。カスタム サービス アカウントに対する
roles/iam.serviceAccountUserを付与するよう管理者に依頼します。gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"ワークロードを送信するときに、
--service-accountフラグを使用してカスタム サービス アカウントを指定します。gcloud dataproc batches submit spark \ --region=REGION \ --service-account=WORKLOAD_SA_EMAIL \ --version=2.2 \ --class=org.apache.spark.examples.SparkPi \ --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \ -- 1000データセットへのアクセス: ワークロードがデータセットにアクセスできない場合は、ワークロード カスタム サービス アカウント(ユーザー アカウントではない)に必要なデータアクセス ロールを付与します(一般的なデータロールとサービスロールをご覧ください)。
管理者
Spark 管理者(ランタイム 2.x)
Spark 管理者は、プロジェクトを設定し、サービス アカウントを構成して、Spark デベロッパーにアクセス権を付与します。
ワークロードは、default という名前の VPC サブネットを自動的に使用します。プロジェクトに default ネットワークがない場合や、カスタム VPC を使用している場合は、Managed Service for Apache Spark サーバーレス ネットワーク構成で、ワークロードとセッションのサブネットを設定して指定します。
デフォルトのランタイム 2.x を有効にする
デフォルトのランタイム 2.x では、ワークロードは Compute Engine のデフォルトのサービス アカウントとして実行されます。
デベロッパーに
roles/dataproc.editorを付与します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member="user:DEVELOPER_EMAIL" \ --role="roles/dataproc.editor"デフォルトのサービス アカウントに
roles/iam.serviceAccountUserを付与します。gcloud iam service-accounts add-iam-policy-binding \ PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"ワークロード サービス アカウントに
roles/dataproc.workerを付与します。このロールにより、サービス アカウントは VM エージェントの登録、コンピューティング タスクのリースと実行、Cloud Logging と Cloud Monitoring へのログと指標の出力を行うことができます。
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/dataproc.worker"ステージング バケット ストレージに対する
roles/storage.objectAdminを付与します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/storage.objectAdmin"ワークロード サービス アカウントにデータセットへのアクセス権を付与します。
ワークロード サービス アカウントにデータレベルのロールを付与して、Spark アプリケーション データセットにアクセスできるようにします(一般的なデータロールとサービスロールをご覧ください)。
ワークロード カスタム サービス アカウントを有効にする(ランタイム 2.x)
共有の Compute Engine デフォルト サービス アカウントを使用する代わりに、ランタイム 2.x でワークロード カスタム サービス アカウントを使用してワークロードを分離します。
カスタム サービス アカウントに対する
roles/iam.serviceAccountUserロールをデベロッパーに付与します。gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="user:DEVELOPER_EMAIL" \ --role="roles/iam.serviceAccountUser"カスタム サービス アカウントに
roles/dataproc.workerロールを付与します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:WORKLOAD_SA_EMAIL" \ --role="roles/dataproc.worker"アプリケーション データとステージングへのアクセス権を付与します。
データレベルのロールをワークロード カスタム サービス アカウントに直接付与し(一般的なデータロールとサービスロールを参照)、ステージング バケットと一時バケットに対する
roles/storage.objectAdminを付与します。
送信者のカスタム サービス アカウントを有効にする(ランタイム 2.x)
自動化システム(Managed Service for Apache Airflow、Cloud Scheduler、CI / CD パイプラインなど)がインタラクティブなユーザーなしでワークロードを送信する場合は、送信者のカスタム サービス アカウントを使用します。
送信者サービス アカウントに
roles/dataproc.editorを付与します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SUBMITTER_SA_EMAIL" \ --role="roles/dataproc.editor"ワークロード サービス アカウントに
roles/iam.serviceAccountUserを付与します。gcloud iam service-accounts add-iam-policy-binding \ WORKLOAD_SA_EMAIL \ --member="serviceAccount:SUBMITTER_SA_EMAIL" \ --role="roles/iam.serviceAccountUser"ワークロード サービス アカウントを構成します。
WORKLOAD_SA_EMAILにroles/dataproc.workerとデータセットへのアクセス権を付与します。
Spark 管理者ロールのリファレンス(ランタイム 2.x)
次の表に、ランタイム 2.x で付与する IAM ロールの概要を示します。
| 送信者 | Workload Identity | 送信者に付与 | ワークロード サービス アカウントに付与する |
|---|---|---|---|
| エンドユーザー(デフォルト) | Compute Engine のデフォルトの SA | デフォルトの SA の roles/dataproc.editor + roles/iam.serviceAccountUser |
roles/dataproc.worker + roles/storage.objectAdmin + データロール |
| エンドユーザー | カスタム SA | カスタム SA の roles/dataproc.editor + roles/iam.serviceAccountUser |
roles/dataproc.worker + roles/storage.objectAdmin + データロール |
| カスタム SA(自動化) | カスタム SA | カスタム SA の roles/dataproc.editor + roles/iam.serviceAccountUser |
roles/dataproc.worker + roles/storage.objectAdmin + データロール |
閲覧者
Spark ビューア(ランタイム 2.x)
Spark 閲覧者は、ワークロードを送信または変更することなく、バッチ ワークロード、インタラクティブ セッション、実行指標、ログ、ステータス ダッシュボードを表示します。
管理者に roles/dataproc.viewer の付与を依頼してください。
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="user:VIEWER_EMAIL" \
--role="roles/dataproc.viewer"
このロールは、クラスタ、ジョブ、バッチ、セッション、オペレーションなどの Managed Service for Apache Spark リソースに対する読み取り専用アクセス権を付与します。
詳細な権限
詳細な権限(ランタイム 2.x)
このセクションでは、ランタイム 2.x に関連付けられた IAM ロールに含まれる IAM 権限を一覧表示します。
編集者のロール(roles/dataproc.editor)
このロールは、ランタイム 2.x サーバーレス ワークロードとセッション、Compute Engine 上の Managed Service for Apache Spark クラスタとジョブを制御します。
| 権限 | サーバーレスに必要 | 説明 |
|---|---|---|
dataproc.batches.create |
はい | 新しいバッチ ワークロードを作成して送信します。 |
dataproc.batches.get |
はい | バッチ ワークロードのステータスと詳細を取得します。 |
dataproc.batches.list |
はい | プロジェクトまたはリージョン内のすべてのバッチ ワークロードを一覧表示します。 |
dataproc.batches.delete |
はい | 完了または終了したバッチを削除します。 |
dataproc.batches.cancel |
はい | 実行中のバッチ ワークロードをキャンセルします。 |
dataproc.sessions.create |
はい | インタラクティブ セッションを作成します。 |
dataproc.sessions.get |
はい | セッションのステータスと詳細を取得します。 |
dataproc.sessions.list |
はい | プロジェクトまたはリージョン内のすべてのセッションを一覧表示します。 |
dataproc.sessions.delete |
はい | 終了したセッションを削除します。 |
dataproc.sessions.terminate |
はい | 実行中のインタラクティブ セッションを終了します。 |
dataproc.operations.get |
はい | 非同期オペレーションのステータスをポーリングします(gcloud CLI で必要)。 |
compute.networks.get |
はい | VPC ネットワークの構成を表示します。 |
compute.networks.list |
はい | 使用可能な VPC ネットワークとサブネットを一覧表示します。 |
dataproc.clusters.* |
いいえ(クラスタのみ) | Compute Engine ベースの Managed Service for Apache Spark クラスタを作成、管理、使用します。 |
dataproc.jobs.* |
いいえ(クラスタのみ) | Compute Engine ベースの Managed Service for Apache Spark クラスタでジョブを送信して管理します。 |
dataproc.autoscalingPolicies.* |
いいえ(クラスタのみ) | Compute Engine ベースのクラスタの自動スケーリング ポリシー。 |
dataproc.nodeGroups.* |
いいえ(クラスタのみ) | Compute Engine ベースのクラスタのカスタム ノードグループ。 |
dataproc.workflowTemplates.* |
いいえ(クラスタのみ) | Compute Engine ベースのクラスタのテンプレート ワークフロー。 |
compute.machineTypes.* |
いいえ(クラスタのみ) | Compute Engine ベースのクラスタのマシンタイプ メタデータ。 |
ワーカーのロール(roles/dataproc.worker)
このロールは、ランタイム 2.x のワークロード実行権限を提供します。
| 権限 | 説明 |
|---|---|
dataproc.agents.create |
VM に VM エージェントを登録します。 |
dataproc.agents.get |
エージェントの状態を読み取ります。 |
dataproc.agents.update |
エージェントの状態を更新します。 |
dataproc.agents.delete |
完了したらエージェントの登録を解除します。 |
dataproc.tasks.lease |
実行するコンピューティング タスクをリースします。 |
dataproc.tasks.reportStatus |
タスクの実行ステータスを報告します。 |
storage.objects.create |
ステージング データ、一時ファイル、ログを書き込みます。 |
storage.objects.delete |
一時ファイルをクリーンアップする。 |
storage.objects.get |
ブートスクリプトとステージング済みファイルを読み取ります。 |
storage.objects.list |
ステージング バケットと一時バケットの内容を一覧表示します。 |
閲覧者のロール(roles/dataproc.viewer)
このロールは、すべての Managed Service for Apache Spark リソースに対する読み取り専用アクセス権を付与します。
| 権限 | サーバーレスに必要 | 説明 |
|---|---|---|
dataproc.batches.get |
はい | バッチ ワークロードのステータスと詳細を読み取ります。 |
dataproc.batches.list |
はい | プロジェクトまたはリージョン内のすべてのバッチ ワークロードを一覧表示します。 |
dataproc.sessions.get |
はい | セッションのステータスと詳細を読み取ります。 |
dataproc.sessions.list |
はい | プロジェクトまたはリージョン内のすべてのセッションを一覧表示します。 |
dataproc.operations.get |
はい | 非同期オペレーションのステータスを読み取ります。 |
dataproc.operations.list |
はい | プロジェクトまたはリージョンのオペレーションを一覧表示します。 |
dataproc.clusters.get |
いいえ(クラスタのみ) | クラスタの構成とステータスを表示します。 |
dataproc.clusters.list |
いいえ(クラスタのみ) | プロジェクトまたはリージョン内のクラスタを一覧表示します。 |
dataproc.jobs.get |
いいえ(クラスタのみ) | クラスタのジョブの詳細とステータスを表示します。 |
dataproc.jobs.list |
いいえ(クラスタのみ) | クラスタのジョブを一覧表示します。 |
dataproc.autoscalingPolicies.get |
いいえ(クラスタのみ) | 自動スケーリング ポリシーの詳細を表示します。 |
dataproc.autoscalingPolicies.list |
いいえ(クラスタのみ) | 自動スケーリング ポリシーを一覧表示します。 |
dataproc.workflowTemplates.get |
いいえ(クラスタのみ) | ワークフロー テンプレートの詳細を表示します。 |
dataproc.workflowTemplates.list |
いいえ(クラスタのみ) | ワークフロー テンプレートを一覧表示します。 |
サービス アカウントの委任ロール(roles/iam.serviceAccountUser)
ユーザーまたは自動システムが、Compute Engine のデフォルトのサービス アカウントまたはカスタム サービス アカウントとしてワークロードを接続して実行できるようにします。ワークロードは、そのサービス アカウントに付与された権限とリソース アクセス権で実行されます。
| 権限 | 説明 |
|---|---|
iam.serviceAccounts.actAs |
送信者が指定されたサービス アカウントとしてワークロードを実行できるようにします。 |
次のステップ
- PySpark とサーバーレス Spark の権限を使用するエンドツーエンドのチュートリアルについては、データを変換して Apache Iceberg テーブルに書き込むをご覧ください。
- Managed Service for Apache Spark サーバーレス バッチ ワークロードのライフサイクルについて理解する。
- Managed Service for Apache Spark のサーバーレス ネットワーク構成について学習する。