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 アクセス スコープを使用して、VM インスタンスに対する API へのアクセスを許可または制限します。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 Worker のロールと、ジョブに必要となる追加のロールを付与します。たとえば、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 アクセスを許可します] をクリックします。

次のステップ