データが貴重な資産とされる現代において、組織間連携し、より深い洞察を引き出すことは不可欠なニーズとなっています。しかし、課題となるのが、「セキュリティ」や「プライバシー保護」に関する規制を順守しながら、機密性の高いデータをどのように共有・分析するかという点です。Databricks Clean Roomsは、こうした課題を解決する革新的なソリューションとして登場しました。元データをコピー・移動することなく、複数の関係者が安全にデータを活用・共有できる完全にセキュアな環境を提供します。

本記事では、Databricks Clean Roomsの基本概念から仕組み、導入手順、さらに運用・管理方法までを網羅的に解説し、効果的な活用をわかりやすくご紹介します。

1.Databricks Clean Roomsとは

Databricks Clean Roomsは、Delta Sharingとサーバーレスコンピューティングを活用して、安全かつプライバシーに配慮したデータコラボレーション環境を提供する、Databricksの機能の一つです。この環境では、複数の組織がそれぞれの機密データセットを直接共有することなく、共同で連携・分析を行うことが可能です。
代わりに、各関係者は審査済みのメタデータやノートブックのみを共有し、すべての処理はDatabricksが管理する中立的なクリーンルーム内で実行されます。この仕組みにより、クリーンルームを作成した側も含め、他者の元データへアクセスすることは一切できません。

2.なぜClean Roomsを使用するべきなのか?

  • 最大限のセキュリティ:元データは常にお客様のアカウントにとどまり、一切外部にコピー・移動されません。
  • 「No-Trust」モデル:すべてのコラボレータは平等な権限を持ち、管理者も含めて誰も特別な権限を持ちません。実行される操作等はすべて、相互の明示的な承認が必要です。
  • 包括的なコントロール:アセットの共有からノートブックの実行に至るまで、すべての操作が監査ログに記録されます。
  • 高い柔軟性:複数クラウド基盤と異なるリージョン間での共同作業に対応しています。
  • 高度な分析:SQLの単純クエリに留まらず、Python、R、Scala、SQLを活用した複雑な分析コードの実行も可能です。

3.前提条件

Databricks Clean Roomsを利用するには、以下の条件を満たしている必要があります。

  • Databricksアカウント: PremiumまたはEnterpriseプランであること。
  • サーバーレス コンピューティング:アカウントでサーバーレスコンピューティングが有効にされていること。
  • Unity Catalog:ご利用のワークスペースでUnity Catalogが有効にされていること。
  • Delta Sharing: Unity CatalogのメタストアでDelta Sharing機能が有効になっていること。

4.Clean Roomsはどのように機能するのか?

  1. 初期化:クリーンルームの作成者がクリーンルームを設定し、共有識別子を通じて他のコラボレーターを招待します。
  2. アセットの共有:各参加者はそれぞれ、クリーンルームにデータアセット(テーブル、ビュー、ボリューム)や分析用ノートブックを追加します。この操作は、Delta Sharingを介して行われ、中立的な環境へ安全にリンクされる仕組みになっています。
  3. ノートブックの承認:共有されたノートブックは、すべての関係者が内容を確認し、承認した場合にのみ実行可能となります。これは「no-trust」モデルを実現するための重要なメカニズムです。
  4. 中立的な環境での実行:承認済みのノートブックは、Databricksによって管理されるサーバーレスコンピューティング上で実行されます。各関係者のデータを読み取ることは可能ですが、お互いのデータを直接閲覧することはできません。
  5. 結果の共有:分析結果は、一時的かつ読み取り専用の出力テーブルに保存されます。ノートブックを実行した側は、この結果を他の関係者と共有することもできるし、さらなる分析に活用することも可能です。

5.Databricks Clean Roomsの導入手順

これからの内容では、クリーンルームを作成し、活用するまでの手順を、具体的なシナリオに沿って順を追って解説します。
シナリオとして以下の2社が含まれます:

  • A社 (作成者): 自社の顧客データを分析するためにクリーンルームを作成したいもの。
  • B社 (コラボレーター): A社から招待を受け、 クリーンルーム上でA社のデータを分析する役割を担うもの。

Clean Roomを利用するには、A社(作成)とB社(コラボレーター)の両者ともに、メタストア上でクリーンルームを作成する権限が付与されている必要があります。この権限は、クリーンルームの作成、共有識別子、データアセットの追加、ノートブックの承認等の関連操作に必要となる唯一の権限です。
※注意:DatabricksのUI上で「クリーンルーム共有識別子のコピー」オプションが表示されない場合は、メタストア上でクリーンルームを作成する権限が付与されていない可能性があります。その場合は、管理者に権限の付与を依頼するか、共有識別子を代わりに取得してもらう必要があります。

I. B社 (コラボレーター)側のワークスペースでの操作手順
ステップ1: コラボレーターの共有識別子の取得 ※このステップは最初にB社が行うべき最も重要なステップです。

  • Databricksワークスペースで、左メニューから「カタログ」>「クリーンルーム」を開きます。

  • 画面右上で自分の組織名をクリックし、「クリーンルーム共有識別子のコピー」を選択します。
  • 取得した共有識別子を、クリーンルームを作成するA社に送信します。

II. A社 (作成者)側のワークスペースでの操作手順
ステップ2: クリーンルームの作成およびコラボレーターの招待
B社から共有識別子を受け取った後、次はA社がクリーンルームを作成します。

  • 権限の用意:クリーンルームを作成するには、メタストア上でクリーンルームを作成する権限が付与されている必要があります。
  • Databricksワークスペースで、左メニューから 「カタログ」>「クリーンルーム」を開きます。

  • 右上の「クリーンルームを作成」をクリックします。

「クリーンルームを作成」の設定画面に必要な情報を入力します。

  • 「一般」フィールドの「クリーンルーム名」欄に任意の名前を入力します。(例:marketing_analysis)
  • 「コラボレーターの詳細」フィールドの「クリーンルーム共有識別子」欄に、B社から受け取った共有識別子を貼り付けます。
  • 中立的な環境用のクラウドおよびリージョンを選択します。
  • 「セキュリティ」フィールドの「ネットワークアクセス」オプションを選択します。
    • フルインターネットアクセス
      • クリーンルームからインターネット全体への接続を許可する。
      • 最大限の柔軟性を必要とするユースケースに適している。
      • ※今回のデモンストレーショでは便利性を優先し、このオプションを選択する。
    • 制限付きインターネットアクセス
      • あらかじめ承認された特定のインターネットアドレスのみへの接続を許可する。
      • セキュリティ強化やデータフローの制御を希望する場合に使用される。
  • 設定を確認して「クリーンルームを作成」ボタンをクリックします。

ステップ3: データアセットとノートブックの追加

①データアセットの追加は以下の手順に従います。

  • 作成したクリーンルームの詳細ページを開き、画面内に「アセットを追加」のプルダウンから「データアセットを追加」をクリックして共有したい顧客データのテーブルを追加します。

  • 対象のデータテーブルを選択し、「保存」ボタンをクリックします。
  • データテーブル上に必要な権限は以下の通りです。
    • 「SELECT」:テーブル・ビューのデータを読み取るための権限
    • 「USE SCHEMA」:対象のテーブルが含まれるスキーマにアクセスするための権限
    • 「USE CATALOG」:対象のスキーマが含まれるカタログにアクセスするための権限
    • 「READ VOLUME」:ボリュームを共有する場合に必要な読み取り権限
  • データアセットを共有する際には、エイリアスを指定することも可能です。これにより、実際のテーブル名やスキーマ名をコラボレーター側に見せずに、任意の名前で公開することができます。

②ノートブックの追加は以下の手順に従います。

  • Databricksワークスペースでの左メニューから「ワークスペース」を開きます。
  • 画面の右上に「作成」のプルダウンから「ノートブック」を選択して新規のノートブックを作成します。

  • 任意のノートブック名を入力します。(例:Clean Room Notebook)
  • 作成したノートブックに、以下のコードを貼り付けます。

  • 作成したクリーンルームの詳細ページに戻ります。
  • 画面内の「+ノートブックを追加」をクリックして分析用ノートブックをアップロードします。

  • 先ほど作成したクリーンルーム(例:Clean Room Notebook)を選択します。
  • 「ノートブックランナー」欄で、このノートブックを実行するユーザーを指定します。
    • 例:B社に分析を任せたい場合は、ランナーとしてB社側の担当者を選択します。
    • この手順では、B社がランナーとなる前提で設定を進めます。
  • 「ノートブックを追加」ボタンをクリックして登録を完了します。

※重要な注意点:ノートブック内のコードでは、クリーンルームを作成する際に自動的に割り当てられたカタログ名を使用してデータにアクセスする必要があります。

  • 作成者のデータ(自社): creator.schema_name.table_name
  • コラボレーターのデータ: collaborator_1.schema_name.table_name

III. B社 (コラボレーター)側のワークスペースに戻ります。

ステップ4:データアセットの追加(B社側) ※A社によって作成されたクリーンルームは、B社(コラボレーター)のワークスペース内にも自動的に表示されています。

  • 自社データの追加:B社のDatabricksワークスペースで、「カタログ」>「クリーンルーム」を開きます。共有されたクリーンルームの詳細ページで「+データアセットを追加」をクリックします。

  • 対象のデータテーブルを追加します。
  • データテーブル上に必要な権限は以下の通りです。
    • 「SELECT」:テーブル・ビューのデータを読み取るための権限。
    • 「USE SCHEMA」:対象のテーブルが含まれるスキーマにアクセスするための権限。
    • 「USE CATALOG」:対象のスキーマが含まれるカタログにアクセスするための権限。
    • 「READ VOLUME」:ボリュームを共有する場合に必要な読み取り権限。
  • 「保存」ボタンをクリックします。

ステップ5:ノートブックの実行と結果の確認

ノートブックがクリーンルームに追加された後、ランナー(本シナリオではコラボレーターのB社)に指定された担当者のみが「実行」ボタンを押すことができます。

  • B社のワークスペースでクリーンルームを開きます。
  • 対象のノートブック(例:Clean Room Notebook)を選択します。

  • 「実行」ボタンをクリックしてノートブックを実行します。

  • クリーンルームでノートブック実行画面で、「出力」項目に「ノートブックの出力を保存」のチェックボックスが表示されます。
  • このチェックボックスをオンにすると、ノートブックの実行結果が新しい専用の出力カタログに保存されます。 (例:marketing_analysis_output)
  • 出力データは30日間保持され、ノートブックを実行した後から再度クエリで参照することが可能です。
  • 「実行」ボタンをクリックしてノートブックの実行および出力結果の保存を行います。

  • 画面右上に「実行」ボタンをクリックした後、クリーンルーム上でノートブックが実行されます。
  • ジョブが正常に開始されると、上部に確認通知のメッセージが表示されます。
  • その通知内にある「詳細を表示する」をクリックすると、ジョブの実行状況、ログ情報、実行結果の内容を確認できます。

  • ノートブックを実行するステータスが「成功」になったら、結果が画面上に表示されます。
  • 表示される結果は以下の内容です。
    • 実行されたノートブックのソースコード
    • 実行時間(例:48.08秒).
    • この結果は、Databricksジョブ内で実行されたノートブックタスクの成果物として表示され、クリーンルーム内にSQLセルによって出力テーブルを作成された内容です。
  • 表示されたデータテーブルはスクロール、絞り込み、およびダウンロードの操作が可能です。
  • 画面右側のパネルには、実行者、開始/終了時間、保存関係などの実行ジョブに関する詳細情報が表示されるので、簡単に状況を確認できます。

  • クリーンルームの出力ファイルにアクセスします。

  • 「output_analysis_results」テーブルが正常に作成されました。
  • 作成された出力テーブルの内容をプレビュー表示するには、SQLウエアハウスまたはクラスタが稼働中の状態である必要があります。

6.管理および監視

Databricksはクリーンルームの管理と監視のための強力なツールを提供しています。

  • 「ジョブの実行」タブ:ステータス、ランナー、実行時間などの実行されたすべてのノートブックの履歴を確認できます。
  • 「権限」タブ:クリーンルームの閲覧・編集・実行・管理ができるアクセスの権限を管理します。
  • 「セキュリティ」タブ:ネットワークアクセスの情報を表示します。

「ジョブの実行」タブ

主な機能は以下の通りです。

  • クリーンルーム内で実行されたすべてのジョブの履歴 を一覧表示
  • 各実行のステータス(成功/失敗/実行中等)を確認可能
  • 実行時間および詳細情報を確認可能

表示される内容は以下の通りです。

  • ステータス:実行の状態( ✓成功、✗失敗等)を表す。
  • 開始時刻:実行を開始した日時
  • 期間:実行にかかった合計時間
  • ノートブック:実行されたノートブック名
  • 出力スキーマ:作成された出力スキーマ(ある場合)

「権限」タブ

基本的な権限は以下の通りです。

  • 「BROWSE」:オブジェクトのメタストアおよびデータの構成を読み取る機能を提供する。
  • 「EXECUTE CLEAN ROOM TASK」: クリーンルーム内のタスクやノートブックを実行する権限を付与する。
  • 「MODIFY CLEAN ROOM」:クリーンルームノートブックとデータ構成を編集する権限を付与する。

高度な権限は以下の通りです。

  • 「ALL PRIVILEGES」:すべての権限を付与する。(※最も高い権限)
  • 「MANAGE」:オブジェクトの管理、編集、削除が可能であり、権限の変更もできます。

権限の付与方法は以下のお取りです。

  1. 検索バーにプリンシパル名(ユーザー/グループ)を入力します。
  2. チェックボックスによって適切な権限を選択します。
  3. 「付与」ボタンをクリックして権限を付与します。

「セキュリティ」タブ

フルインターネットアクセス

  • クリーンルームからインターネット全体への接続を許可する。
  • すべてのインターネットアドレスはクリーンルームからアクセスできる。

権限付きインターネットアクセス

  • あらかじめポリシーで承認された特定のインターネットアドレス(宛先)のみへの接続を許可する。
  • 上記以外の宛先がブロックされ、追加されている宛先のみアクセスできる。

※注意事項:

  • このネットワークアクセス設定は、クリーンルームの作成後に変更できません。
  • クリーンルームで共有されたデータアセットが保存されているクラウドストレージへのアクセスは常に自動で許可されます。

7.まとめ

本記事では、Azure Databricksにおける【Clean Rooms】を活用し、安全かつ効率的にデータコラボレーションを実現する方法についてご紹介しました。

今回の記事が少しでも皆さんの新しい知識や業務のご参考になれば幸いです。双日テックイノベーションでは、Azure Databricksの環境構築パッケージを用意しています。Azure DatabricksやAzure活用、マイクロソフト製品の活用についてご相談事がありましたら是非お問い合わせください!

・Azure Databricks連載記事のまとめはこちら

お問い合わせはこちら


この記事を読んだ方へのオススメコンテンツはこちら


この記事を書いた人

i-luannt