VPC Service Controls のサービス境界外(別組織)から BigQuery Sharing(旧 Analytics Hub)のリスティングをサブスクライブする
データ事業本部のはんざわです。
前回のブログでは、VPC Service Controls(VPC SC)のサービス境界外(別組織)にあるプロジェクトから境界内の BigQuery を参照する方法を検証しました。
別組織のプロジェクトにデータを共有する場合、データセット単位で参照権限を付与する方法もありますが、共有先や共有したいデータセットが多い場合に管理が複雑になり、現実的ではありません。
BigQuery には、こうした課題を解決するデータシェアリング機能として、BigQuery Sharing(旧 Analytics Hub)という機能が提供されています。
BigQuery Sharing の詳細やユースケースは、以下のブログを参考にしてください。
今回のブログでは、VPC SC の境界内のプロジェクトにホストされたリスティングを境界外からサブスクライブして、クエリを実行するのに必要な設定を検証します。
やりたいこと
今回のブログでやりたいことは以下の構成図のとおりです。
- 組織Aは VPC SC が適用されており、以下のサービスに対して制限を設定している。
analyticshub.googleapis.combigquery.googleapis.combigquerydatapolicy.googleapis.combigquerydatatransfer.googleapis.combigquerymigration.googleapis.com
- 組織AにあるプロジェクトXは VPC SC の境界内に存在する。
- 組織Bは VPC SC が適用されていない。
- 組織BにあるプロジェクトYは VPC SC の境界外に存在する。
- ユーザーHさんは、プロジェクトYで BigQuery を操作する権限を持っている。
- ユーザーHさんは、プロジェクトXで公開されているリスティングをプロジェクトYにサブスクライブできる。
- プロジェクトYからリスティングをサブスクライブし、作成されたリンク済みデータセット経由でクエリを実行したい。

【結論】VPC SC の設定
結論として、サブスクライブを行うために、Ingress には analyticshub.googleapis.com を許可するルールが必要で、Egress には bigquery.googleapis.com を許可するルールが必要でした。
(Analytics Hub は BigQuery Sharing という名称に変更されましたが、API 名は変わっていないので注意してください。)
補足ですが、サブスクライブが完了してリンク済みデータセットが作成された後は、Ingress/Egress いずれの許可ルールを削除しても参照できました。
具体的な Ingress/Egress ポリシーの設定内容は以下の通りになります。
From:
User: ユーザーHさん
Source: 全てのソース
To:
Resource: プロジェクトX
Service: analyticshub.googleapis.com
From:
User: ユーザーHさん
Source: プロジェクトX
To:
Resource: プロジェクトY
Service: bigquery.googleapis.com
Method: 全てのメソッド
終わりに
本ブログでは、VPC SC のサービス境界内にあるプロジェクトのリスティングを境界外からサブスクライブして利用する際に必要となる Ingress/Egress のポリシーを検証しました。
サブスクライブ時に必要な設定は概ね想定通りでしたが、サブスクライブが完了してリンク済みデータセットが作成された後は、Ingress/Egress の許可ルールを削除しても参照できた点は意外でした。
参考になれば幸いです。






