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 でワークフローを実行するのに必要なロールを付与するときに、この権限を含むデフォルトの Dataform サービス エージェントのロールを付与します。

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

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

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

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

  • 選択したカスタム サービス アカウントに関してデフォルト サービス アカウントに付与されているサービス アカウント トークン作成者(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 ロールに含まれています。

次のステップ