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.restrictGitRemotes
組織のポリシーを設定する必要があります。Dataform と BigQuery は、同じ VPC Service Controls サービス境界で制限する必要があります。
VPC Service Controls が構成されている状態で、実行をスケジュールする、実行を手動でトリガーする、またはパイプラインを実行するときに、特定のユーザーが Google アカウントのユーザー認証情報で認証できるようにするには、ユーザーの ID を上り(内向き)ルールに追加する必要があります。詳細については、サービス境界の上り(内向き)ポリシーと下り(外向き)ポリシーの更新と上り(内向き)ルールのリファレンスをご覧ください。
セキュリティ上の考慮事項
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 ロールに含まれています。
- BigQuery 管理者(
roles/bigquery.admin
) - BigQuery ジョブユーザー(
roles/bigquery.jobUser
) - BigQuery ユーザー(
roles/bigquery.user
) - BigQuery Studio 管理者(
roles/bigquery.studioAdmin
) - BigQuery Studio ユーザー(
roles/bigquery.studioUser
)
省略可: 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 ロールに含まれています。
- Secret Manager 管理者(
roles/secretmanager.admin
) - Secret Manager Secret アクセサー(
roles/secretmanager.secretAccessor
) - Secret Manager Secret のバージョン マネージャー(
roles/secretmanager.secretVersionManager
)
次のステップ
- VPC Service Controls の詳細については、VPC Service Controls の概要をご覧ください。
- 組織のポリシーの詳細については、組織のポリシー サービスの概要をご覧ください。
- Dataform のサービス アカウントの詳細については、Dataform サービス エージェントとカスタム サービス アカウントについてをご覧ください。