Dataform に必要なアクセス権を付与する

このドキュメントでは、Dataform サービス アカウントが BigQuery でワークフローを実行するために必要な Identity and Access Management(IAM)ロールを付与する方法について説明します。

Dataform のサービス アカウントについて

最初の Dataform リポジトリを作成すると、Dataform がデフォルトのサービス アカウントを自動的に生成します。Dataform では、デフォルトのサービス アカウントを使用して ユーザーに代わって BigQuery を操作します。 デフォルトの Dataform サービス アカウントには、デフォルトでは BigQuery のロールや権限が付与されていません。必要なアクセス権はデフォルトの Dataform サービス アカウントに付与する必要があります。

デフォルトの Dataform サービス アカウント ID は次の形式です。

service-YOUR_PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com

YOUR_PROJECT_NUMBER は、Google Cloud プロジェクトの数値 ID に置き換えます。Google Cloud プロジェクト ID は、Google Cloud コンソール ダッシュボードで確認できます。詳細については、プロジェクトの識別をご覧ください。

デフォルトの Dataform サービス アカウントに加えて、他のサービス アカウントを使用して、ユーザーに代わってワークフローを実行できます。カスタム サービス アカウントは、以下のように構成できます。

Dataform リポジトリまたはワークフロー構成を作成する際は、アクセス可能な Google Cloud プロジェクトに関連付けられた任意のサービス アカウントを選択できます。Dataform リソースに関連付けられたすべてのサービス アカウントに必要な権限を構成する必要があります。

Dataform リポジトリに関連付けられたカスタム サービス アカウントは、そのリポジトリからワークフローを実行するためにのみ使用されます。他のすべてのリポジトリ オペレーションは、デフォルトの Dataform サービス アカウントによって引き続き実行されます。

Dataform サービス アカウントに必要なロール

Dataform で使用されるデフォルトのサービス アカウントとカスタム サービス アカウントには、BigQuery でワークフローを実行するために、次の BigQuery IAM ロールが必要です。

さらに、デフォルトの Dataform サービス アカウントのサービス アカウント トークン作成者roles/iam.serviceAccountTokenCreator)に、Dataform で使用するカスタム サービス アカウントへのアクセス権を付与する必要があります。

Dataform サービス アカウントのセキュリティに関する考慮事項

Dataform で必要なロールをサービス アカウントに付与する際には、次のセキュリティに関する考慮事項があります。

  • 必要なロールを付与されたサービス アカウントは、VPC Service Controls に関係なく、サービス アカウントが属するプロジェクト内の BigQuery または Secret Manager へのアクセス権を取得できます。

    詳細については、Dataform 用に VPC Service Controls を構成するをご覧ください。

  • dataform.repositories.create IAM 権限を持つユーザーは、デフォルトの Dataform サービス アカウントとそのサービス アカウントに付与されているすべての権限を使用してコードを実行できます。

    詳細については、Dataform 権限のセキュリティに関する考慮事項をご覧ください。

ユーザーまたはサービス アカウントが BigQuery で読み書きできるデータを制限するために、選択した BigQuery データセットまたはテーブルに対して、細かな BigQuery IAM 権限を付与できます。詳細については、データセットへのアクセスの制御テーブルおよびビューへのアクセスの制御をご覧ください。

準備

  1. Google Cloud コンソールの [Dataform] ページに移動します。

    [Dataform] ページに移動

  2. リポジトリを作成または選択します。

Dataform で使用するサービス アカウントに必要な BigQuery ロールを付与する

必要な BigQuery IAM ロールをデフォルトの Dataform サービス アカウント、または Dataform で使用するカスタム サービス アカウントに付与するには、次の手順を行います。

  1. Google Cloud コンソールの [IAM] ページに移動します。

    [IAM] ページに移動

  2. [アクセス権を付与] をクリックします。

  3. [新しいプリンシパル] フィールドに、サービス アカウント ID を入力します。

  4. [ロールを選択] プルダウン リストで、[BigQuery ジョブユーザー] ロールを選択します。

  5. [別のロールを追加] をクリックし、[ロールを選択] プルダウン リストで [BigQuery データ編集者] ロールを選択します。

  6. [別のロールを追加] をクリックし、[ロールを選択] プルダウン リストで [BigQuery データ閲覧者] ロールを選択します。

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

カスタム サービス アカウントにトークン作成アクセス権を付与する

Dataform でカスタム サービス アカウントを使用するには、デフォルトの Dataform サービス アカウントがカスタム サービス アカウントにアクセスできる必要があります。このアクセス権を付与するには、デフォルトの Dataform サービス アカウントをプリンシパルとして、サービス アカウント トークン作成者のロールを持つカスタム サービス アカウントに追加する必要があります。

デフォルトの Dataform サービス アカウントにカスタム サービス アカウントへのアクセス権を付与するには、次の手順を行います。

  1. Google Cloud コンソールで [IAM] > [サービス アカウント] に移動します。

    [サービス アカウント] ページに移動

  2. プロジェクトを選択します。

  3. [プロジェクト「YOUR_PROJECT_NAME」のサービス アカウント] ページで、サービス アカウントを選択します。

  4. [権限] に移動し、[アクセスを許可] をクリックします。

  5. [新しいプリンシパル] フィールドに、Dataform サービス アカウント ID を入力します。

  6. [ロールを選択] プルダウン リストで、[サービス アカウント トークン作成者] 役割を選択します。

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

次のステップ