Delta Sharing のデータ受信者の作成と管理

この記事では、 Delta Sharingの受信者を作成および管理する方法について説明します。

受信者は、共有データを使用する現実世界のユーザーまたはユーザーのグループの ID を表す名前付きオブジェクトです。 受信者を作成する方法は、受信者が Unity Catalogが有効になっている Databricks ワークスペースにアクセスできるかどうかによって異なります。

  • Unity Catalogが有効になっている Databricks ワークスペースにアクセスできる受信者の場合、Databricks によって完全に管理されるセキュリティで保護された接続を使用して受信者オブジェクトを作成できます。この共有モードは 、Databricks間共有と呼ばれます。

  • Unity Catalogが有効になっている Databricks ワークスペースにアクセスできない受信者の場合は、トークンベースの認証を使用して管理するセキュリティで保護された接続で 、オープン共有を使用する必要があります。

これら 2 つの共有モードの詳細と、どちらを選択するタイミングについては、「 オープン共有と Databricks 間共有」を参照してください。

要件

受信者を作成するには:

  • メタストア管理者であるか、共有するデータが登録されている Unity Catalog メタストアに対する CREATE_RECIPIENT 権限を持っている必要があります。

  • 受信者は、その Unity Catalog メタストアがアタッチされている Databricks ワークスペースを使用して作成する必要があります。

  • Databricks ノートブックを使用して受信者を作成する場合、クラスターでは Databricks Runtime 11.3 LTS 以上を使用し、共有またはシングルユーザー クラスター アクセス モードを使用する必要があります。

その他の受信者管理操作 (表示、削除、更新、共有への受信者アクセスの許可など) については、この記事の操作固有のセクションに記載されているアクセス許可の要件を参照してください。

Databricks にアクセスできるユーザーの受信者オブジェクトを作成する (Databricks間共有)

データ受信者が、 Unity Catalogが有効になっているDatabricks ワークスペースにアクセスできる場合は、認証の種類が DATABRICKS の受信者オブジェクトを作成できます。

認証の種類が DATABRICKS の受信者オブジェクトは、特定の Unity Catalog メタストア上のデータ受信者を表し、メタストアのクラウド、リージョン、および UUID で構成される 共有識別子 文字列によって受信者オブジェクト定義で識別されます。 この受信者と共有されているデータには、そのメタストアでのみアクセスできます。

ステップ 1: 受信者の共有識別子を要求する

受信者ユーザーまたはユーザー グループが共有データを操作するワークスペースにアタッチされている Unity Catalog メタストアの共有識別子を送信するように受信者ユーザーに依頼します。

共有識別子は、メタストアのクラウド、リージョン、および UUID (メタストアの一意の識別子) で構成される文字列で、 <cloud>:<region>:<uuid>の形式です。

たとえば、次のスクリーンショットでは、完全な共有識別子文字列は aws:us-west-2:19a84bee-54bc-43a2-87de-023d0ec16016です。

CURRENT_METASTORE例

受信者は、カタログ エクスプローラー、Databricks Unity Catalog CLI、または Databricks ノートブックの既定の SQL CURRENT_METASTORE 関数、または使用する予定のワークスペース内の Unity Catalog対応クラスターで実行される Databricks SQL クエリーを使用して識別子を見つけることができます。

カタログ エクスプローラーを使用して共有識別子を取得するには:

  1. Databricks ワークスペースで、[カタログ アイコン カタログ] をクリックします 。

  2. カタログパネルの上部にある歯車アイコン歯車アイコンをクリックし、 Delta Sharingを選択します。

    または、クイック アクセスページでDelta Sharing >]ボタンをクリックします。

  3. [共有アイテム]タブで、右上にある Databricks 共有組織名をクリックし、 [共有識別子のコピー]を選択します。

ノートブックまたは Databricks SQL クエリー エディターで次のコマンドを実行します。

SELECT CURRENT_METASTORE();

Databricks CLIを使用して次のコマンドを実行します。 共有識別子は、 global_metastore_idとして返されます。

databricks metastores summary

このステップに含まれる情報を連絡先に送信するか、 Databricks間共有モデルで [アクセスを取得する] を指定することで、受信者を支援することができます。

ステップ 2: 受信者を作成する

Databricks間Databricks 共有の受信者を作成するには、カタログ エクスプローラー、 Databricks Unity Catalog CLI、または Databricks ノートブックまたは Databricks SQL クエリー エディターで CREATE RECIPIENT SQL コマンドを使用できます。

必要なアクセス許可: メタストア管理者、または共有するデータが登録されている Unity Catalog メタストアに対する CREATE_RECIPIENT 権限を持つユーザー。

  1. Databricks ワークスペースで、[カタログ アイコン カタログ] をクリックします 。

  2. カタログパネルの上部にある歯車アイコン歯車アイコンをクリックし、 Delta Sharingを選択します。

    または、クイック アクセスページでDelta Sharing >]ボタンをクリックします。

  3. [共有元]タブで、 [新しい受信者]をクリックします。

  4. [受信者名] と [共有識別子] を入力します。

    共有識別子文字列全体を <cloud>:<region>:<uuid>の形式で使用します。 たとえば、 aws:us-west-2:19a84bee-54bc-43a2-87de-023d0ec16016.

  5. (オプション)コメントを入力します。

  6. [作成]をクリックします。

  7. (オプション)カスタム 受信者プロパティを作成します。

    [ プロパティの編集] > [+ プロパティの追加] をクリックします。 次に、プロパティ名 (キー) と を追加します。 詳細については、「 受信者のプロパティを管理する」を参照してください。

ノートブックまたは Databricks SQL クエリー エディターで次のコマンドを実行します。

CREATE RECIPIENT [IF NOT EXISTS] <recipient-name>
USING ID '<sharing-identifier>'
[COMMENT "<comment>"];

共有識別子文字列全体を <cloud>:<region>:<uuid>の形式で使用します。 たとえば、 aws:eu-west-1:g0c979c8-3e68-4cdf-94af-d05c120ed1ef.

受信者のカスタム プロパティを追加することもできます。 詳細については、「 受信者のプロパティを管理する」を参照してください。

Databricks CLIを使用して次のコマンドを実行します。 プレースホルダーの値を置き換えます。

  • <recipient-name>: 受信者の名前。

  • <sharing-identifier>: <cloud>:<region>:<uuid>形式の共有識別子文字列全体。 たとえば、 aws:eu-west-1:g0c979c8-3e68-4cdf-94af-d05c120ed1ef.

  • <authentication-type>: <sharing-identifier><cloud>:<region>:<uuid>形式の共有識別子文字列が指定されている場合は、 DATABRICKSに設定されます。

databricks recipients create <recipient-name> <authentication-type> --sharing-code <sharing-identifier>

受信者のカスタム プロパティを追加することもできます。 詳細については、「 受信者のプロパティを管理する」を参照してください。

受信者は DATABRICKSauthentication_type で作成されます。

他のすべてのユーザーの受信者オブジェクトを作成する (オープン共有)

Databricks ワークスペースの外部のユーザーとデータを共有する場合は、ユーザーが Databricks 自体を使用しているかどうかに関係なく、オープン Delta Sharing を使用してデータを安全に共有できます。 仕組みは次のとおりです。

  1. データ プロバイダーは、 Unity Catalog メタストアに受信者オブジェクトを作成します。

  2. 受信者オブジェクトを作成すると、Databricks によってトークン、トークンを含む資格情報ファイル、および受信者と共有するためのアクティベーションリンクが生成されます。 受信者オブジェクトの認証の種類は TOKENです。

  3. 受信者は、アクティベーションリンクにアクセスし、資格情報ファイルをダウンロードし、資格情報ファイルを使用して、アクセス権を付与した共有に含めるテーブルを認証し、読み取りアクセスを取得します。

ステップ 1: 受信者を作成する

オープン共有の受信者を作成するには、カタログ エクスプローラー、Databricks Unity Catalog CLI、または Databricks ノートブックまたは Databricks SQL クエリー エディターの CREATE RECIPIENT SQL コマンドを使用できます。

必要なアクセス許可: メタストア管理者、または共有するデータが登録されている Unity Catalog メタストアに対する CREATE_RECIPIENT 権限を持つユーザー。

  1. Databricks ワークスペースで、[カタログ アイコン カタログ] をクリックします 。

  2. カタログパネルの上部にある歯車アイコン歯車アイコンをクリックし、 Delta Sharingを選択します。

    または、クイック アクセスページでDelta Sharing >]ボタンをクリックします。

  3. [共有元]タブで、 [新しい受信者]をクリックします。

  4. 受信者 名を入力

  5. (オプション)コメントを入力します。

  6. [作成]をクリックします。

    オープン共有受信者の共有識別子は使用しません。

  7. アクティベーションリンクをコピーします。

    または、後でアクティベーションリンクを取得することもできます。 「ステップ 2: アクティベーション リンクを取得する」を参照してください。

  8. (オプション)カスタム 受信者プロパティを作成します。

    受信者の詳細タブで、プロパティの編集 > + プロパティの追加 をクリックします。 次に、プロパティ名 (Key) と Value を追加します。 詳しくは、「 受信者のプロパティを管理する」を参照してください。

ノートブックまたは Databricks SQL クエリー エディターで次のコマンドを実行します。

CREATE RECIPIENT [IF NOT EXISTS] <recipient-name>
[COMMENT "<comment>"];

受信者のカスタム プロパティを追加することもできます。 詳細については、「 受信者のプロパティを管理する」を参照してください。

Databricks CLIを使用して次のコマンドを実行します。

databricks recipients create <recipient-name>

受信者のカスタム プロパティを追加することもできます。 詳細については、「 受信者のプロパティを管理する」を参照してください。

出力には、受信者と共有する activation_url が含まれます。

受信者は TOKENauthentication_type で作成されます。

受信者を作成するときに、受信者のアクセスを制限された IP アドレスのセットに制限するオプションがあります。 また、既存の受信者に IP アクセス リストを追加することもできます。 「IP アクセス リストを使用してDelta Sharing受信者のアクセスを制限する (オープン共有)」を参照してください。

受信者に共有へのアクセス権を付与する

受信者を作成して共有を作成したら、受信者にそれらの 共有へのアクセス権を付与できます。

受信者に共有アクセスを許可するには、カタログ エクスプローラー、Databricks Unity Catalog CLI、または Databricks ノートブックまたは Databricks SQL クエリー エディターの GRANT ON SHARE SQL コマンドを使用できます。

必要なアクセス許可: 次のいずれかです。

  • メタストア管理者。

  • 共有オブジェクトと受信者オブジェクト ((USE SHARE + SET SHARE PERMISSION) または共有の所有者) および (USE RECIPIENT または受信者の所有者) の両方に対する委任されたアクセス許可または所有権。

手順については、 「Delta Sharing データ共有へのアクセスの管理 (プロバイダー向け)」を参照してください。

受信者に接続情報を送信する

共有しているデータへのアクセス方法を受信者に知らせる必要があります。 受信者と共有する情報は、Databricks 間共有とオープン共有のどちらを使用しているかによって異なります。

受信者の表示

受信者の一覧を表示するには、カタログ エクスプローラー、Databricks Unity Catalog CLI、または Databricks ノートブックまたは Databricks SQL クエリー エディターの SHOW RECIPIENTS SQL コマンドを使用できます。

必要なアクセス許可: メタストア管理者であるか、メタストア内のすべての受信者を表示する USE RECIPIENT 権限を持っている必要があります。 他のユーザーは、自分が所有する受信者にのみアクセスできます。

  1. Databricks ワークスペースで、[カタログ アイコン カタログ] をクリックします 。

  2. カタログパネルの上部にある歯車アイコン歯車アイコンをクリックし、 Delta Sharingを選択します。

    または、クイック アクセスページでDelta Sharing >]ボタンをクリックします。

  3. [共有元]タブで、 [受信者]をクリックします。

ノートブックまたは Databricks SQL クエリー エディターで次のコマンドを実行します。 必要に応じて、 <pattern> 'LIKE' 述語に置き換えます。

SHOW RECIPIENTS [LIKE <pattern>];

Databricks CLIを使用して次のコマンドを実行します。

databricks recipients list

受信者の詳細を表示する

受信者に関する詳細を表示するには、カタログ エクスプローラー、Databricks Unity Catalog CLI、または Databricks ノートブックまたは Databricks SQL クエリー エディターの DESCRIBE RECIPIENT SQL コマンドを使用できます。

必要な権限: メタストア管理者、 USE RECIPIENT 権限を持つユーザー、または受信者オブジェクトの所有者。

詳細は次のとおりです。

  • 受信者の作成者、作成タイムスタンプ、コメント、および認証の種類 (TOKEN または DATABRICKS)。

  • 受信者がオープン共有を使用している場合:トークンの有効期間、アクティベーションリンク、アクティベーションステータス(クレデンシャルがダウンロードされているかどうか)、およびIPアクセスリスト(割り当てられている場合)。

  • 受信者が Databricks 間の共有を使用している場合: 受信者の Unity Catalog メタストアのクラウド、リージョン、メタストア ID、およびアクティベーションの状態。

  • 受信者プロパティ (カスタム プロパティを含む)。 「 受信者のプロパティの管理」を参照してください。

  1. Databricks ワークスペースで、[カタログ アイコン カタログ] をクリックします 。

  2. カタログパネルの上部にある歯車アイコン歯車アイコンをクリックし、 Delta Sharingを選択します。

    または、クイック アクセスページでDelta Sharing >]ボタンをクリックします。

  3. [共有元]タブで、 [受信者]をクリックし、受信者を選択します。

ノートブックまたは Databricks SQL クエリー エディターで次のコマンドを実行します。

DESCRIBE RECIPIENT <recipient-name>;

Databricks CLIを使用して次のコマンドを実行します。

databricks recipients get <recipient-name>

受信者の共有権限を表示する

受信者にアクセス権が付与されている共有の一覧を表示するには、カタログ エクスプローラー、Databricks CLI、または Databricks ノートブックまたは Databricks SQL クエリ エディターのSHOW GRANTS TO RECIPIENT SQL コマンドを使用できます。

必要な権限: メタストア管理者、 USE RECIPIENT 権限を持つユーザー、または受信者オブジェクトの所有者。

  1. Databricks ワークスペースで、[カタログ アイコン カタログ] をクリックします 。

  2. カタログパネルの上部にある歯車アイコン歯車アイコンをクリックし、 Delta Sharingを選択します。

    または、クイック アクセスページでDelta Sharing >]ボタンをクリックします。

  3. [共有元]タブで、 [受信者]をクリックし、受信者を選択します。

  4. [共有] タブに移動して、受信者と共有されている共有の一覧を表示します。

ノートブックまたは Databricks SQL クエリー エディターで次のコマンドを実行します。

SHOW GRANTS TO RECIPIENT <recipient-name>;

Databricks CLIを使用して次のコマンドを実行します。

databricks recipients share-permissions <recipient-name>

受信者を更新する

受信者を更新するには、カタログ エクスプローラー、Databricks Unity Catalog CLI、または Databricks ノートブックまたは Databricks SQL クエリー エディターの ALTER RECIPIENT SQL コマンドを使用できます。

更新できるプロパティには、受信者名、所有者、コメント、およびカスタム プロパティが含まれます。

必要なアクセス許可: 所有者を更新するには、メタストア管理者または受信者オブジェクトの所有者である必要があります。 名前を更新するには、メタストア管理者 (または CREATE_RECIPIENT 特権を持つユーザー) であり 、所有者である必要があります。 コメントまたはカスタムプロパティを更新するには、所有者である必要があります。

  1. Databricks ワークスペースで、[カタログ アイコン カタログ] をクリックします 。

  2. カタログパネルの上部にある歯車アイコン歯車アイコンをクリックし、 Delta Sharingを選択します。

    または、クイック アクセスページでDelta Sharing >]ボタンをクリックします。

  3. [共有元]タブで、 [受信者]をクリックし、受信者を選択します。

  4. 受信者の詳細ページで、次の操作を行います。

    • 所有者を更新します。

    • コメントを編集または追加します。

    • 受信者の名前を変更します。

      [ ケバブメニュー kebab] メニューをクリックし、[ 名前の変更] を選択します。

    • カスタム 受信者プロパティを編集、削除、または追加します。

      [ プロパティの編集] をクリックします。 プロパティを追加するには、[ + プロパティの追加 ] をクリックし、プロパティ名 (キー) と [値] を入力します。 詳細については、「 受信者のプロパティを管理する」を参照してください。

ノートブックまたは Databricks SQL クエリー エディターで次のコマンドを 1 つ以上実行します。

ALTER RECIPIENT <recipient-name> RENAME TO <new-recipient-name>;

ALTER RECIPIENT <recipient-name> OWNER TO <new-owner>;

COMMENT ON RECIPIENT <recipient-name> IS "<new-comment>";

ALTER RECIPIENT <recipient-name> SET PROPERTIES ( <property-key>  =  property_value [, ...] )

ALTER RECIPIENT <recipient-name> UNSET PROPERTIES ( <property-key> [, ...] )

プロパティの詳細については、「 受信者のプロパティを管理する」を参照してください。

受信者名、コメント、所有者、IP アクセス リスト、またはカスタム プロパティの更新を含む JSON ファイルを作成します。

{
    "name": "new-recipient-name",
    "owner": "someone-else@example.com",
    "comment": "something new",
    "ip_access_list": {
            "allowed_ip_addresses": ["8.8.8.8", "8.8.8.4/10"]
    },
    "property": {
            "country": "us",
            "id": "001"
    }
}

次に、 Databricks CLIを使用して次のコマンドを実行します。 <recipient-name>を現在の受信者名に置き換え、 update-recipient-settings.jsonを JSON ファイルのファイル名に置き換えます。

databricks recipients update --json-file update-recipient-settings.json

プロパティの詳細については、「 受信者のプロパティを管理する」を参照してください。

受信者トークンの管理 (オープン共有)

オープン共有を使用して受信者とデータを共有する場合は、その受信者のトークンをローテーションする必要がある場合があります。 トークンのローテーションは、既存のトークンの有効期限を設定し、新しいトークンとアクティベーション URL に置き換えることで構成されます。

次の状況では、受信者のトークンをローテーションし、新しいアクティベーション URL を生成する必要があります。

  • 既存の受信者トークンの有効期限が近づいているとき。

  • 受信者がアクティベーション URL を紛失した場合、またはライセンス認証 URL が侵害された場合。

  • 受信者が資格情報をダウンロードした後に資格情報が破損、紛失、または侵害された場合。

  • メタストアの受信者トークンの有効期間を変更する場合。 「 受信者トークンの有効期間を変更する」を参照してください。

トークンのセキュリティに関する考慮事項

いつでも、受信者はアクティブなウイルスとローテーションされたウイルスの 2 つのウイルスを持つことができます。 ローテーションされたトークンは、有効期限が切れてアクティブなトークンに置き換えられるように設定されているトークンです。 ローテーションされたトークンの有効期限が切れるまで、トークンを再度ローテーションしようとするとエラーが発生します。

受信者のトークンをローテーションする場合、オプションで、既存の受信者トークン (つまり、ローテーションされるトークン) の有効期限が切れるまでの秒数を--existing-token-expire-in-secondsに設定できます。 値を0に設定すると、既存の受信者トークンは直ちに期限切れになります。

Databricks では、受信者が 2 つのアクティブ トークンを保持する時間を最小限に抑えながら、受信者組織が新しいアクティベーション URL にアクセスする時間を確保できる比較的短い期間に--existing-token-expire-in-secondsを設定することをお勧めします。 既存の受信者トークンが侵害された疑いがある場合、Databricks では、直ちに強制的に期限切れにすることをお勧めします。

受信者の既存のアクティベーション URL に一度もアクセスしたことがない場合は、既存のトークンをローテーションすると、そのアクティベーション URL が無効になり、新しい URL に置き換えられます。

すべての受信者の有効期限が切れている場合は、宛先をローテーションすると、既存のアクティベーション URL が新しい URL に置き換えられます。 Databricks では、トークンの有効期限が切れた受信者をすぐにローテーションまたは削除することをお勧めします。

受信者のアクティベーション URL が誤って間違った人に送信された場合、または安全でないチャネル経由で送信された場合、 Databricks次のことをお勧めします。

  1. 共有への受信者のアクセスを取り消します

  2. 受信者をローテーションし、 --existing-token-expire-in-seconds0に設定します。

  3. 新しいアクティベーション URL を、安全なチャンネルを通じて対象の受信者と共有します。

  4. アクティベーション URL にアクセスしたら、受信者に共有へのアクセス権を再度付与します。

緊急の状況では、受信者のトークンをローテーションする代わりに、 受信者を削除 して再作成できます。

受信者のトークンをローテーションする

受信者のトークンをローテーションするには、カタログ エクスプローラーまたは Databricks Unity Catalog CLI を使用できます。

必要なアクセス許可: 受信者オブジェクトの所有者。

  1. Databricks ワークスペースで、[カタログ アイコン カタログ] をクリックします 。

  2. 左側のウィンドウで、[ Delta Sharing ] メニューを展開し、[ 自分が共有] を選択します。

  3. カタログパネルの上部にある歯車アイコン歯車アイコンをクリックし、 Delta Sharingを選択します。

    または、クイック アクセスページでDelta Sharing >]ボタンをクリックします。

  4. [共有元]タブで、 [受信者]をクリックし、受信者を選択します。

  5. [ 詳細 ] タブの [トークンの有効期限] で、[ ローテーション] をクリックします。

  6. [トークンのローテーション] ダイアログで、トークンがすぐに期限切れになるように、または一定期間期限切れになるように設定します。既存のトークンの有効期限に関するアドバイスについては、「 トークンのセキュリティに関する考慮事項」を参照してください。

  7. [ 回転] をクリックします。

  8. [ 詳細 ] タブで、新しい [アクティベーション] リンクをコピーし、セキュリティで保護されたチャネルを介して受信者と共有します。 「ステップ 2: アクティベーション リンクを取得する」を参照してください。

  1. Databricks CLIを使用して次のコマンドを実行します。 プレースホルダーの値を置き換えます。

    • <recipient-name>: 受信者の名前。

    • <expiration-seconds>: 既存の受信者トークンの有効期限が切れるまでの秒数。 この期間中、既存のトークンは引き続き機能します。 値が0の場合、既存のトークンは直ちに期限切れになります。 既存のトークンの有効期限に関するアドバイスについては、 「トークンのセキュリティに関する考慮事項」を参照してください。

    databricks recipients rotate-token \
    <recipient-name> \
    <expiration-seconds>
    
  2. 受信者の新しいアクティベーションリンクを取得し、安全なチャンネルを介して受信者と共有します。 「ステップ 2: アクティベーション リンクを取得する」を参照してください。

受信者トークンの有効期間を変更する

Unity Catalog メタストアの既定の受信者トークンの有効期間を変更する必要がある場合は、カタログ エクスプローラーまたは Databricks Unity Catalog CLI を使用できます。

既存の受信者の受信者トークンの有効期間は、メタストアの既定の受信者トークンの有効期間を変更しても自動的に更新されません。 特定の受信者に新しいトークンの有効期間を適用するには、トークンをローテーションする必要があります。 受信者トークンの管理(オープン共有)を参照してください。

必要な権限: アカウント管理者。

  1. アカウントコンソールにログインします。

  2. サイドバーで [カタログ アイコン カタログ ] をクリックします 。

  3. メタストア名をクリックします。

  4. Delta Sharing 受信者トークンの有効期間の下で、編集をクリックします。

  5. [ 有効期限の設定] を有効にします。

  6. 秒数、分数、時間数、または日数を入力し、測定単位を選択します。

  7. [保存]をクリックします。

[ 有効期限の設定] を無効にしても、受信者トークンは期限切れになりません。 Databricks では、トークンの有効期限が切れるように構成することをお勧めします。

Databricks CLIを使用して次のコマンドを実行します。 12a345b6-7890-1cd2-3456-e789f0a12b34をメタストア UUID に置き換え、 86400を受信者トークンの有効期限が切れるまでの秒数に置き換えます。 この値を0に設定すると、受信者トークンは期限切れになりません。 Databricks では、トークンの有効期限を設定することをお勧めします。

databricks metastores update \
12a345b6-7890-1cd2-3456-e789f0a12b34 \
--delta-sharing-recipient-token-lifetime-in-seconds 86400

(オプション)アクセス リストを使用して受信者のアクセスを制限する

受信者オブジェクトを構成するときに、受信者のアクセスを制限された IP アドレスのセットに制限できます。 「IP アクセス リストを使用してDelta Sharing受信者のアクセスを制限する (オープン共有)」を参照してください。

受信者のプロパティを管理する

受信者オブジェクトには、データ共有アクセスを絞り込むために使用できる定義済みのプロパティが含まれています。 たとえば、これらを使用して次の操作を実行できます。

  • 異なるテーブル パーティションを異なる受信者と共有することで、複数の受信者間でデータの境界を維持しながら、複数の受信者で同じ共有を使用できます。

  • 受信者のプロパティに基づいて、行レベルまたは列レベルでテーブルデータへの受信者のアクセスを制限する動的ビューを共有します。

カスタムプロパティを作成することもできます。

定義済みのプロパティは databricks. で始まり、次のものが含まれます。

  • databricks.accountId: データ受信者が属する Databricks アカウント (データブリック間の共有のみ)。

  • databricks.metastoreId: データ受信者が属する Unity Catalog メタストア (Databricks間共有のみ)。

  • databricks.name: データ受信者の名前。

価値を持つ可能性のあるカスタム プロパティには、たとえば countryが含まれます。 例えば、カスタムプロパティ 'country' = 'us' を受信者に添付する場合、テーブルデータを国別にパーティション分割し、米国のデータを含む行のみを、そのプロパティが割り当てられている受信者と共有できます。 また、受信者のプロパティに基づいて行または列のアクセスを制限する動的ビューを共有することもできます。 詳細な例については、「 受信者のプロパティを使用してパーティションのフィルター処理を行う」および「 動的ビューを共有に追加して行と列をフィルター処理する」を参照してください。

要件

受信者プロパティは、 Databricks Runtime 12.2 以降でサポートされています。

受信者を作成または更新するときにプロパティを追加する

受信者を作成するとき、または既存の受信者のプロパティを更新するときに、プロパティを追加できます。 カタログ エクスプローラー、Databricks Unity Catalog CLI、または Databricks ノートブックまたは Databricks SQL クエリー エディターの SQL コマンドを使用できます。

必要なアクセス許可: メタストア管理者または Unity Catalog メタストアの CREATE RECIPIENT 特権を持つユーザー。

カタログエクスプローラーを使用して 受信者を作成 または更新する場合は、以下の手順に従ってカスタムプロパティを追加または 更新 します。

  1. [受信者の詳細] ページに移動します。

    新しい受信者を作成する場合は、「 作成」をクリックするとこのページが表示されます。 既存の受信者を更新する場合は、歯車アイコン歯車アイコン > Delta Sharing > Shared by me > 受信者 の順に進み、受信者を選択します。

  2. [ プロパティの編集] > [+ プロパティの追加] をクリックします。

  3. プロパティ名 (キー) と を入力します。

    たとえば、共有データを国別にフィルター処理し、米国のデータのみをこの受信者と共有する場合は、値 "US" を持つ "country" という名前のキーを作成できます。

  4. [保存]をクリックします。

受信者を作成するときにカスタム プロパティを追加するには、ノートブックまたは Databricks SQL クエリー エディターで次のコマンドを実行します。

CREATE RECIPIENT [IF NOT EXISTS] <recipient-name>
[USING ID '<sharing-identifier>'] /* Skip this if you are using open sharing */
[COMMENT "<comment>"]
PROPERTIES ( '<property-key>' = '<property-value>' [, ...] );

<property-key> 文字列リテラルまたは識別子を指定できます。 <property-value> は文字列リテラルである必要があります。

例:

CREATE RECIPIENT acme PROPERTIES ('country' = 'us', 'partner_id' = '001');

既存の受信者のカスタム プロパティを追加、編集、または削除するには、次のいずれかを実行します。

ALTER RECIPIENT <recipient-name> SET PROPERTIES ( '<property-key>' = '<property-value>' [, ...] );

ALTER RECIPIENT <recipient-name> UNSET PROPERTIES ( '<property-key>' );

受信者を作成するときにカスタム プロパティを追加するには、 Databricks CLIを使用して次のコマンドを実行します。 プレースホルダーの値を置き換えます。

  • <recipient-name>: 受信者の名前。

  • <property-key> 文字列リテラルまたは識別子を指定できます。

  • <property-value> 文字列リテラルである必要があります。

databricks recipients create \
--json='{
  "name": "<recipient-name>",
  "properties_kvpairs": {
    "properties": {
      "<property-key>": "<property-value>",
    }
  }
}'

例:

databricks recipients create \
--json='{
  "name": "<recipient-name>",
  "properties_kvpairs": {
    "properties": {
      "country": "us",
      "partner_id":"001"
    }
  }
}'

既存の受信者のカスタム プロパティを追加または編集するには、 createの代わりに update を使用します。

databricks recipients update \
--json='{
  "name": "<recipient-name>",
  "properties_kvpairs": {
    "properties": {
      "country": "us",
      "partner_id":"001"
    }
  }
}'

受信者のプロパティを表示する

受信者のプロパティを表示するには、「 受信者の詳細を表示する」の手順に従います。

受信者を削除する

受信者を削除するには、カタログ エクスプローラー、Databricks Unity Catalog CLI、または Databricks ノートブックまたは Databricks SQL クエリー エディターの DROP RECIPIENT SQL コマンドを使用できます。 受信者を削除するには、受信者オブジェクトの所有者である必要があります。

受信者を削除すると、その受信者が表すユーザーは共有データにアクセスできなくなります。 受信者がオープン共有シナリオで使用するトークンは無効になります。

必要なアクセス許可: 受信者オブジェクトの所有者。

  1. Databricks ワークスペースで、[カタログ アイコン カタログ] をクリックします 。

  2. カタログパネルの上部にある歯車アイコン歯車アイコンをクリックし、 Delta Sharingを選択します。

    または、クイック アクセスページでDelta Sharing >]ボタンをクリックします。

  3. [共有元]タブで、 [受信者]をクリックし、受信者を選択します。

  4. [ 受信者] タブで、受信者を見つけて選択します。

  5. ケバブメニューケバブメニューをクリックし、[削除]を選択します。

  6. 確認ダイアログで、[ 削除] をクリックします。

ノートブックまたは Databricks SQL クエリー エディターで次のコマンドを実行します。

DROP RECIPIENT [IF EXISTS] <recipient-name>;

Databricks CLIを使用して次のコマンドを実行します。

databricks recipients delete <recipient-name>