サービス アカウントにユーザー権限を付与する

このページでは、Dataproc のサービス アカウント ユーザー役割を Cloud Data Fusion に付与して、Dataproc クラスタでパイプラインをプロビジョニングおよび実行できるようにする方法について説明します。

Dataproc で使用するサービス アカウントには、Cloud Data Fusion ランタイム リソースにアクセスするための datafusion.instances.runtime 権限の付与も必要です。

ユーザー管理のサービス アカウントを使用するか、クラスタ内の仮想マシンでデフォルトの Compute Engine サービス アカウントを使用するかにかかわらず、サービス アカウントのユーザーロールを Cloud Data Fusion に付与する必要があります。それ以外の場合、Cloud Data Fusion は Dataproc クラスタをプロビジョニングできず、データ パイプラインの実行時に次のエラーが発生します。

PROVISION task failed in REQUESTING_CREATE state for program run [pipeline-name] due to Dataproc operation failure: INVALID_ARGUMENT: User not authorized to act as service account '[service-account-name]'

サービス アカウント名を取得する

  1. Google Cloud Console で、[ID とアクセスの管理] ページに移動します。
    [IAM] ページに移動
  2. ページの上部にあるプロジェクト セレクタから、Cloud Data Fusion インスタンスが属するプロジェクト、フォルダ、または組織を選択します。
  3. Cloud Data Fusion サービス アカウントの名前を見つけてコピーします。service-[project-number]@gcp-sa-datafusion.iam.gserviceaccount.com 形式を使用します。

サービス アカウントにユーザー権限を付与する

  1. Google Cloud コンソールで、[サービス アカウント] ページに移動します。
    [サービス アカウント] ページに移動
  2. [プロジェクトを選択] をクリックし、Dataproc クラスタに使用するサービス アカウントがあるプロジェクトを選択して、[開く] をクリックします。
  3. Dataproc サービス アカウントのメールアドレスをクリックします。

  4. [権限] タブをクリックします。ページに、サービス アカウントにロールが付与されたプリンシパルのリストが表示されます。

  5. [ アクセスを許可] をクリックします。

  6. [新しいプリンシパル] フィールドに、先ほどコピーした Cloud Data Fusion のサービス アカウント名を貼り付けます。

  7. サービス アカウント ユーザーのロールを選択します。

    サービス アカウント ユーザー

  8. [保存] をクリックします。

Dataproc サービス アカウントにロールを付与する

ランナーのロールの権限を付与する

Cloud Data Fusion ランナーのロールroles/datafusion.runner)を Dataproc で使用するサービス アカウントに付与します。これにより、Dataproc サービス アカウントがプロジェクト内で Cloud Data Fusion パイプラインを実行することが認可されます。詳細については、サービス アカウントをリソースに関連付ける権限を要求するをご覧ください。

Cloud Storage 管理者権限を付与する

Cloud Data Fusion バージョン 6.2.0 以降で、Cloud Storage 管理者のロールroles/storage.admin)をプロジェクト内の Dataproc で使用するサービス アカウントに付与します。

次のステップ