Dataproc サービス アカウント

このページでは、サービス アカウントと VM アクセス スコープと、それらを Dataproc で使用する方法について説明します。

サービス アカウントとは

サービス アカウントは、Compute Engine 仮想マシン(VM)インスタンスで稼働するサービスやアプリケーションが他の Google Cloud APIs との対話に使用できる特殊なアカウントです。アプリケーションは、サービス アカウントの認証情報を使用して一連の API に対する認証を得て、サービス アカウントに付与された権限の範囲内で VM に対するアクションを実行できます。

Dataproc サービス アカウント

次のサービス アカウントには、クラスタが配置されているプロジェクトで Dataproc アクションを実行するために必要な権限が付与されています。

  • Dataproc サービス エージェント サービス アカウント: Dataproc は、Dataproc ユーザーの Google Cloud プロジェクトで Dataproc サービス エージェントのロールを持つこのサービス アカウントを作成します。クラスタを作成するとき、このサービス アカウントをユーザー指定のサービス アカウントに置き換えることはできません。 このサービス エージェント アカウントは、クラスタ VM の作成、更新、削除などの Dataproc コントロール プレーン オペレーションを実行するために使用されます(Dataproc サービス エージェント(コントロール プレーン ID)をご覧ください)。

    デフォルトでは、Dataproc は service-[project-number]@dataproc-accounts.iam.gserviceaccount.com をサービス エージェント アカウントとして使用します。サービス アカウントが存在しない場合、Dataproc は Google API サービス エージェント アカウント[project-number]@cloudservices.gserviceaccount.com)を使用して、コントロール プレーン オペレーションを行います。

共有 VPC ネットワーク: クラスタで共有 VPC ネットワークを使用する場合、共有 VPC 管理者は、上記のサービス アカウントの両方に、共有 VPC ホスト プロジェクト用のネットワーク ユーザーのロールを付与する必要があります。詳細情報

Dataproc VM アクセス スコープ

VM アクセス スコープは、API への VM インスタンス アクセスを許可または制限するために使用されます。VM サービス アカウントと連携し、API アクセスを決定します。たとえば、クラスタ VM に https://www.googleapis.com/auth/storage-full スコープのみが付与されている場合、クラスタ VM で実行されるアプリケーションは、Cloud Storage API を呼び出せますが、実行されている VM サービス アカウントに幅広い権限を持つ BigQuery のロールが付与されていても、BigQuery に対してリクエストを行うことはできません。

デフォルトの Dataproc VM スコープ。 クラスタの作成時にスコープが指定されていない場合(gcloud dataproc cluster create --scopes をご覧ください)、Dataproc VM に次のデフォルトのスコープセットが適用されます。

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.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write

ユーザーが管理する VM サービス アカウントを使用するクラスタの作成

クラスタを作成するときに、VM サービス アカウントを指定できます。Dataproc では、クラスタの作成後に VM サービス アカウントを指定または変更することはできません。

ユーザーが管理する VM サービス アカウントを指定する理由サービス アカウントには IAM ロールが与えられます。Dataproc クラスタの作成時にユーザーが管理する VM サービス アカウントを指定すると、プロジェクト リソースに対するきめ細かいアクセス権の設定と制御ができるクラスタを作成できます。Dataproc クラスタごとに異なるユーザーが管理する VM サービス アカウントを使用すると、Cloud リソースに異なるアクセス権を持つクラスタを設定できます。

クラスタを作成する前に、クラスタが作成されるプロジェクト内でサービス アカウントを作成します。サービス アカウントに Dataproc ワーカーのロールと、ジョブに必要なその他のロールを付与し、たとえば、BigQuery などの Google Cloud リソースとの間でのデータの読み取りと書き込みを許可します。

gcloud コマンド

ユーザー指定の VM サービス アカウントと VM アクセス スコープを持つ新しいクラスタを作成するには、gcloud clusters create コマンドを使用します。

gcloud dataproc clusters create cluster-name \
    --region=region \
    --service-account=service-account-name@project-id.iam.gserviceaccount.com \
    --scopes=scope[, ...]

REST API

GceClusterConfig オブジェクトに clusters.create API リクエストの一部として serviceAccountserviceAccountScopes を設定します。

Console

現在、Cloud Console でのユーザーが管理する Dataproc VM サービス アカウントの設定はサポートされていません。クラスタの VM に対して「cloud-platform」スコープを設定するには、Cloud Console で Dataproc の [クラスタの作成] ページの [セキュリティの管理] パネルの [プロジェクトへのアクセス] セクションにある [同一プロジェクトですべての Google Cloud サービスに対する API アクセスを許可します] をクリックします。

次のステップ