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

この記事では、Databricks のDelta Sharingを紹介します。これは、ユーザーが Databricks を使用しているかどうかに関係なく、Databricks 内のデータと AI アセットを組織外のユーザーと共有できる安全なデータ共有プラットフォームです。

重要

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

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

Delta Sharing とは?

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

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

  1. Databricks-to-Databricks 共有プロトコル。Unity Catalog が有効なワークスペースのデータと AI アセットを、Unity Catalog が有効な Databricks ワークスペースへのアクセス権を持つユーザーと共有できます。

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

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

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

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

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

  3. オープンソースの Delta Sharing サーバーの顧客管理実装で、Databricks かどうかに関係なく、任意のプラットフォームから任意のプラットフォームに共有できます。

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

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

Databricks の Delta Sharing の基礎となる主な概念は、 共有プロバイダー、および 受信者です。

共有とは?

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

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

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

Delta Sharing の共有の作成と管理を参照してください。

プロバイダーとは

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

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

受信者とは?

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

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

プロバイダーが Unity Catalog メタストアから受信者を削除すると、その受信者は、以前にアクセスできたすべての共有にアクセスできなくなります。

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

オープンな共有とDatabricks-to-Databricks共有

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

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

プロバイダーが Databricks で Delta Sharing を使用する方法は、データを共有しているユーザーによって異なります。

  • オープン共有を使用すると、Databricksにアクセスできるかどうかに関係なく、任意のユーザーとデータを共有できます。

  • DatabricksDatabricks 共有を使用すると、ワークスペースが自分とは異なる Unity Catalog メタストアに接続されているDatabricksユーザーとデータを共有できます。Databricks-to-Databricks では、オープン共有では使用できないノートブック、ボリューム、モデルの共有もサポートされています。

オープンDelta Sharingとは?

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

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

  • Databricks

  • Apache Spark

  • Pandas

  • Power BI

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

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

Databricks-to-Databricks Delta Sharingとは?

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

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

Delta Sharing Databricks-to-Databricks プロトコルを使用してデータを共有する (プロバイダー向け)」も参照してください。

プロバイダー管理者は Delta Sharingをどのように設定しますか?

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

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

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

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

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

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

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

    Delta Sharing の共有の作成と管理を参照してください。

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

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

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

    受信者がUnity Catalogが有効になっているDatabricksワークスペースにアクセスできる場合は、Databricks-to-Databricks共有が使用可能であり、トークンベースの資格情報は必要ありません。受信者に共有識別子を要求し、それを使用して安全な接続を確立します。

    ヒント

    テスト受信者として自分を使用して、セットアッププロセスを試してください。

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

    Delta Sharing データ共有へのアクセスの付与と管理 (プロバイダー向け)」を参照してください。

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

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

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

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

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

これで、受信者は共有データにアクセスできるようになります。

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

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

安全なアクセスは、共有モデルによって異なります。

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

共有データを共有およびアクセスしているユーザーを追跡する方法とは?

Unity カタログが有効な Databricks ワークスペース上のデータ プロバイダーは、Databricks 監査ログとテーブル システムを使用して、共有と受信者の作成と変更を監視し、共有上の受信者のアクティビティを監視できます。 データ共有の監査と監視を参照してください。

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

ボリュームの共有

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

モデルの共有

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

ノートブックの共有

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

行レベルと列レベルでのアクセスの制限

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

Delta Sharingとストリーミング

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

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

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

Delta Sharing よくある質問

Delta Sharingに関するよくあるご質問をまとめました。

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

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

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

  • 共有するアセットを Unity Catalog 管理下に置き、組み込みの Databricks Delta 共有サーバーを使用して共有します。

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

  • Databricks アカウントを必ずしも使用せずに、 オープン Delta Sharing サーバー を実装してデータを共有します。

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

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

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

    これらの利点を必要とする受信者組織は、すべての資産を Unity Catalog に移行する必要はありません。 Unity Catalog で共有されている資産を管理するために必要な 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 コネクタを使用して共有データを使用できます。

ただし、Databricks で Delta Sharing を使用すること、特に Unity カタログ対応ワークスペースからの共有には多くの利点があります。

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

Delta Sharingは egress のコストがかかりますか?

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

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

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

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

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

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

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

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

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

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

ビューの共有に対して計画されている機能強化については、Databricks アカウント チームにお問い合わせください。

制限

リソースクォータ

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

オブジェクト

プロバイダー

メタストア

1000

受信者

メタストア

5000

共有

メタストア

1000

テーブル

共有

1000

ボリューム

共有

1000

モデル

共有

1000

スキーマ

共有

500

ノートブック

共有

100

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