BigQuery Sharing(旧Analytics Hub)の権限まわりのポイントをまとめてみた

BigQuery Sharing(旧Analytics Hub)の権限まわりのポイントをまとめてみた

2026.03.14

はじめに

お疲れ様です、データ事業本部の小高です。

Google Cloudの同組織内のプロジェクト間のデータ連携で、BigQuery Sharing(旧Analytics Hub)を利用できるか試してみたので、気になったポイントをまとめてみました。

BigQuery Sharingの基本的な使い方については以下のブログで丁寧に解説されていますので、そちらを参照してください。

https://dev.classmethod.jp/articles/bigquery-analytics-hub/

本記事では、上記ブログの内容を前提として、BigQuery Sharingの権限制御の仕組みリンク済みデータセット特有の挙動についてまとめます。

BigQuery Sharingの概要

BigQuery Sharingは、組織内外でBigQueryデータセットを共有できるサービスです。

スクリーンショット 2026-03-14 19.35.57

引用: Introduction to BigQuery sharing | Google Cloud

主要な用語を簡単に整理しておきます。

用語 説明
Exchange(エクスチェンジ) Listingをまとめる論理的なグループ。限定公開/一般公開を選択可能
Listing(リスティング) 共有対象のデータセットと1対1で対応する共有単位
リンク済みデータセット Subscriberがサブスクライブした際にSubscriber側プロジェクトに作成される読み取り専用のデータセット
Publisher データを提供する側
Subscriber データを受け取る側

詳しくは公式ドキュメントや上述のブログを参照してください。

使ってみて分かったこと

1. Exchange/Listing単位でプリンシパル毎にアクセス制御ができる

BigQuery Sharingでは、Exchange単位・Listing単位のそれぞれでsubscriberロールを付与をすることでアクセス制御が可能です。

subscriberロールを付与した場合

  • ExchangeにSubscriber側ユーザーのsubscriberロールを付与

スクリーンショット 2026-03-14 20.16.44

  • Listingにも権限が継承される

名称未設定

  • 問題なくサブスクライブ成功

スクリーンショット 2026-03-14 20.09.58

スクリーンショット 2026-03-14 20.10.12

subscriberロールを削除した場合

  • Exchangeからsubscriberロールを削除

スクリーンショット 2026-03-14 20.13.13

  • Listingが一覧に表示されず、選択すらできない

スクリーンショット 2026-03-14 20.13.42

Listing単位でも同様の結果になりました。

ポイントは、subscriberロールを剥奪するとListingの検索結果にも表示されなくなる点です。「見えるけど使えない」ではなく「そもそも見えない」という制御になります。

今回はプリンシパルにユーザーを指定しましたが、グループを指定すれば「このExchangeにはA部門のグループだけ」「このListingにはBチームだけ」といった柔軟な権限制御が可能です。

2. リンク済みデータセットのクエリにBigQueryデータ閲覧者権限が不要

ここが通常のデータセットとは異なるポイントです。

通常のBigQuery内のテーブルに対してクエリを実行するには、クエリの実行権限であるBigQueryユーザーbigquery.user)に加えてデータ閲覧権限であるBigQueryデータ閲覧者が必要です。しかし、リンク済みデータセット内のテーブルに対してはBigQueryユーザーだけでクエリが実行できました。

Subscriber側ユーザーにBigQueryユーザーのみを付与した状態で確認しました。

ロールの詳細はBigQuery のアクセス制御 | Google Cloudを参照してください。

  • Subscriber側ユーザーにBigQueryユーザーbigquery.user)のみを付与

スクリーンショット 2026-03-14 20.27.28

  • リンク済みデータセットに対してクエリを実行し、成功

スクリーンショット 2026-03-14 20.07.20

サブスクライブした時点でリンク済みデータセットへのデータアクセスが暗黙的に許可される仕組みのようです。つまり、サブスクリプション自体がアクセス許可の役割を果たしているということになります。

そのため、Subscriber側ユーザーにPublisher側プロジェクトのBigQuery関連IAMロール(BigQueryデータ閲覧者など)を付与する必要がありません。

なお、リンク済みデータセットは読み取り専用なので、INSERT/UPDATE/DELETEを実行するとエラーになります。

BigQuery Sharingの制限事項

BigQuery Sharingの制限事項を公式ドキュメントからいくつかピックアップしました。

留意事項 詳細
サブスクリプション数の上限 1つのListingあたり最大1,000個のリンク済みデータセット(サブスクリプション)
Viewの閲覧にはPublisher側の権限が必要 リンク済みデータセット内のViewを参照する場合、Publisher側データセットの閲覧権限が必要。ただし承認済みView(Authorized View)であれば閲覧可能
リンク済みデータセット内の個別テーブルへのIAMロール設定不可 テーブル単位での権限制御はできない
リンク済みデータセット内のテーブルへのIAMタグ設定不可 タグベースの細かい制御もできない

特にViewの扱いには注意が必要です。リンク済みデータセット内のViewが参照する元テーブルへのアクセス権が必要になるため、承認済みViewを使うか、View参照先のデータセットの閲覧権限をSubscriberに付与する必要があります。

参考: Introduction to BigQuery sharing#limitations | Google Cloud

まとめ

今回は、BigQuery Sharingの権限制御の仕組みとリンク済みデータセットの挙動についてまとめました。

ポイントは以下の通りです:

  1. Exchange/Listing単位の権限制御: プリンシパル毎にsubscriberロールを付与することで、購読の可否を柔軟に制御できる
  2. リンク済みデータセットはBigQueryユーザー権限だけでクエリ可能: 通常のデータセットと異なりBigQueryデータ閲覧者は不要。サブスクリプション自体がアクセス許可として機能する
  3. Publisher側へのIAM付与が不要: Subscriber側ユーザーにPublisher側のBigQuery IAMを付与せずにデータ共有できる

BigQuery Sharingを検討している方の参考になれば幸いです。

この記事をシェアする

FacebookHatena blogX

関連記事