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 境界を設定する場合は、カスタム サービス アカウントに付与された権限を確認して、セキュリティ アーキテクチャと一致していることを確認してください。
カスタム サービス アカウントに付与する権限によっては、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 との通信をブロックする
カスタム サービス アカウントは、次の権限とロールを使用して BigQuery と通信します。
- カスタム サービス アカウントに付与された
bigquery.jobs.create権限。 - カスタム サービス アカウントに関してデフォルトの
Dataform サービス エージェントに付与されている
サービス アカウント トークン作成者ロール
(
roles/iam.serviceAccountTokenCreator)。
カスタム サービス アカウントと BigQuery 間の通信は、次のいずれかの方法でブロックできます。
プロジェクト レベルでカスタム サービス アカウントに付与された、
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)
ロールを取り消すには、 プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
- BigQuery 管理者 (
選択したカスタム サービス アカウントに関してデフォルトの Dataform サービス エージェントに付与されている サービス アカウント トークン作成者ロール (
roles/iam.serviceAccountTokenCreator)を取り消します。サービス アカウント トークン作成者ロールを取り消すには、 サービス アカウントに対するアクセスを管理するをご覧ください。
省略可: 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 サービス エージェントとカスタム サービス アカウントについてをご覧ください。