次の方法で共有


Delta Sharing のデータ受信者を作成および管理する

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

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

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

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

必要条件

受信者を作成するには、次の要件を満たす必要があります。

  • メタストア管理者であるか、共有するデータが登録されている Unity Catalog メタストアに対して CREATE_RECIPIENT 特権を持っている必要があります。
  • その Unity Catalog メタストアがアタッチされている Azure 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 を使用するか、使用するワークスペース内の Unity Catalog 対応クラスターで実行される Databricks ノートブックまたは Databricks SQL クエリで既定の SQL 関数 CURRENT_METASTORE を使用して識別子を見つけることができます。

カタログ エクスプローラー

カタログ エクスプローラーを使用して共有識別子を取得するには、次の手順を行います。

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

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

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

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

SQL

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

SELECT CURRENT_METASTORE();

CLI

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

databricks metastores summary

この手順に含まれる情報を連絡先に送信して受信者を支援するか、Databricks 間モデルでアクセス権を取得するように指示することができます。

手順 2: 受信者を作成する

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

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

カタログ エクスプローラー

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

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

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

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

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

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

  5. (省略可能) コメントを入力します。

  6. Create をクリックしてください。

  7. (省略可能) カスタムの受信者のプロパティを作成します。

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

SQL

ノートブックまたは 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 」のように入力します。

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

CLI

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

  • <recipient-name>: 受信者の名前。
  • <sharing-identifier>: <cloud>:<region>:<uuid>形式の共有識別子文字列全体。 たとえば、aws:eu-west-1:g0c979c8-3e68-4cdf-94af-d05c120ed1ef のようにします。
  • <authentication-type>: <cloud>:<region>:<uuid> の形式の共有識別子文字列を <sharing-identifier> に対して指定するときは、DATABRICKS に設定します。
databricks recipients create <recipient-name> <authentication-type> --sharing-code <sharing-identifier>

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

authentication_typeDATABRICKS の受信者が作成されます。

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

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

  1. データ プロバイダーとして、Unity Catalog メタストアに受信者オブジェクトを作成します。
  2. 受信者オブジェクトを作成すると、Azure Databricks によってトークン、トークンを含む資格情報ファイル、受信者と共有するためのアクティブ化リンクが生成されます。 受信者オブジェクトの認証の種類は TOKEN です。
  3. 受信者は、アクティブ化リンクにアクセスし、資格情報ファイルをダウンロードし、その資格情報ファイルを使用して認証し、アクセス権が付与される共有に含まれるテーブルへの読み取りアクセス権を取得します。

手順 1: 受信者を作成する

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

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

カタログ エクスプローラー

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

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

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

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

  4. 受信者の [名前] を入力します

  5. (省略可能) コメントを入力します。

  6. Create をクリックしてください。

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

  7. アクティブ化リンクをコピーします。

    または、後でアクティブ化リンクを取得することもできます。 「手順 2: アクティブ化リンクを取得する」を参照してください。

  8. (省略可能) カスタムの受信者のプロパティを作成します。

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

SQL

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

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

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

CLI

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

databricks recipients create <recipient-name>

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

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

authentication_typeTOKEN の受信者が作成されます。

注意

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

新しい受信者のアクティブ化リンクを取得するには、カタログ エクスプローラーまたは Databricks Unity Catalog CLI を使用するか、Azure Databricks ノートブックまたは Databricks SQL クエリ エディターで DESCRIBE RECIPIENT SQL コマンドを使用できます。

受信者が資格情報ファイルを既にダウンロードしている場合は、アクティブ化リンクは返されず、表示されません。

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

カタログ エクスプローラー

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

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

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

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

  4. 受信者の詳細ページで、[アクティブ化リンク] をコピーします。

SQL

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

DESCRIBE RECIPIENT <recipient-name>;

出力には activation_link が含まれます。

CLI

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

databricks recipients get <recipient-name>

出力には activation_url が含まれます。

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

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

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

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

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

手順については、Delta Sharing データ共有へのアクセスを管理する (プロバイダーの場合) 方法に関するページを参照してください。

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

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

受信者を表示する

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

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

カタログ エクスプローラー

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

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

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

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

SQL

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

SHOW RECIPIENTS [LIKE <pattern>];

CLI

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

databricks recipients list

受信者の詳細を表示する

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

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

詳細には次のものが含まれます。

  • 受信者の作成者、作成タイムスタンプ、コメント、認証の種類 (TOKEN または DATABRICKS)。
  • 受信者がオープン共有を使用している場合: トークンの有効期間、アクティブ化リンク、アクティブ化の状態 (資格情報がダウンロードされているかどうか)、IP アクセス リスト (割り当てられている場合)。
  • 受信者が Databricks 間共有を使用している場合: 受信者の Unity Catalog メタストアのクラウド、リージョン、メタストア ID、およびアクティブ化の状態。
  • カスタム プロパティを含む、受信者のプロパティ。 「受信者のプロパティを管理する」を参照してください。

カタログ エクスプローラー

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

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

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

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

SQL

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

DESCRIBE RECIPIENT <recipient-name>;

CLI

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

databricks recipients get <recipient-name>

受信者の共有アクセス許可を表示する

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

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

カタログ エクスプローラー

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

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

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

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

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

SQL

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

SHOW GRANTS TO RECIPIENT <recipient-name>;

CLI

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

databricks recipients share-permissions <recipient-name>

受信者を更新する

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

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

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

カタログ エクスプローラー

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

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

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

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

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

    • 所有者を更新する。

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

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

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

    • カスタムの受信者のプロパティを編集、削除、追加する。

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

SQL

ノートブックまたは 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> [, ...] )

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

CLI

受信者名、コメント、所有者、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 を失うか、または侵害された。
  • 資格情報が、受信者によってダウンロードされた後で破損、損失、または侵害された場合。
  • メタストアの受信者トークンの有効期間を変更する場合。 「受信者トークンの有効期間を変更する」を参照してください。

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

任意の時点で、1 人の受信者は最大で 2 つのトークンを持つことができます。アクティブなトークンとローテーションされたトークンです。 ローテーションされたトークンは、期限切れが設定され、アクティブなトークンに置き換えられるトークンです。 ローテーションされたトークンの有効期限が切れるまで、トークンをもう一度ローテーションしようとするとエラーになります。

受信者のトークンをローテーションする際、必要に応じて、--existing-token-expire-in-seconds を、既存の受信者トークン (すなわち、ローテーションされるトークン) の有効期限が切れるまでの秒数に設定できます。 値を 0 に設定すると、既存の受信者トークンの有効期限がすぐに切れます。

Databricks では、比較的に短い時間に --existing-token-expire-in-seconds を設定することをお勧めしています。こうすることで、新しいアクティブ化 URL にアクセスするための時間を受信者の組織に与える一方で、受信者が持つ 2 つのアクティブなトークンの時間を最小限に抑えることができます。 既存の受信者トークンが侵害されたと思われる場合、Databricks では、そのトークンを強制的に期限切れにすることをお勧めしています。

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

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

不注意で誤った人物に受信者のアクティブ化 URL が送信されたり、セキュリティで保護されていないチャネルを介して送信された場合、Databricks では以下をお勧めしています。

  1. 共有への受信者のアクセスを取り消します。
  2. 受信者をローテーションさせ、--existing-token-expire-in-seconds0 に設定します。
  3. セキュリティで保護されたチャネルを介して、新しいアクティブ化 URL を目的の受信者と共有します。
  4. アクティブ化 URL にアクセスした後は、その共有へのアクセスを受信者にもう一度付与します。

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

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

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

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

カタログ エクスプローラー

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

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

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

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

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

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

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

  7. [ローテーション] をクリックします。

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

CLI

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

    • <recipient-name>: 受信者の名前。
    • <expiration-seconds>: 既存の受信者トークンの有効期限が切れるまでの秒数。 この期間中は、既存のトークンは引き続き機能します。 値が 0 の場合は、既存のトークンがすぐに期限切れになります。 既存のトークンを期限切れにする場合に関するアドバイスについては、「トークンのセキュリティに関する考慮事項」を参照してください。
    databricks recipients rotate-token \
    <recipient-name> \
    <expiration-seconds>
    
  2. 受信者の新しいアクティブ化リンクを取得し、セキュリティで保護されたチャネルを介して受信者と共有します。 「手順 2: アクティブ化リンクを取得する」を参照してください。

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

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

Note

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

必要なアクセス許可: アカウント管理者。

カタログ エクスプローラー

  1. アカウント コンソールにログインします。
  2. サイド バーで、カタログ アイコン [カタログ] をクリックします。
  3. メタストアの名前をクリックします。
  4. [Delta Sharing の受信者トークンの有効期間] で、[編集] をクリックします。
  5. [有効期限の設定] を有効にします。
  6. 秒、分、時間、または日の数を入力し、計算単位を選択します。
  7. [保存] をクリックします。

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

CLI

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: データ受信者が属する Azure Databricks アカウント (Databricks から Databricks への共有のみ)。
  • databricks.metastoreId: データ受信者が属する Unity Catalog メタストア (Databricks から Databricks への共有のみ)。
  • databricks.name: データ受信者の名前。

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

要件

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

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

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

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

カタログ エクスプローラー

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

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

    新しい受信者を作成する場合は、[作成] をクリックした後、このページに移動します。 既存の受信者を更新する場合は、歯車アイコン 歯車アイコン > [Delta Sharing] > [自分と共有] > [受信者] をクリックして受信者を選択すると、このページに移動します。

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

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

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

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

SQL

受信者の作成時にカスタム プロパティを追加するには、ノートブックまたは 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>' );

CLI

受信者の作成時にカスタム プロパティを追加するには、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 を使用するか、Azure Databricks ノートブックまたは Databricks SQL クエリ エディターで DROP RECIPIENT SQL コマンドを使用できます。 受信者を削除するには、受信者オブジェクト所有者である必要があります。

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

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

カタログ エクスプローラー

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

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

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

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

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

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

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

SQL

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

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

CLI

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

databricks recipients delete <recipient-name>