Dataform 用に VPC Service Controls を構成する

VPC Service Controls は、Google Cloud の機能で、データ漏洩を防ぐための境界を設定できます。このガイドでは、Dataform で VPC Service Controls を使用して、サービスの安全性を高める方法について説明します。

VPC Service Controls は、Identity and Access Management(IAM)によって提供される保護とは別の追加の防御レイヤを Google Cloud サービスに提供します。

VPC Service Controls の詳細については、VPC Service Controls の概要をご覧ください。

制限事項

Dataform は VPC Service Controls をサポートしますが、次の制限があります。

セキュリティ上の考慮事項

Dataform に VPC Service Controls の境界を設定する場合は、Dataform サービス アカウントに付与されている権限を確認し、セキュリティ アーキテクチャと一致していることを確認する必要があります。

Dataform サービス アカウントに付与する権限によっては、VPC Service Controls に関係なく、このサービス アカウントがサービス アカウントが属するプロジェクトの BigQuery または Secret Manager のデータにアクセスできる可能性があります。この場合、VPC Service Controls の境界で Dataform を制限しても、BigQuery や Secret Manager との通信はブロックされません。

Dataform リポジトリから発生したワークフロー呼び出しを実行する必要がない場合は、BigQuery との通信をブロックする必要があります。BigQuery との通信をブロックする方法については、BigQuery との通信をブロックするをご覧ください。

どの Dataform リポジトリもサードパーティの Git リポジトリに接続していない場合は、Secret Manager との通信をブロックする必要があります。Secret Manager との通信をブロックする方法については、Secret Manager との通信をブロックするをご覧ください。

準備

Dataform に VPC Service Controls サービス境界を構成する前に、リモート リポジトリを制限するガイドに沿って dataform.restrictGitRemotes 組織のポリシーを設定します。

dataform.restrictGitRemotes 組織のポリシーは、Dataform の使用時に VPC Service Controls のチェックが適用され、Dataform Git リポジトリへのサードパーティのアクセスが制限されるようにするために必要です。

必要なロール

VPC Service Controls サービス境界の構成に必要な権限を取得するには、プロジェクトに対する Access Context Manager 編集者roles/accesscontextmanager.policyEditor)IAM ロールを付与するよう管理者に依頼してください。ロールの付与の詳細については、アクセスの管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

VPC Service Controls の権限の詳細については、IAM を使用したアクセス制御をご覧ください。

VPC Service Controls を構成する

VPC Service Controls サービス境界を使用して、次の方法で Dataform を制限できます。

  • BigQuery を制限する既存のサービス境界に Dataform を追加します。
  • Dataform と BigQuery の両方を制限するサービス境界を作成します。

BigQuery を制限するサービス境界に Dataform を追加するには、VPC Service Controls ドキュメントのサービス境界を更新するガイドをご覧ください。

Dataform と BigQuery の両方を制限する新しいサービス境界を作成するには、VPC Service Controls ドキュメントのサービス境界の作成ガイドをご覧ください。

省略可: BigQuery との通信をブロックする

Dataform が BigQuery と通信する方法は、Dataform で使用されるサービス アカウントのタイプによって異なります。

デフォルトの Dataform サービス アカウントは、bigquery.jobs.create 権限を使用して BigQuery と通信します。Dataform が BigQuery で SQL ワークフローを実行するのに必要なロールを付与するときに、この権限を含むデフォルトの Dataform サービス アカウントのロールを付与します。

デフォルトの Dataform サービス アカウントと BigQuery 間の通信をブロックするには、デフォルトの Dataform サービス アカウントに付与されている bigquery.jobs.create 権限を含む事前定義ロールとカスタムロールをすべて取り消す必要があります。ロールを取り消すには、プロジェクト、フォルダ、組織へのアクセス権の管理ガイドをご覧ください。

カスタム Dataform サービス アカウントは、次の権限とロールを使用して BigQuery と通信します。

  • カスタム サービス アカウントに付与されている bigquery.jobs.create 権限。
  • カスタム サービス アカウントのデフォルトの Dataform サービス アカウントに付与されているサービス アカウント トークン作成者(roles/iam.serviceAccountTokenCreator)のロール。

カスタム Dataform サービス アカウントと BigQuery 間の通信は、次のいずれかの方法でブロックできます。

  • 選択したデフォルトの Dataform サービス アカウントに関してデフォルト サービス アカウントに付与されているサービス アカウント トークン作成者(roles/iam.serviceAccountTokenCreator)のロールを取り消します。サービス アカウント トークン作成者(roles/iam.serviceAccountTokenCreator)のロールを取り消すには、サービス アカウントに対するアクセス権の管理ガイドをご覧ください。

  • プロジェクト レベルでカスタム サービス アカウントに付与された、bigquery.jobs.create 権限を含むすべての定義済みロールおよびカスタム・ロールを取り消します。ロールを取り消すには、プロジェクト、フォルダ、組織へのアクセス権の管理ガイドをご覧ください。

bigquery.jobs.create 権限は、取り消しの対象となる次の事前定義された BigQuery IAM ロールに含まれています。

省略可: Secret Manager との通信をブロックする

Dataform は、secretmanager.versions.access 権限を使用して個々の Secret Manager のシークレットにアクセスします。Dataform リポジトリをサードパーティのリポジトリに接続するときに、選択した Secret Manager の Secret のデフォルトの Dataform サービス アカウントにこの権限を付与します。

Dataform と Secret Manager 間の通信をブロックするには、デフォルトの Dataform サービス アカウントからすべてのシークレットへのアクセス権を取り消す必要があります。

デフォルトの Dataform サービス アカウントから Secret Manager のシークレットへのアクセス権を取り消すには、Secret Manager ドキュメントのシークレットへのアクセスの管理ガイドをご覧ください。選択したシークレットのデフォルトの Dataform サービス アカウントに付与されている secretmanager.versions.access 権限を含む事前定義ロールとカスタムロールをすべて取り消す必要があります。

secretmanager.versions.access 権限は、以下の事前定義された Secret Manager IAM ロールに含まれています。

次のステップ