このページでは、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]'
サービス アカウント名を取得する
- Google Cloud Console で、[ID とアクセスの管理] ページに移動します。
[IAM] ページに移動 - ページ上部のプロジェクト セレクタから、Cloud Data Fusion インスタンスが属するプロジェクト、フォルダ、または組織を選択します。
- Cloud Data Fusion サービス アカウントの名前を見つけてコピーします。
service-[project-number]@gcp-sa-datafusion.iam.gserviceaccount.com
形式を使用します。
サービス アカウントにユーザー権限を付与する
- Google Cloud コンソールで、[サービス アカウント] ページに移動します。
[サービス アカウント] ページに移動 - [プロジェクトを選択] をクリックし、Dataproc クラスタに使用するサービス アカウントがあるプロジェクトを選択して、[開く] をクリックします。
Dataproc サービス アカウントのメールアドレスをクリックします。
[権限] タブをクリックします。ページに、サービス アカウントにロールが付与されたプリンシパルのリストが表示されます。
[
アクセスを許可] をクリックします。[新しいプリンシパル] フィールドに、先ほどコピーした Cloud Data Fusion サービス アカウント名を貼り付けます。
サービス アカウント ユーザーのロールを選択します。
[保存] をクリックします。
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 で使用するサービス アカウントに付与します。
次のステップ
- Cloud Data Fusion でのアクセス制御の詳細を確認する。
- Cloud Data Fusion サービス アカウントの詳細を確認する。