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 シークレットのデフォルトの Dataform サービス アカウントにこの権限を付与します。

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

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

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

次のステップ