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 が読み取りと書き込みの両方のアクセス権を必要とするプロジェクトに対する BigQuery データ編集者。 通常は、Dataform リポジトリをホストするプロジェクトが含まれます。
- Dataform が読み取り専用アクセス権を必要とするプロジェクトに対する BigQuery データ閲覧者。
- Dataform リポジトリをホストするプロジェクトに対する BigQuery ジョブユーザー。
- BigQuery データセットに対してクエリを実行する場合の BigQuery データオーナー。
- BigQuery ポリシータグを使用する場合の列レベルのアクセス制御のための BigQuery のロール。
さらに、デフォルトの 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 権限を付与できます。詳細については、データセットへのアクセスの制御とテーブルおよびビューへのアクセスの制御をご覧ください。
準備
Google Cloud コンソールの [Dataform] ページに移動します。
リポジトリを作成または選択します。
Dataform で使用するサービス アカウントに必要な BigQuery ロールを付与する
必要な BigQuery IAM ロールをデフォルトの Dataform サービス アカウント、または Dataform で使用するカスタム サービス アカウントに付与するには、次の手順を行います。
Google Cloud コンソールの [IAM] ページに移動します。
[アクセス権を付与] をクリックします。
[新しいプリンシパル] フィールドに、サービス アカウント ID を入力します。
[ロールを選択] プルダウン リストで、[BigQuery ジョブユーザー] ロールを選択します。
[別のロールを追加] をクリックし、[ロールを選択] プルダウン リストで [BigQuery データ編集者] ロールを選択します。
[別のロールを追加] をクリックし、[ロールを選択] プルダウン リストで [BigQuery データ閲覧者] ロールを選択します。
[保存] をクリックします。
カスタム サービス アカウントにトークン作成アクセス権を付与する
Dataform でカスタム サービス アカウントを使用するには、デフォルトの Dataform サービス アカウントがカスタム サービス アカウントにアクセスできる必要があります。このアクセス権を付与するには、デフォルトの Dataform サービス アカウントをプリンシパルとして、サービス アカウント トークン作成者のロールを持つカスタム サービス アカウントに追加する必要があります。
デフォルトの Dataform サービス アカウントにカスタム サービス アカウントへのアクセス権を付与するには、次の手順を行います。
Google Cloud コンソールで [IAM] > [サービス アカウント] に移動します。
プロジェクトを選択します。
[プロジェクト「YOUR_PROJECT_NAME」のサービス アカウント] ページで、サービス アカウントを選択します。
[権限] に移動し、[アクセスを許可] をクリックします。
[新しいプリンシパル] フィールドに、Dataform サービス アカウント ID を入力します。
[ロールを選択] プルダウン リストで、[サービス アカウント トークン作成者] 役割を選択します。
[保存] をクリックします。
次のステップ
- BigQuery IAM のロールと権限の詳細については、IAM によるアクセス制御をご覧ください。
- BigQuery データセットに対する細かいアクセス権限付与の詳細については、データセットへのアクセスの制御をご覧ください。
- BigQuery テーブルに対する細かいアクセス権限付与の詳細については、テーブルおよびビューへのアクセスの制御をご覧ください。
- VPC Service Controls を使用して Dataform へのアクセスを制御する方法については、Dataform 用に VPC Service Controls を構成するをご覧ください。