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 ロールを付与する
デフォルトの Dataform サービス アカウントまたは Dataform で使用するカスタム サービス アカウントに必要な BigQuery IAM ロールを付与する手順は次のとおりです。
Google Cloud コンソールの [IAM] ページに移動します。
[アクセス権を付与] をクリックします。
[新しいプリンシパル] フィールドに、サービス アカウント ID を入力します。
[ロールを選択] プルダウン リストで、[BigQuery ジョブユーザー] ロールを選択します。
[別のロールを追加] をクリックし、[ロールを選択] プルダウン リストで [BigQuery データ編集者] ロールを選択します。
[別のロールを追加] をクリックし、[ロールを選択] プルダウン リストで [BigQuery データ閲覧者] ロールを選択します。
[保存] をクリックします。
トークンの作成アクセス権をカスタム サービス アカウントに付与する
Dataform でカスタム サービス アカウントを使用するには、デフォルトの Dataform サービス アカウントがカスタム サービス アカウントにアクセスできる必要があります。このアクセス権を付与するには、デフォルトの Dataform サービス アカウントをプリンシパルとして、サービス アカウント トークン作成者のロールを持つカスタム サービス アカウントに追加する必要があります。
デフォルトの Dataform サービス アカウントにカスタム サービス アカウントへのアクセス権を付与する手順は次のとおりです。
Google Cloud コンソールで、[IAM] > [サービス アカウント] に移動します。
プロジェクトを選択します。
[プロジェクト「YOUR_PROJECT_NAME」のサービス アカウント] ページで、カスタム Dataform サービス アカウントを選択します。
[権限] に移動し、[アクセスを許可] をクリックします。
[新しいプリンシパル] フィールドに、Dataform サービス アカウント ID を入力します。
デフォルトの Dataform サービス アカウント ID の形式は次のとおりです。
service-YOUR_PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com
[ロールを選択] プルダウン リストで、[サービス アカウント トークン作成者] 役割を選択します。
[保存] をクリックします。
次のステップ
- BigQuery IAM ロールと権限の詳細については、IAM によるアクセス制御をご覧ください。
- BigQuery データセットに対する細かいアクセス権限付与の詳細については、データセットへのアクセスの制御をご覧ください。
- BigQuery テーブルに対する細かいアクセス権限付与の詳細については、テーブルおよびビューへのアクセスの制御をご覧ください。
- VPC Service Controls を使用して Dataform へのアクセスを制御する方法については、Dataform 用に VPC Service Controls を構成するをご覧ください。