Delta Sharing を使用してデータと AI 資産を安全に共有する

この記事では、Azure Databricks の Delta Sharing を紹介しています。これは、当該のユーザーが Databricks を使用しているかどうかを問わずに Azure Databricks 内のデータと AI 資産を組織外のユーザーと共有できる、セキュリティで保護されたデータ共有プラットフォームです。

重要

このサイトの Delta Sharing の記事では、Azure Databricks のデータ、ノートブック、AI モデルの共有に焦点を合わせています。 Delta Sharing は、他のプラットフォームからの Delta テーブルを共有するために使用できる オープンソース プロジェクトとしても使用できます。 Delta Sharing では、データ製品を交換するためのオープン フォーラムである Databricks Marketplace のバックボーンも提供します。

Note

Delta Sharing による共有データへのアクセスを許可されている "データ受信者" であり、そのデータにアクセスする方法を知りたいだけの場合は、「Delta Sharing を使用した共有データへのアクセス (受信者の場合)」を参照してください。

Delta Sharing とは

Delta Sharing は、使用するコンピューティング プラットフォームに関係なく、他の組織と安全にデータを共有するために Databricks によって開発されたオープン プロトコルです。

Delta Sharing を使用してデータを共有するには、次の 3 つの方法があります。

  1. Databricks 間共有プロトコル。これを使用して、Unity Catalog 対応のワークスペースからのデータと AI 資産を、Unity Catalog 対応の Databricks ワークスペースへのアクセス権を同様に持っているユーザーと共有できます。

    このアプローチでは、Azure Databricks に組み込まれている Delta Sharing サーバーを使用します。 ノートブックの共有、Unity Catalog ボリュームの共有、Unity Catalog の AI モデル共有、Unity Catalog のデータ ガバナンス、監査、プロバイダーと受信者の両方の使用状況追跡など、他のプロトコルではサポートされていない一部の Delta Sharing 機能がサポートされています。 Unity Catalog と統合すると、プロバイダーと受信者の両方のセットアップとガバナンスが簡素化され、パフォーマンスが向上します。

    Delta Sharing の Databricks 間プロトコルを使用してデータを共有する (プロバイダーの場合)」を参照してください。

  2. Databricks オープン共有プロトコル。これを使用して、Unity Catalog 対応の Databricks ワークスペースで管理する表形式データを、任意のコンピューティング プラットフォーム上のユーザーと共有できます。

    このアプローチでは、Azure Databricks に組み込まれている Delta Sharing サーバーを使用します。これは、Unity Catalog を使ってデータを管理し、Databricks を使用していないか、Unity Catalog 対応の Databricks ワークスペースにアクセスできないユーザーと共有する場合に便利です。 プロバイダー側での Unity Catalog との統合により、プロバイダーでのセットアップとガバナンスが簡素化されます。

    Delta Sharing オープン共有プロトコルを使用してデータを共有する (プロバイダーの場合)」を参照してください。

  3. オープンソースの Delta Sharing サーバーのカスタマー マネージド実装。これにより、Databricks かどうかを問わず、任意のプラットフォームから任意のプラットフォームに共有できます。

    Azure Databricks のドキュメントでは、独自の Delta Sharing サーバーを設定する手順については説明していません。 github.com/delta-io/delta-sharing を参照してください。

共有、プロバイダー、受信者

Azure Databricks の Delta Sharing の基になる主な概念は、"共有"、"プロバイター"、"受信者"です。

共有とは

Delta Sharing では、"共有" とは、プロバイダーが 1 人以上の受信者と共有するテーブルとテーブル パーティションの読み取り専用のコレクションのことです。 受信者が Unity Catalog 対応の Databricks ワークスペースを使っている場合は、ノートブック ファイル、ビュー (行レベルと列レベルでアクセスを制限する動的ビューを含む)、Unity Catalog ボリューム、Unity Catalog モデルを共有に含めることもできます。

テーブル、ビュー、ボリューム、モデル、ノートブック ファイルは共有に対していつでも追加または削除でき、データ受信者の共有へのアクセスは、いつでも割り当てまたは取り消しを行うことができます。

Unity Catalog 対応の Azure Databricks ワークスペースにおいて、共有は Unity Catalog に登録されているセキュリティ保護可能なオブジェクトです。 Unity Catalog メタストアから共有を削除すると、その共有のすべての受信者がそれにアクセスする能力を失います。

Delta Sharing の共有を作成および管理する」参照してください。

プロバイダーとは

プロバイダーは、受信者とデータを共有するエンティティです。 プロバイダーとして組み込みの Databricks Delta Sharing サーバーを利用し、Unity Catalog を使って共有と受信者を管理する場合は、Unity Catalog に対して有効になっている Azure Databricks ワークスペースが少なくとも 1 つ必要です。 既存のワークスペースをすべて Unity Catalog に移行する必要はありません。 Delta Sharing のニーズに合わせて、新しい Unity Catalog 対応のワークスペースを作成するだけで済みます。

受信者が Unity Catalog 対応の Databricks ワークスペースに存在する場合、プロバイダーは Unity Catalog のセキュリティ保護可能なオブジェクトでもあり、プロバイダー組織を表して、その組織を一連の共有に関連付けます。

受信者とは

受信者は、プロバイダーから共有を受け取るエンティティです。 Unity Catalog において、共有はセキュリティ保護可能なオブジェクトであり、組織を表して、その組織が 1 つ以上の共有にアクセスできるようにする資格情報または安全な共有識別子に関連付けます。

データ プロバイダー (共有者) として、特定の任意の Unity Catalog メタストアに対して複数の受信者を定義できますが、複数のメタストアのデータを特定のユーザーまたはユーザーのグループと共有する場合は、メタストアごとに個別に受信者を定義する必要があります。 受信者は、複数の共有にアクセスできます。

プロバイダーが自分の Unity Catalog メタストアから受信者を削除すると、その受信者はそれまでアクセスできていたすべての共有へのアクセス権を失います。

Delta Sharing のデータ受信者を作成および管理する」を参照してください。

オープン共有と Databricks 間共有

このセクションでは、Unity Catalog に対して有効になっている Databricks ワークスペースから共有するための 2 つのプロトコルについて説明します。

Note

このセクションでは、Unity Catalog 対応の Azure Databricks ワークスペース上にプロバイダーが存在することを前提としています。 Databricks 以外のプラットフォームまたは Unity Catalog 以外のワークスペースから共有するオープンソースの Delta Sharing サーバーの設定について知るには、github.com/delta-io/delta-sharing を参照してください。

プロバイダーによる Azure Databricks での Delta Sharing の使用方法は、データを共有する相手によって異なります。

  • オープン共有では、Azure Databricks へのアクセス権を持つかどうかに関係なく、任意のユーザーとデータを共有できます。
  • "Databricks 間共有" では、自分のものとは異なる Unity Catalog メタストアにアタッチされているワークスペースを持つ Azure Databricks ユーザーとデータを共有できます。 Databricks 間ではノートブック、ボリューム、モデルの共有もサポートされています。これはオープン共有では使用できません。

オープン Delta Sharing とは

Databricks を使用しているかどうかに関係なく、Azure Databricks ワークスペースの外部のユーザーとデータを共有する場合は、オープン Delta Sharing を使用してデータを安全に共有できます。 データ プロバイダーとして、トークンを生成し、それを受信者と安全に共有します。 受信者は、トークンを使用して認証し、アクセス権が付与された共有に含められたテーブルへの読み取りアクセス権を取得します。

受信者は、次のような多くのコンピューティング ツールとプラットフォームを使用して共有データにアクセスできます。

  • Azure Databricks
  • Apache Spark
  • Pandas
  • Power BI

Delta Sharing コネクタの完全なリストとそれらの使用方法については、Delta Sharing のドキュメントを参照してください。

Delta Sharing オープン共有プロトコルを使用してデータを共有する (プロバイダーの場合)」も参照してください。

Databricks 間 Delta Sharing とは

Unity Catalog が有効な Databricks ワークスペースを持つユーザーとデータを共有する場合は、Databricks 間 Delta Sharing を使用できます。 Databricks 間共有を使用すると、AWS、Azure、GCP のいずれにあるかにかかわらず、他の Databricks アカウントのユーザーとデータを共有できます。 また、独自の Databricks アカウント内のさまざまな Unity Catalog メタストア間でデータを安全に共有する優れた方法でもあります。 同じ Unity Catalog メタストアにアタッチされているワークスペース間でデータを共有する際は Delta Sharing を使用する必要がないことに注意してください。そのようなシナリオでは、Unity Catalog 自体を使用して、ワークスペース間のデータへのアクセスを管理できるためです。

Databricks 間共有の利点の 1 つは、共有受信者が共有にアクセスするためにトークンを必要とせず、プロバイダーが受信者トークンを管理する必要がないという点です。 共有接続のセキュリティ (すべての ID 検証、認証、監査を含む) は、Delta Sharing と Databricks プラットフォームによって完全に管理されます。 もう 1 つの利点は、Databricks ノートブック ファイル、ビュー、Unity Catalog ボリューム、Unity Catalog モデルを共有できることです。

Delta Sharing の Databricks 間プロトコルを使用してデータを共有する (プロバイダーの場合)」を参照してください。

プロバイダー管理者が Delta Sharing を設定する方法

このセクションでは、プロバイダーが Delta Sharing を有効にして、Unity Catalog 対応の Azure Databricks ワークスペースから共有を開始する方法の概要について説明します。 オープンソースの Delta Sharing については、github.com/delta-io/delta-sharing を参照してください。

同じアカウントの Unity Catalog メタストア間の Databricks 間共有は常に有効になります。 プロバイダーが Delta Sharing で他のアカウントまたは Databricks 以外のクライアントの Databricks ワークスペースとデータを共有できるようにしたい場合、Azure Databricks アカウント管理者またはメタストア管理者が次のセットアップ手順 (概要) を実行します。

  1. 共有するデータを管理する Unity Catalog メタストアに対して Delta Sharing を有効にします。

    Note

    Delta Sharing を使用してアカウント内の他の Unity Catalog メタストアのユーザーとのみデータを共有する場合は、メタストアで Delta Sharing を有効にする必要はありません。 1 つの Azure Databricks アカウント内でのメタストア間の共有は、既定では有効になっています。

    メタストアでの Delta Sharing 有効化」を参照してください。

  2. Unity Catalog メタストアに登録されているデータ資産を含む共有を作成します。

    Databricks 以外の受信者と共有する (オープン共有と呼ばれます) 場合、Delta または Parquet 形式のテーブルを含めることができます。 Databricks 間の共有を使用する予定の場合は、ビュー、Unity Catalog ボリューム、Unity Catalog モデル、ノートブック ファイルを共有に追加することもできます。

    Delta Sharing の共有を作成および管理する」参照してください。

  3. 受信者を作成します。

    Delta Sharing のデータ受信者を作成および管理する」を参照してください。

    受信者が Databricks ユーザーではない場合、または Unity Catalog 用に有効にされている Databricks ワークスペースへのアクセス権を持たない場合は、オープン共有を使用する必要があります。 その受信者に一連のトークンベースの資格情報が生成されます。

    受信者が Unity Catalog 用に有効にされている Databricks ワークスペースへのアクセス権を持つ場合は、Databricks 間共有を使用でき、トークンベースの資格情報は必要ありません。 受信者からの共有識別子 を要求し、それを使用してセキュリティで保護された接続を確立します。

    ヒント

    自分自身をテスト受信者として使用して、セットアップ プロセスを試します。

  4. 受信者に、1 つ以上の共有へのアクセス権を付与します。

    Delta Sharing データ共有へのアクセスを許可および管理する (プロバイダーの場合)」を参照してください。

    Note

    この手順は、USE SHAREUSE RECIPIENTSET SHARE PERMISSION の特権を持つ管理者以外のユーザーが実行することもできます。 「Unity Catalog の権限とセキュリティ保護可能なオブジェクト」を参照してください。

  5. 共有に接続するために必要な情報を受信者に送信します (オープン共有のみ)。

    受信者にその接続情報を送信する」を参照してください。

    オープン共有の場合、セキュリティで保護されたチャネルを使用して、トークンベースの資格情報をダウンロードできるアクティブ化リンクを受信者に送信します。

    Databricks 間共有の場合、受信者に共有へのアクセス権を付与するとすぐに、共有に含まれるデータが受信者の Databricks ワークスペースで使用できるようになります。

受信者が共有データにアクセスできるようになりました。

受信者が共有データにアクセスする方法

受信者は、読み取り専用形式で共有データ資産にアクセスします。 共有ノートブック ファイルは読み取り専用ですが、他のノートブックと同様に、複製してから受信者ワークスペースで変更して実行できます。

セキュリティで保護されたアクセスは、共有モデルによって異なります。

データ プロバイダーが自分の Databricks アカウントのデータ テーブルまたはボリュームを更新するたびに、更新が受信者のシステムに準リアルタイムで表示されます。

共有データを共有し、アクセスしているユーザーを追跡する方法

Unity Catalog 対応の Azure Databricks ワークスペース上のデータ プロバイダーは、Azure Databricks の監査ログとシステム テーブルを使用して、共有と受信者の作成および変更を監視し、共有に対する受信者アクティビティを監視できます。 「データ共有の監査と監視」を参照してください。

Databricks ワークスペースで共有データを使用するデータ受信者は、Databricks の監査ログとシステム テーブルを使用して、誰がどのデータにアクセスしているのかを把握できます。 「データ共有の監査と監視」を参照してください。

ボリュームの共有

Databricks 間共有フローを使用して、ボリュームを共有できます。 「共有にボリュームを追加する」 (プロバイダーの場合)、および「Databricks 間 Delta Sharing を使用して共有されたデータを読み取る (受信者の場合)」を参照してください。

モデルの共有

Databricks 間共有フローを使用して、モデルを共有できます。 「共有にモデルを追加する」 (プロバイダーの場合)、および「Databricks 間 Delta Sharing を使用して共有されたデータを読み取る (受信者の場合)」を参照してください。

ノートブックの共有

Delta Sharing を使用すると、Databricks 間の共有フローを使用してノートブック ファイルを共有できます。 「ノートブック ファイルを共有に追加する」 (プロバイダーの場合) と「共有ノートブックの読み取り」 (受信者の場合) を参照してください。

行および列レベルでのアクセスの制限

受信者のプロパティに基づいて特定のテーブル データへのアクセスを制限する動的ビューを共有できます。 動的ビュー共有には、Databricks 間の共有フローが必要です。 「動的ビューを共有に追加して、行と列のフィルター処理を行う」を参照してください。

Delta Sharing とストリーミング

Delta Sharing では、Spark 構造化ストリーミングがサポートされます。 プロバイダーでは、履歴を含むテーブルを共有して、受信者が構造化ストリーミング ソースとして使用し、共有データを低待機時間で増分処理できるようにします。 受信者は、履歴と共有されているテーブルに対して Delta Lake タイム トラベル クエリを実行することもできます。

履歴を含むテーブルを共有する方法については、「共有にテーブルを追加する」を参照してください。 共有テーブルをストリーミング ソースとして使用する方法については、「Apache Spark 構造化ストリーミングを使用してテーブルにクエリを実行する」 (Databricks 間の共有の受信者の場合)、または「Spark 構造化ストリーミングを使用して共有テーブルにアクセスする」 (開いている共有データの受信者の場合) を参照してください。

Azure Databricks でのストリーミング」も参照してください。

Delta Sharing に関する FAQ

Delta Sharing に関してよく寄せられる質問は、次のとおりです。

Delta Sharing を使用するには Unity Catalog が必要ですか?

いいえ。共有データを (プロバイダーとして) 共有または (受信者として) 使用するために Unity Catalog は必要ありません。 ただし、Unity Catalog には、表形式以外の AI 資産共有のサポート、すぐに使用できるガバナンス、シンプルさ、クエリ パフォーマンスなどの利点があります。

プロバイダーでは、次の 2 つの方法でデータを共有できます。

  • Unity Catalog の管理下に共有する資産を配置し、組み込みの Azure Databricks Delta Sharing サーバーを使用して共有します。

    資産をすべて Unity Catalog に移行する必要はありません。 共有する資産を管理するために、Unity Catalog に対して有効になっている Azure Databricks ワークスペースが 1 つだけ必要です。 一部のアカウントでは、新しいワークスペースで Unity Catalog が自動的に有効になります。 「Unity Catalog の自動有効化」を参照してください。

  • オープンな Delta Sharing サーバーを実装してデータを共有します。必ずしも Azure Databricks アカウントを使用する必要はありません。

受信者は、次の 2 つの方法でデータを使用できます。

  • Databricks ワークスペースなしの場合は、 Power BI、Pandas、オープンソースの Apache Spark など、多くのデータ プラットフォームで使用できるオープンソースの Delta Sharing コネクタを使用します。 「Delta Sharing オープン共有 (受信者用) を使用して共有されたデータを読み取る」と「Delta Sharing オープンソース プロジェクト」を参照してください。

  • Databricks ワークスペース内では、 受信者のワークスペースを Unity Catalog に対して有効にする必要はありませんが、有効になっている場合は、ガバナンス、シンプルさ、パフォーマンスの利点があります。

    これらの利点を必要とする受信者の組織で、資産をすべて Unity Catalog に移行する必要はありません。 共有されている資産を管理するために、Unity Catalog に対して有効になっている Azure Databricks ワークスペースが 1 つだけ必要です。 一部のアカウントでは、新しいワークスペースで Unity Catalog が自動的に有効になります。 「Unity Catalog の自動有効化」を参照してください。

Delta Sharing オープン共有 (受信者用) を使用して共有されたデータを読み取る」と「Databricks 間 Delta Sharing を使用して共有されたデータを読み取る (受信者の場合)」を参照してください。

Delta Sharing を使用するには、Databricks の顧客である必要がありますか?

いいえ。Delta Sharing はオープン プロトコルです。 Databricks 以外のデータは、任意のデータ プラットフォーム上の受信者と共有できます。 プロバイダーは、任意のコンピューティング プラットフォームから共有するように、オープンな Delta Sharing サーバーを構成できます。 受信者は、Power BI、Pandas、オープンソースの Spark など、多くのデータ製品向けのオープンソースの Delta Sharing コネクタを使用して共有データを使用できます。

ただし、Azure Databricks での Delta Sharing の使用 (特に Unity Catalog 対応のワークスペースからの共有) には、多くの利点があります。

詳細については、この FAQ の最初の質問を参照してください。

Delta Sharing にはエグレス コストが発生しますか?

リージョン内の Delta Sharing では、エグレス コストは発生しません。 他のデータ共有プラットフォームとは異なり、Delta Sharing にデータ レプリケーションは必要ありません。 このモデルには多くの利点がありますが、クラウドまたはリージョン間でデータを共有する場合、クラウド ベンダーからデータ エグレス料金が請求される可能性があることを意味します。 Azure Databricks では、エグレス料金が発生しない Cloudflare R2 (パブリック プレビュー) からの共有がサポートされ、エグレス料金を監視して回避するためのその他のツールと推奨事項が提供されます。 「Delta Sharing のエグレス コストを監視および管理する (プロバイダー向け)」を参照してください。

プロバイダーは受信者のアクセスを取り消すことができますか?

はい。受信者のアクセスは、必要に応じて指定されたレベルの細分性で取り消すことができます。 特定の共有と特定の IP アドレスに対する受信者のアクセスの拒否、受信者用の表形式データのフィルター処理、受信者トークンの取り消し、受信者の完全な削除を行うことができます。 「共有への受信者のアクセスを取り消す」と「Delta Sharing のデータ受信者を作成および管理する」を参照してください。

署名付き URL を使用するのは安全ではありませんか?

Delta Sharing では、署名付き URL を使用して、オブジェクト ストレージ内のファイルへの一時的なアクセスを提供します。 これらは共有データに既にアクセスできる受信者にのみ付与されます。 また、有効期間が短く、受信者に既に付与されているレベルを超えてアクセスのレベルが拡張されることはないため、安全です。

Delta Sharing オープン共有プロトコルで使用されるトークンは安全ですか?

他の使用可能なデータ共有プラットフォームとは異なり、Delta Sharing ではクロスプラットフォーム共有が可能であるため、共有プロトコルにはオープン トークンが必要です。 トークンの有効期間を構成し、ネットワーク制御を設定して、必要に応じてアクセスを取り消すと、プロバイダーでトークンのセキュリティを確保できます。 さらに、トークンによって、受信者に既に付与されているレベルを超えてアクセスのレベルが拡張されることはありません。 「トークンのセキュリティに関する考慮事項」を参照してください。

受信者の共有に対するアクセスの管理にトークンを使用しない場合は、Databricks 間の共有を使用するか、Databricks アカウント チームに連絡して代替手段を求める必要があります。

Delta Sharing はビューの共有をサポートしていますか?

はい。Delta Sharing はビューの共有をサポートしています。 「共有にビューを追加する」を参照してください。

予定されている共有の表示の機能強化について知るには、Databricks アカウント チームに問い合わせてください。

制限事項

リソース クォータ

次の値は、Delta Sharing リソースのクォータを示しています。 下のクォータ値は、Unity Catalog 内の親オブジェクトに対して相対的に表されています。

オブジェクト Parent
provider メタストア 1000
recipients メタストア 5000
共有 メタストア 1000
tables 共有 1000
volumes 共有 1000
models 共有 1000
schemas 共有 500
notebooks 共有 100

これらのリソース制限を超えることが予想される場合は、Azure Databricks アカウント チームにお問い合わせください。

次のステップ