BigQuery データ共有にはデータセットへのアクセス権の付与より Analytics Hub を選ぶ

# はじめに
組織内外で効率的にデータ共有と活用を行うことは、効率よくビジネスを進めるために重要な要素の一つになっています。Google Cloud BigQuery ではデータ共有方法として、データセットへのアクセス権付与と Analytics Hub の 2 つの方法がサポートされています。この 2 つを比較し、特に Analytics Hub の利点を紹介します。

筆者は 2022 年 8 月より、Analytics Hub を用いて[加工済みオープンデータ](https://bqfun.jp/docs/jpdata)を提供しています。

# Analytics Hub の概要
Analytics Hub は、データセットの共有を容易にするツールです。限定公開と一般公開の両方のデータ共有をサポートしています。権限設定により、データを共有するパブリッシャーと、データ共有を受けるサブスクライバーを明確に制御できます。
Analytics Hub は BigQuery を利用している 2 組織間でデータ共有をする場合に特に効果的です。

詳しくは[公式ドキュメント](https://cloud.google.com/bigquery/docs/analytics-hub-introduction)を参照してください。

# 両方法の比較
Analytics Hub とデータセットへのアクセス権付与を比較すると、以下のような違いがあります。

|特徴|Analytics Hub|BigQuery データセットへのアクセス権付与|
|---|---|---|
|管理の容易さ|専用 Web UI|BigQuery の通常機能のみ|
|利用状況の把握|テーブル別ジョブ数、データ接続の監査ログ|access 監査ログ|
|データの所有権|データのコピー制限|自由なコピー|
|共有単位|BigQuery データセット<br>複数のデータセットをまとめたエクスチェンジ|BigQuery データセット|
|na0 お勧め規模|3 ~ データセット<br>2 ~ 組織|1 ~ 2 データセット<br>2 組織|

## BigQuery データセットへのアクセス権付与の特徴
BigQuery データセットへのアクセス権付与は、特定のユーザーやグループに対する直接的なアクセス管理を可能にします。これは小規模な共有には適していますが、大規模な組織や多くの外部パートナーとの共有では管理が煩雑になりがちです。特に、大規模なデータアクセスの場合、アクセス権の管理がセキュリティ上の課題となります。行レベルセキュリティと組み合わせるにしても、大量のアクセス権をデータセット単位で正しく設定するのには限界があります。

Analytics Hub と比べると以下のような特徴を持ちます。

* BigQuery 全オブジェクトと機能、リージョンをサポート
    * 新機能をすぐに使えるのが魅力
* access 監査ログが残る
* BigQuery IAM で一貫性のある権限設定

## Analytics Hub の特徴
Analytics Hub は以下のような特徴を持ちます。

* Web UI から利用状況の確認
* データのコピー防止
* データ提供を受けた組織で Data Catalog などに別な実態として管理する
* データ共有リクエストを受ける連絡先の記載
* BigQuery IAM と分離された権限設定
* いくつかのデータセットをまとめたエクスチェンジ単位の権限設定

これらの特徴により、特に大規模なデータ共有において、優れた選択肢となります。

## Web UI から利用状況の確認
Analytics Hub の管理者画面から、共有データへのアクセスの統計情報を見ることができます。

Organization 名は実際の組織名が入るため a.bqfun.jp などに置き換えてあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135291/92509d13-f2f2-58d9-cf24-96de08b579e1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135291/4faeca28-9d84-82ae-3da7-241c17688ea0.png)


## データのコピー防止
### 下りデータ オプション
Analytics Hub では、データのエクスポートを制限する下り（外向き）データ オプションがサポートされています。
これを有効化すると、クエリは不自由なく実行できますが、クエリ結果のダウンロードやテーブルへの書き出しなどを制限できます。この機能によって、データの所有権を移転させない、データリネージを分断しないなどを実現できます。

### データ クリーンルーム
データ クリーンルームもサポートされており、十分に多数を含むような集計結果しか計算しないようにできます。

詳しくは、[公式ドキュメント](https://cloud.google.com/bigquery/docs/data-clean-rooms)を確認してください。

## データ提供を受けた組織で Data Catalog などに別な実態として管理する
データ共有を受けた側の組織では、リンクされたデータセットが別実態として管理できます。
BigQuery ラベルや Data Catalog などを、管理元に引きずられることなく、別途管理することができます。

## BigQuery IAM と分離された権限設定
Analytics Hub でデータ共有を行う場合は、BigQuery IAM ではなく、Analytics Hub 内の IAM 制御を行います。一つのデータセットを組織内と組織外両方に共有する際は、組織外への共有を Analytics Hub IAM に分離しておくことができて見通しが良くなります。BigQuery IAM で一貫して管理したい場合もあるため、これ以外の観点も含めて技術選定しましょう。

## いくつかのデータセットをまとめたエクスチェンジ単位の権限設定
BigQuery データセットと 1 対 1 対応する Analytics Hub のリソースはリスティングと呼ばれる単位です。リスティングをまとめた単位にエクスチェンジがあり、エクスチェンジでもリスティングでも権限設定ができます。包括的に複数のデータセットを共有したい場合は、Analytics Hub の方が一貫性を保ちやすいです。

## 制限事項と対応策
Analytics Hubの利用にはいくつかの制限がありますが、これらは適切な管理と計画により対処可能です。
特に、対応する BigQuery オブジェクトや機能、リージョンが少ない点は気になる場合がありますが、事前に十分な計画を行うことで対処できます。1 年前と比べると機能は圧倒的に充実してきており、気になる欠けた機能はほとんどありません。。

# Analytics Hub の優位性
Analytics Hub は、データ共有のプロセスを助け、効率よくデータ共有を実現することができます。特に大規模な組織や複数の組織、外部パートナー間でのデータ共有において、データ共有がボトルネックにならないように支援してくれます。親会社 - 子会社でデータメッシュを構築する場合などは、Analytics Hub をぜひ試してもらいたいです。

# 結論
Analytics Hub を使うことで、安全かつ簡単に、BigQuery データ共有とその管理体制の構築を実現できます。データ活用の効率を上げて、ビジネスの成長に貢献していきたいですね。
今後の BigQuery と Analytics Hub の発展にも期待しながら、新しい機能をどんどん使って改善要望を挙げていきましょう！