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 サービス境界によって制限される必要があります。
セキュリティ上の考慮事項
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 ロールに含まれています。
- 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 のサービス アカウントについてをご覧ください。