このページでは、 受信者が Unity カタログに対して有効になっている Databricks ワークスペース上にある場合に、Delta Sharing で受信者を作成および管理する方法について説明します。
受信者は、共有データを使用するユーザーまたはユーザー のグループの ID を表す名前付きオブジェクトです。 受信者を作成する方法は、受信者が Unity カタログに対して有効になっている Databricks ワークスペースにアクセスできるかどうかによって異なります。
Unity カタログ対応 Databricks ワークスペースにアクセスできる受信者:
Databricks によって管理されるセキュリティで保護された接続を使用して、受信者オブジェクトを作成できます。 この共有モードは Databricks から Databricks への共有と呼ばれ、このページに記載されています。
Unity カタログ対応 Databricks ワークスペースにアクセスしない受信者:
トークン ベースの認証 (ベアラー トークンまたは OAuth フェデレーション) を使用して管理するセキュリティで保護された接続で 、オープン共有を使用する必要があります。 開かれた共有の受信者の作成についての詳細は、「Open ID Connect (OIDC) フェデレーションを使用して Delta Sharing 共有 (オープン共有) への認証を有効にする」および「ベアラー トークンを使用して Databricks 以外のユーザーの受信者オブジェクトを作成する (オープン共有)」を参照してください。
これら 2 つの共有モードの詳細と、どちらをいつ選択するかについては、「オープン共有と Databricks 間共有」を参照してください。
必要条件
受信者を作成するには、次の要件を満たす必要があります。
- メタストア管理者であるか、共有するデータが登録されている Unity Catalog メタストアに対して
CREATE_RECIPIENT
特権を持っている必要があります。 - その Unity Catalog メタストアがアタッチされている Azure Databricks ワークスペースを使用して受信者を作成する必要があります。
- Databricks ノートブックを使用して受信者を作成する場合、コンピューティングでは Databricks Runtime 11.3 LTS 以降と、標準アクセス モードまたは専用アクセス モード (以前の共有およびシングル ユーザー アクセス モード) を使用する必要があります。
その他の受信者管理操作 (表示、削除、更新、共有に対するアクセス権を受信者に付与など) については、この記事の操作固有の各セクションに記載されているアクセス許可の要件を参照してください。
Databricks にアクセスできるユーザーのために受信者オブジェクトを作成する (Databricks から Databricks への共有)
データ受信者が、Unity Catalog で有効になっている Databricks ワークスペースにアクセスできる場合は、認証の種類 DATABRICKS
を使用して受信者オブジェクトを作成できます。
認証の種類が DATABRICKS
の受信者オブジェクトは、特定の Unity カタログ メタストア上のデータ受信者を表します。これは、メタストアのクラウド、リージョン、UUID で構成される 共有識別子 文字列によって受信者オブジェクト定義で識別されます。 この受信者と共有されるデータは、そのメタストアでのみアクセスできます。
手順 1: 受信者の共有識別子を要求する
受信者ユーザーまたはユーザー グループが共有データを操作するワークスペースにアタッチされている Unity Catalog メタストアの共有識別子を送信するように受信者ユーザーに依頼します。
共有識別子は、メタストアのクラウド、リージョン、UUID (メタストアの一意識別子) で構成される文字列であり、 <cloud>:<region>:<uuid>
形式です。
たとえば、次のスクリーンショットで、完全な共有識別子文字列は aws:us-west-2:19a84bee-54bc-43a2-87de-023d0ec16016
です。
受信者は、カタログ エクスプローラー、Databricks Unity カタログ CLI、または使用するワークスペース内の Unity カタログ対応コンピューティングで実行される Databricks ノートブックまたは Databricks SQL クエリで CURRENT_METASTORE
既定の SQL 関数を使用して識別子を検索できます。
カタログ エクスプローラー
カタログ エクスプローラーを使用して共有識別子を取得するには、次の手順を行います。
Azure Databricks ワークスペースで、[
カタログ。
[カタログ] ウィンドウの上部にある
をクリックします。歯車アイコンをクリックし、[差分共有] を選択します。
または、[クイック アクセス] ページで、[Delta Sharing >] ボタンをクリックします。
[自分と共有] タブで、右上にある Databricks 共有組織名をクリックし、[共有識別子のコピー] を選択します。
SQL
ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。
SELECT CURRENT_METASTORE();
コマンドラインインターフェース (CLI)
Databricks CLI を使用して次のコマンドを実行します。 共有識別子は、global_metastore_id
として返されます。
databricks metastores summary
この手順に含まれる情報を受信者に送信するか、 Databricks-to-Databricks モデルで [アクセス権の取得] を指定できます。
手順 2: 受信者を作成する
Databricks 間共有の受信者を作成するには、カタログ エクスプローラーまたは Databricks Unity Catalog CLI を使用するか、Azure Databricks ノートブックまたは Databricks SQL クエリ エディターで CREATE RECIPIENT
SQL コマンドを使用できます。
必要なアクセス許可: メタストア管理者、または共有するデータが登録されている Unity Catalog メタストアに対して CREATE_RECIPIENT
特権を持つユーザー。
カタログ エクスプローラー
Azure Databricks ワークスペースで、[
カタログ。
[カタログ] ウィンドウの上部にある
をクリックします。歯車アイコンをクリックし、[差分共有] を選択します。
または、[クイック アクセス] ページで、[Delta Sharing >] ボタンをクリックします。
[自分と共有] タブで、[新しい受信者] をクリックします。
受信者名を入力します。
[受信者の種類] で、[Databricks] を選択します。
受信者の 共有識別子を入力します。
<cloud>:<region>:<uuid>
形式の共有識別子文字列全体を使用します。 たとえば、「aws:us-west-2:19a84bee-54bc-43a2-87de-023d0ec16016
」のように入力します。(省略可能) コメントを入力します。
Create をクリックしてください。
(省略可能) カスタムの受信者のプロパティを作成します。
受信者の「概要」タブで、「受信者のプロパティ」の横にある「編集」アイコンをクリックします。 次に、プロパティ名 (キー) と値を追加します。 詳細については、「受信者のプロパティを管理する」を参照してください。
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>
:DATABRICKS
の形式の共有識別子文字列を<cloud>:<region>:<uuid>
に対して指定するときは、<sharing-identifier>
に設定します。
databricks recipients create <recipient-name> <authentication-type> --sharing-code <sharing-identifier>
受信者のカスタム プロパティを追加することもできます。 詳細については、「受信者のプロパティを管理する」を参照してください。
authentication_type
のDATABRICKS
を使用して受信者が作成されます。
共有へのアクセス権を受信者に付与する
受信者を作成し、 共有を作成したら、受信者にそれらの共有へのアクセス権を付与できます。
共有へのアクセスを受信者に許可するには、カタログ エクスプローラーまたは Databricks Unity Catalog CLI を使用するか、Azure Databricks ノートブックまたは Databricks SQL クエリ エディターで GRANT ON SHARE
SQL コマンドを使用できます。
必要なアクセス許可: 次のいずれか。
- メタストア管理者。
- 共有オブジェクトと受信者オブジェクトの両方に対する委任されたアクセス許可または所有権 ((
USE SHARE
+SET SHARE PERMISSION
) または共有所有者) かつ (USE RECIPIENT
または受信者所有者)。
手順については、Delta Sharing データ共有へのアクセスを管理する (プロバイダーの場合) 方法に関するページを参照してください。
受信者を表示する
受信者の一覧を表示するには、カタログ エクスプローラーまたは Databricks Unity Catalog CLI を使用するか、Azure Databricks ノートブックまたは Databricks SQL クエリ エディターで SHOW RECIPIENTS
SQL コマンドを使用できます。
必要なアクセス許可: メタストア管理者であるか、メタストア内のすべての受信者を表示する USE RECIPIENT
特権が必要です。 他のユーザーは、自分が所有する受信者にのみアクセスできます。
カタログ エクスプローラー
Azure Databricks ワークスペースで、[
カタログ。
[カタログ] ウィンドウの上部にある
をクリックします。歯車アイコンをクリックし、[差分共有] を選択します。
または、[クイック アクセス] ページで、[Delta Sharing >] ボタンをクリックします。
[自分と共有] タブで、[受信者] をクリックします。
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 から Databricks への共有を使用している場合: 受取者の Unity カタログメタストアのクラウド、リージョン、およびメタストア ID、ならびに有効化の状態。
- カスタム プロパティを含む、受信者のプロパティ。 「受信者のプロパティを管理する」を参照してください。
カタログ エクスプローラー
Azure Databricks ワークスペースで、[
カタログ。
[カタログ] ウィンドウの上部にある
をクリックします。歯車アイコンをクリックし、[差分共有] を選択します。
または、[クイック アクセス] ページで、[Delta Sharing >] ボタンをクリックします。
[自分と共有] タブで、[受信者] をクリックし、受信者を選択します。
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
特権を持つユーザー、または受信者オブジェクト所有者。
カタログ エクスプローラー
Azure Databricks ワークスペースで、[
カタログ。
[カタログ] ウィンドウの上部にある
をクリックします。歯車アイコンをクリックし、[差分共有] を選択します。
または、[クイック アクセス] ページで、[Delta Sharing >] ボタンをクリックします。
[自分と共有] タブで、[受信者] をクリックし、受信者を選択します。
[共有] タブに移動して、受信者と共有されている共有の一覧を表示します。
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
特権を持つユーザー) であり、"かつ" 所有者である必要があります。 コメントまたはカスタム プロパティを更新するには、所有者である必要があります。
カタログ エクスプローラー
Azure Databricks ワークスペースで、[
カタログ。
[カタログ] ウィンドウの上部にある
をクリックします。歯車アイコンをクリックし、[差分共有] を選択します。
または、[クイック アクセス] ページで、[Delta Sharing >] ボタンをクリックします。
[自分と共有] タブで、[受信者] をクリックし、受信者を選択します。
受信者の詳細ページで、次のことを行います。
所有者を更新する。
コメントを編集または追加する。
受信者の名前を変更する。
をクリックします。[Kebab] メニューをクリックし、[名前の変更] を選択します。
カスタムの受信者のプロパティを編集、削除、追加する。
[
Edit icon受信者のプロパティ] の横にある の編集アイコンをクリックします。 次に、プロパティ名 (キー) と値を追加します。 詳細については、「受信者のプロパティを管理する」を参照してください。
トークン認証された受信者のみ:
- [認証] リンクを表示してコピーします。 アクティブ化リンクを取得するを参照してください
- [ トークンの管理] で、ベアラー トークンをローテーションまたは更新します。 受信者トークンの管理を参照してください。
OIDC フェデレーション受信者のみ:
- OIDC フェデレーション ポリシーで、[ポリシーの追加] をクリックします。 LINK を参照してください。
- 受信者エンドポイントと受信者 MTLS エンドポイントを表示してコピーします。
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
プロパティの詳細については、「受信者のプロパティを管理する」を参照してください。
(省略可能) アクセス リストを使用して受信者のアクセスを制限する
受信者オブジェクトを構成する際、受信者のアクセスを、限定された 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
特権を持つユーザー。
カタログ エクスプローラー
カタログ エクスプローラーを使用して受信者を作成または更新する場合は、次の操作を行ってカスタム プロパティを追加または更新します。
[Recipient details] (受信者の詳細) ページに移動します。
新しい受信者を作成する場合は、[作成] をクリックした後、このページに移動します。 既存の受信者を更新する場合は、
歯車アイコン、> Delta共有、> 自分の共有> 受信者からページに移動し、受信者を選択します。
[プロパティの編集] > [+ プロパティの追加] をクリックします。
プロパティ名 (キー) と値を入力します。
たとえば、国別に共有データをフィルター処理し、米国のデータのみをこの受信者と共有する場合は、"US" という値を持つ "country" という名前のキーを作成できます。
[保存] をクリックします。
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"
}
}
}'
既存の受信者のカスタム プロパティを追加または編集するには、update
ではなく create
を使用します。
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 コマンドを使用できます。 受信者を削除するには、受信者オブジェクト所有者である必要があります。
受信者を削除すると、受信者で表されるユーザーは共有データにアクセスできなくなります。 オープン共有シナリオで受信者が使用するトークンは無効になります。
必要なアクセス許可: 受信者オブジェクト所有者。
カタログ エクスプローラー
Azure Databricks ワークスペースで、[
カタログ。
[カタログ] ウィンドウの上部にある
をクリックします。歯車アイコンをクリックし、[差分共有] を選択します。
または、[クイック アクセス] ページで、[Delta Sharing >] ボタンをクリックします。
[自分と共有] タブで、[受信者] をクリックし、受信者を選択します。
[受信者] タブで、受信者を見つけて選択します。
をクリックします。kebab メニューをクリックし、[削除] を選択します。
確認のダイアログで [削除] をクリックします。
SQL
ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。
DROP RECIPIENT [IF EXISTS] <recipient-name>;
コマンドラインインターフェース (CLI)
Databricks CLI を使用して次のコマンドを実行します。
databricks recipients delete <recipient-name>