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

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

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

最初の Dataform リポジトリを作成すると、Dataform によってデフォルトのサービス アカウントが自動的に生成されます。Dataform では、デフォルトのサービス アカウントを使用して ユーザーに代わって BigQuery を操作します。 デフォルトのデータフォーム サービス アカウントには、デフォルトで 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 サービス アカウントに、Dataform で使用するカスタム サービス アカウントへのアクセス権としてサービス アカウント トークン作成者roles/iam.serviceAccountTokenCreator)を付与する必要があります。

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. [保存] をクリックします。

次のステップ