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

このドキュメントでは、BigQuery でワークフローを実行するために、Dataform サービス アカウントに必要な 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 ロールを付与する

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

  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」のサービス アカウント] ページで、カスタム Dataform サービス アカウントを選択します。

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

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

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

    service-YOUR_PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
    
  6. [ロールを選択] プルダウン リストで、[サービス アカウント トークン作成者] 役割を選択します。

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

次のステップ