BigQuery の VPC Service Controls
このページでは、VPC Service Controls で境界を作成して BigQuery リソースのセキュリティを強化する方法について説明します。これらの境界は、BigQuery との間のアクセスを制限し、Identity and Access Management(IAM)制御とは独立しています。次のようなユースケースで役立ちます。
- 上り(内向き)ルールと下り(外向き)ルールで明示的に許可されているリソースを除き、リソースへのアクセスを制限することで、データ漏洩を防止する。
- サードパーティ ソースまたは Google Cloud サービス(Cloud Storage など)から BigQuery にデータを安全に読み込む。
- BigQuery から Cloud Storage などのターゲットへのデータ エクスポートを制御する。
詳細については、VPC Service Controls の概要をご覧ください。
始める前に
- サービス境界の構成に必要な権限を取得するには、IAM を使用したアクセス制御で VPC Service Controls に関する説明をご覧ください。
- 組織のアクセス ポリシーが必要です。詳細については、アクセス ポリシーを作成するをご覧ください。
境界を作成する
次の例では、VPC Service Controls 境界を作成して、BigQuery プロジェクトにアクセスできる外部 IP アドレスの範囲を制限する方法を説明します。
指定された範囲の IP アドレス(企業ネットワーク内のアドレスなど)へのアクセスのみを許可するアクセスレベルを作成します。これを作成するには、
gcloud access-context-manager levels create
コマンドを使用します。echo """ - ipSubnetworks: - 162.222.181.0/24 - 2001:db8::/48 """ > level.yaml gcloud access-context-manager levels create ACCESS_LEVEL_NAME \ --title="TITLE" --basic-level-spec=level.yaml
次のように置き換えます。
ACCESS_LEVEL_NAME
: アクセスレベルの IDTITLE
: サービス境界のタイトル(人が読める形式)
アクセスレベルの作成の詳細については、実装例をご覧ください。
境界を作成または更新して、BigQuery リソースを保護します。次の例では、プロジェクトを保護します。別のプロジェクトの Cloud Storage バケットからのデータ転送の保護など、その他のユースケースについては、ユースケースをご覧ください。
境界を作成する
BigQuery プロジェクトを保護する新しい境界を作成するには、
gcloud access-context-manager perimeters create
コマンドを使用します。echo """ - ingressFrom: identityType: ANY_IDENTITY sources: - accessLevel: accessPolicies/POLICY_NAME/accessLevels/ACCESS_LEVEL_NAME ingressTo: operations: - methodSelectors: - method: '*' serviceName: bigquery.googleapis.com resources: - '*' """ > ingress.yaml gcloud access-context-manager perimeters create BIGQUERY_PERIMETER --title="TITLE" \ --resources=BIGQUERY_PROJECT_NUMBER \ --restricted-services=bigquery.googleapis.com \ --ingress-policies=ingress.yaml --policy=POLICY_NAME
次のように置き換えます。
POLICY_NAME
: アクセス ポリシーの IDACCESS_LEVEL_NAME
: アクセスレベルの IDPERIMETER
: 境界の IDTITLE
: サービス境界の短いタイトル(、人が読める形式)BIGQUERY_PROJECT_NUMBER
: BigQuery プロジェクトの IDPOLICY_NAME
: アクセス ポリシーの ID
境界を更新する
既存の境界を更新するには、
gcloud access-context-manager perimeters update
コマンドを使用します。gcloud access-context-manager perimeters update BIGQUERY_PERIMETER --set-ingress-policies=ingress.yaml
BIGQUERY_PERIMETER
は、BigQuery リソースを保護する境界の ID に置き換えます。
境界をテストする
VPC Service Controls の境界を適用する前にテストします。詳細については、サービス境界のドライラン モードとドライラン モードを使用して上り(内向き)ポリシーまたは下り(外向き)ポリシーをテストするをご覧ください。
ユースケース
次のユースケースの例では、VPC Service Controls を使用して BigQuery との間でやり取りされるデータを保護します。
別のプロジェクトの Cloud Storage バケットから外部テーブルデータをクエリする
次の例では、BigQuery プロジェクトと Cloud Storage プロジェクトが境界で分離されている場合に、これらのプロジェクト間の通信を選択的に許可します。
Cloud Storage プロジェクトの周囲の境界の下り(外向き)ルールを更新して、BigQuery プロジェクトが Cloud Storage プロジェクトにアクセスできるようにします。
echo """ - egressFrom: identityType: ANY_IDENTITY egressTo: operations: - methodSelectors: - method: '*' serviceName: storage.googleapis.com resources: - projects/BIGQUERY_PROJECT_NUMBER """ > egress.yaml gcloud access-context-manager perimeters update CLOUD_STORAGE_PERIMETER --policy=POLICY_NAME --set-egress-policies=egress.yaml
次のように置き換えます。
BIGQUERY_PROJECT_NUMBER
: BigQuery プロジェクトの IDCLOUD_STORAGE_PERIMETER
: Cloud Storage リソースを保護する境界の IDPOLICY_NAME
: アクセス ポリシーの ID
BigQuery プロジェクトの境界の下り(外向き)ルールを更新して、Cloud Storage プロジェクトが BigQuery プロジェクトにアクセスできるようにします。
echo """ - egressFrom: identityType: ANY_IDENTITY egressTo: operations: - methodSelectors: - method: '*' serviceName: storage.googleapis.com resources: - projects/CLOUD_STORAGE_PROJECT_NUMBER """ > egress1.yaml gcloud access-context-manager perimeters update BIGQUERY_PERIMETER --policy=POLICY_NAME --set-egress-policies=egress1.yaml
次のように置き換えます。
CLOUD_STORAGE_PROJECT_NUMBER
: Cloud Storage プロジェクトの IDPERIMETER
: 境界の IDPOLICY_NAME
: アクセス ポリシーの ID
省略可: BigQuery プロジェクトを保護する境界に制限付きサービスとして
storage.googleapis.com
が含まれている場合は、上り(内向き)ルールを更新する必要があります。echo """ - ingressFrom: identityType: ANY_IDENTITY sources: - accessLevel: accessPolicies/POLICY_NAME/accessLevels/ACCESS_LEVEL_NAME ingressTo: operations: - methodSelectors: - method: '*' serviceName: bigquery.googleapis.com - methodSelectors: - method: '*' serviceName: storage.googleapis.com resources: - '*' """ > ingress.yaml gcloud access-context-manager perimeters create BIGQUERY_PERIMETER --title="TITLE" \ --resources=BIGQUERY_PROJECT_NUMBER \ --restricted-services=bigquery.googleapis.com \ --ingress-policies=ingress.yaml --policy=POLICY_NAME
BigQuery Omni からデータのインポートとエクスポートを行う
防御強化のため、VPC Service Controls の境界を使用して、BigQuery Omni と外部クラウド サービス間のアクセスを制限できます。詳細と例については、Azure Blob Storage BigLake テーブルを作成する際の VPC Service Controls の構成をご覧ください。
次のステップ
- Analytics Hub の VPC Service Controls の詳細を確認する。
- 外部クラウド サービスを使用して BigQuery Omni へのアクセスを制限する方法を学習する。
- VPC Service Controls によるリスクと軽減策を理解する。
- BigQuery での VPC Service Controls のサポートと制限事項の詳細を確認する。
- BigQuery と VPC Service Controls の一般的な問題のトラブルシューティングを行う。