BigQueryデータクリーンルームを活用してセキュアにデータを共有する
電通デジタルでデータサイエンティストを務める吉田です。
昨年開催されたGoogle Cloud Next ‘23のセッションの中で、BigQueryのデータクリーンルームに関する発表があり、同時にプレビュー版がリリースされました。
今回の記事では、このデータクリーンルームをウォークスルーしてみたいと思います。
データクリーンルームとは
一般的には、データクリーンルームとは、プライバシーが保護された状態でデータを統合・分析できる環境のことを意味します。
あらゆる企業は、自社が保有する顧客データや事業成果のデータと第三者のデータを組み合わせて分析することにより、価値のある新たな洞察を得ることが期待できます。また、自社のデータを第三者と共有し、それを収益化することは新たなビジネスチャンスとなります。
例として、マーケティング業界では、決済事業者の持つ購買データとメーカーの持つ顧客データ、広告配信事業者の持つ広告配信ログデータを統合分析し、ユーザーインサイトやマーケティング効果を分析するような構想が取り上げられることがあります。
一方で、顧客情報などのセンシティブなデータの共有にあたっては、厳しいプライバシー要件やセキュリティ要件がハードルになることがしばしばあります。そのため、企業にとってはデータの流出や個人が特定されることを防ぐ機構を伴った技術的座組が必須となります。
BigQueryのデータクリーンルームは、高度なセキュリティとプライバシー保護を実現しながらデータを共有できる環境を提供します。
データの提供元となるデータコントリビューターは基本的にデータを移動またはコピーすることなく、機密性の高いデータを共有することができます。また、集計できるサンプル数にしきい値を設定したり、実行可能なクエリのタイプを制限する分析ルールを設定したりすることも可能です。
基本的な使い方
データクリーンルームはBigQuery Analytics Hubを通じて提供されます。
データの提供元となるデータコントリビューターは数クリックでクリーンルームを開設することができます。
Google CloudのコンソールからAnalytics Hubにアクセスし、[データ クリーン ルームを作成(プレビュー)] を押下して、リージョンやクリーンルーム名など必要事項を入力して新たなクリーンルームを作成します。
ここで、作成したクリーンルームにデータを追加することで共有可能な状態になります。
共有するデータはデータセット単位で追加されるため、共有用にデータセットを新たに作成することが推奨されます。
作成されたデータクリーンルームを選択し、[データを追加] を押下して共有するデータセットを選択してデータクリーンルームにデータを追加します。
このとき、データセット内のデータはテーブルではなくビューにすることで、データを選別・加工して共有することができます。また、ビューに対してプライバシーポリシーを適用することで、クエリ結果の各行に貢献する特定データ列の値の最小数を指定することができます。
例えば下記のような Orders表があるとします。
プライバシーポリシーはビューを作成する際にクエリ内で定義します。
例えば、下記のクエリは mydataset.orders テーブルに含まれる customer_id 列に対して、表示される集計結果に貢献するデータ数が3以上のものに限って集計を可能にするポリシーを伴ったビューを作成するものです。
create or replace view mydataset.ordersview
option (
privacy_policy = '{"aggregation_threshold_policy": {"threshold": 3, "privacy_unit_columns": "customer_id"}}'
)
as (select * from mydataset.orders)
このとき、 privacy_unit_column に指定されたデータ列の値はクエリ結果としては表示されません。
また、下記のようなSQLで item_id ごとの集計をするときにも customer_id がしきい値以上でないと集計結果に表示されません。
select with aggregation_threshold
item_id,
count(distinct customer_id) AS customer_count,
sum(totalprice) AS sum_totalprice
from
mydataset.ordersview
group by customer_id;
集計結果
item_id "I03" を購入したカスタマーは2人しかおらずしきい値の3を満たさないためクエリ結果には表示されません。
このようにしてデータコントリビューターは実行可能なクエリに制限を設けることができます。
データの共有先となるデータサブスクライバーは、Analytics Hubの [リスティングを検索] からアクセス可能なデータクリーンルームを検索・選択して自身のプロジェクトにデータセットとして取り込み、クエリで利用できるようになります。
データサブスクライバーには、データクリーンルームのオーナープロジェクトでの、Analytics Hub サブスクライバー(roles/analyticshub.subscriber)とAnalytics Hub サブスクリプション 所有者(roles/analyticshub.subscriptionOwner)ロールが必要になります。また、データサブスクライバーのBigQueryはEnterprise Plus エディションを利用していることが必要になります。
本記事の執筆時点ではデータクリーンルームはプレビュー版ですが、今後も機能が拡張されていくことが考えられます。金融業界や医療機関など特にセンシティブなデータを取り扱うことが多い業界では、クイックにデータを共有・統合してビジネスを加速させる上で、データクリーンルームは強力な武器になり得るでしょう。
今後のデータ駆動型ビジネスにとって、BigQueryのデータクリーンルームは、データの価値を最大化し、同時にプライバシーとセキュリティの保護を実現する上で注目のツールになっていくことが予想されます。
参考
● BigQuery のデータ クリーンルームによる安全でプライバシー重視の共有
● センシティブ データをデータ クリーン ルームと共有する