サービス アカウント

このページでは、サービス アカウントと、Dataproc でのサービス アカウントの使用方法について説明します。

サービス アカウントとは

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

Compute Engine 仮想マシンを作成するときに、そのマシンで特定のサービス アカウントを使用するように構成できます。サービス アカウントを指定しなかった場合は、デフォルトのサービス アカウントが使用されます。詳細については、Compute Engine のサービス アカウントのドキュメントをご覧ください。

Dataproc 内のサービス アカウント

Dataproc クラスタは、Compute Engine 仮想マシン上に構築されています。Dataproc クラスタの作成時にユーザー マネージド サービス アカウントを指定すると、そのクラスタ内の Dataproc 仮想マシンに対してそのサービス アカウントを使用できます。サービス アカウントを指定しなかった場合は、Dataproc 仮想マシンでデフォルトの Google マネージド Compute Engine サービス アカウント [project-number]-compute@developer.gserviceaccount.com が使用されます。

サービス アカウントを指定する理由

サービス アカウントには IAM のロールが与えられます。Dataproc クラスタの作成時にユーザー マネージド サービス アカウントを指定すると、クラウド リソースにアクセスしてきめ細かく制御可能なクラスタを作成して使用できます。Dataproc クラスタごとに異なるユーザー マネージド サービス アカウントを使用すると、クラスタからクラウド リソースに複数のアクセスができます。

サービス アカウントの要件と制限

  • サービス アカウントはクラスタの作成時にしか設定できません。
  • サービス アカウントに関連付けられる Dataproc クラスタを作成する前に、サービス アカウントを作成する必要があります。
  • 設定後は、クラスタに使用されるサービス アカウントを変更することができません。
  • サービス アカウントに、ニーズに応じた範囲と IAM のロールが割り当てられていることを確認してください。
  • Dataproc で使用するサービス アカウントには、Dataproc/Dataproc ワーカーのロール(または Dataproc ワーカーのロールによって付与されるすべての権限)が必要です。
  • サービス アカウントは、クラスタが作成されるプロジェクト内に存在する必要があります。
  • Dataproc クラスタ内で使用される Compute Engine 仮想マシンには、特定のアクセス スコープが必要です。アクセス スコープは、適用先のサービスにも制限されます。たとえば、Dataproc クラスタに Cloud Storage の https://www.googleapis.com/auth/storage-full スコープのみが付与されている場合、同じスコープを使用して BigQuery に対するリクエストを作成することはできません。

デフォルトのスコープと最小スコープ

サービス アカウントのスコープが指定されていない場合、Dataproc は次のスコープのデフォルト セットを使用します。

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
カスタム スコープが指定されている場合、Dataproc はユーザー指定のスコープと、Dataproc で必要とされるスコープの最小セットの組み合わせを使用します。
https://www.googleapis.com/auth/cloud.useraccounts.readonly
https://www.googleapis.com/auth/devstorage.read_write
https://www.googleapis.com/auth/logging.write

サービス アカウントの使用

Dataproc API clusters.create リクエストまたは Cloud SDK gcloud コマンドライン ツールを使用して、新しい Dataproc クラスタを作成するときに、ユーザー マネージド サービス アカウントを指定できます。

gcloud コマンド

ユーザー指定のサービス アカウントとアクセス スコープを持つ新しいクラスタを作成するには、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 のサポートは、今後のリリースで追加される予定です。

次のステップ