Delta Sharing (Databricks-to-Databricks共有) のデータ受信者を作成および管理する
このページでは、 受信者が Unity Catalog に対して有効になっている Databricks ワークスペース上にいる場合に、Delta Sharing で受信者を作成および管理する方法について説明します。
受信者は、共有データを使用するユーザーまたはユーザーのグループの ID を表す名前付きオブジェクトです。受信者の作成方法は、受信者が Unity Catalog が有効になっている Databricks ワークスペースにアクセスできるかどうかによって異なります。
-
Unity Catalog 対応の Databricks ワークスペースにアクセスできる受信者:
Databricks によって管理されるセキュリティで保護された接続を使用して受信者オブジェクトを作成できます。この共有モードは Databricks-to-Databricks 共有 と呼ばれ、このページで説明されています。
-
Unity Catalog 対応の Databricks ワークスペースにアクセスできない受信者:
トークンベースの認証 (ベアラー トークンまたはOAuth フェデレーション) を使用して管理するセキュリティで保護された接続で 、オープン共有 を使用する必要があります。オープン共有受信者の作成に関する情報については、「 Open ID Connect (OIDC) フェデレーションを使用して Delta Sharing 共有の認証を有効にする (オープン共有)」 および「 ベアラー トークンを使用して非Databricks ユーザー用の受信者オブジェクトを作成する (オープン共有)」を参照してください。
これら 2 つの共有モードの詳細と、どちらを選択するかについては、「 オープン共有と Databricks-to-Databricks 共有」を参照してください。
必要条件
受取人を作成するには:
- メタストア管理者であるか、共有するデータが登録されている Unity Catalog メタストアの
CREATE_RECIPIENT
特権を持っている必要があります。 - 受信者は、その Unity Catalog メタストアがアタッチされている Databricks ワークスペースを使用して作成する必要があります。
- Databricks ノートブックを使用して受信者を作成する場合、コンピュートは Databricks Runtime 11.3 LTS 以降を使用し、標準または専用アクセス モード (以前の共有およびシングル ユーザー アクセス モード) を使用する必要があります。
その他の受信者管理操作(共有の表示、削除、更新、受信者へのアクセス権の付与など)については、この記事の操作固有のセクションに記載されている権限要件を参照してください。
Databricksへのアクセス権を持つユーザーの受信者オブジェクトを作成する(Databricks-to-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
です。
受信者は、使用するワークスペースの Unity-Catalog 対応コンピュートで実行される ノートブックまたは クエリの Catalog Explorer、DatabricksUnity CatalogCLI 、または デフォルトSQL 関数 を使用して識別子を見つけることができます。CURRENT_METASTORE
DatabricksDatabricks SQL
- Catalog Explorer
- SQL
- CLI
Catalog Explorer を使用して共有識別子を取得するには:
-
Databricks ワークスペースで、
カタログ をクリックします。
-
[カタログ ] ウィンドウの上部にある [
] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。
または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。
-
[ 共有先] タブで、右上にある Databricks 共有組織名をクリックし、[ 共有識別子のコピー ] を選択します。
ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。
SELECT CURRENT_METASTORE();
Databricks CLI を使用して次のコマンドを実行します。共有識別子は global_metastore_id
として返されます。
databricks metastores summary
この手順に含まれる情報を受信者に送信するか、Databricks-to-Databricksモデルで [アクセスを取得する] にポイントすることができます。
ステップ 2: 受信者を作成する
Databricks-to-Databricks共有の受信者を作成するには、カタログ エクスプローラー、DatabricksUnity CatalogCLI 、またはCREATE RECIPIENT
SQL DatabricksノートブックまたはDatabricks SQL クエリ エディターの コマンドを使用できます。
必要なアクセス許可 : メタストア管理者、または共有するデータが登録されている Unity Catalog メタストアの CREATE_RECIPIENT
権限を持つユーザー。
- Catalog Explorer
- SQL
- CLI
-
Databricks ワークスペースで、
カタログ をクリックします。
-
[カタログ ] ウィンドウの上部にある [
] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。
または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。
-
[ 自分が共有] タブで、[ 新しい受信者 ] をクリックします。
-
受信者名 を入力します。
-
[受信者の種類 ] で、 [Databricks ] を選択します。
-
受信者の共有 識別子 を入力します。
共有識別子文字列全体を
<cloud>:<region>:<uuid>
の形式で使用します。たとえば、aws:us-west-2:19a84bee-54bc-43a2-87de-023d0ec16016
. -
(オプション)コメントを入力します。
-
作成 をクリックします。
-
(オプション)カスタム 受信者プロパティ を作成します。
受信者 の「概要」タブで、「 受信者のプロパティ 」の横にある
編集アイコンをクリックします。次に、プロパティ名 ( キー ) と 値 を追加します。詳細については、「 受信者のプロパティの管理」を参照してください。
ノートブックまたは 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>
受信者のカスタムプロパティを追加することもできます。詳細については、「 受信者のプロパティの管理」を参照してください。
受信者は DATABRICKS
のauthentication_type
で作成されます。
受信者に共有へのアクセス権を付与する
受信者を作成し、 共有を作成したら、その共有へのアクセス権を受信者に付与できます。
受信者に共有アクセス権を付与するには、Catalog Explorer、Databricks Unity Catalog CLI、または Databricks ノートブックまたは Databricks SQL クエリエディターの GRANT ON SHARE
SQL コマンドを使用できます。
必要な権限 : 次のいずれかです。
- メタストア管理者。
- 共有オブジェクトと受信者オブジェクト ((
USE SHARE
+SET SHARE PERMISSION
) または共有の所有者) および (USE RECIPIENT
または受信者の所有者) の両方に対する委任されたアクセス許可または所有権。
手順については、「 Delta Sharing データ共有へのアクセスを管理する (プロバイダー向け)」を参照してください。
受信者を表示する
受信者のリストを表示するには、カタログ エクスプローラー、DatabricksUnity CatalogCLI 、またはSHOW RECIPIENTS
SQL DatabricksノートブックまたはDatabricks SQL クエリ エディターの コマンドを使用できます。
必要なアクセス許可 : メタストア管理者であるか、メタストア内のすべての受信者を表示するための USE RECIPIENT
特権を持っている必要があります。 他のユーザーは、自分が所有する受信者にのみアクセスできます。
- Catalog Explorer
- SQL
- CLI
-
Databricks ワークスペースで、
カタログ をクリックします。
-
[カタログ ] ウィンドウの上部にある [
] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。
または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。
-
[ 自分が共有したユーザー ] タブで、[ 受信者] をクリックします。
ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。必要に応じて、 <pattern>
を LIKE
述部に置き換えます。
SHOW RECIPIENTS [LIKE <pattern>];
Databricks CLI を使用して次のコマンドを実行します。
databricks recipients list
受信者の詳細を表示する
受信者の詳細を表示するには、Catalog Explorer、Databricks Unity Catalog CLI、または Databricks ノートブックまたは Databricks SQL クエリエディターの DESCRIBE RECIPIENT
SQL コマンドを使用できます。
必要な権限 : メタストア管理者、 USE RECIPIENT
権限を持つユーザー、または受信者オブジェクトの所有者。
詳細は次のとおりです。
- 受信者の作成者、作成タイムスタンプ、コメント、および認証タイプ(
TOKEN
またはDATABRICKS
)。 - 受信者がオープン共有を使用している場合: トークンの有効期間、アクティベーション リンク、アクティベーション ステータス (資格情報がダウンロードされたかどうか)、IP アクセス リスト (割り当てられている場合)。
- 受信者が Databricks 間の共有を使用している場合: 受信者の Unity Catalog メタストアのクラウド、リージョン、メタストア ID、およびアクティベーションの状態。
- 受信者のプロパティ (カスタム プロパティを含む)。 受取人のプロパティの管理を参照してください。
- Catalog Explorer
- SQL
- CLI
-
Databricks ワークスペースで、
カタログ をクリックします。
-
[カタログ ] ウィンドウの上部にある [
] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。
または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。
-
[ 自分が共有したユーザー ] タブで、[ 受信者] をクリックし、受信者を選択します。
ノートブックまたはDatabricks SQLクエリーエディタで次のコマンドを実行します。
DESCRIBE RECIPIENT <recipient-name>;
Databricks CLI を使用して次のコマンドを実行します。
databricks recipients get <recipient-name>
受信者の共有権限を表示する
受信者にアクセス権が付与されている共有の一覧を表示するには、Catalog Explorer、Databricks CLI、または Databricks ノートブックまたは Databricks SQL クエリ エディターの SHOW GRANTS TO RECIPIENT
SQL コマンドを使用できます。
必要な権限 : メタストア管理者、 USE RECIPIENT
権限を持つユーザー、または受信者オブジェクトの所有者。
- Catalog Explorer
- SQL
- CLI
-
Databricks ワークスペースで、
カタログ をクリックします。
-
[カタログ ] ウィンドウの上部にある [
] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。
または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。
-
[ 自分が共有したユーザー ] タブで、[ 受信者] をクリックし、受信者を選択します。
-
[ 共有 ] タブに移動して、受信者と共有されている共有の一覧を表示します。
ノートブックまたはDatabricks SQLクエリーエディタで次のコマンドを実行します。
SHOW GRANTS TO RECIPIENT <recipient-name>;
Databricks CLI を使用して次のコマンドを実行します。
databricks recipients share-permissions <recipient-name>
受信者を更新する
受信者を更新するには、カタログエクスプローラー、DatabricksUnity CatalogCLI ALTER RECIPIENT
SQL、Databricks ノートブックの コマンド、またはDatabricks SQL クエリエディターを使用できます。
更新できるプロパティには、受信者名、所有者、コメント、およびカスタム プロパティが含まれます。
必要なアクセス許可 : 所有者を更新するには、受信者オブジェクトのメタストア管理者または所有者である必要があります。 名前を更新するには、メタストア管理者 (または CREATE_RECIPIENT
権限を持つユーザー) であり 、所有者である必要があります。 コメントまたはカスタムプロパティを更新するには、所有者である必要があります。
- Catalog Explorer
- SQL
- CLI
-
Databricks ワークスペースで、
カタログ をクリックします。
-
[カタログ ] ウィンドウの上部にある [
] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。
または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。
-
[ 自分が共有したユーザー ] タブで、[ 受信者] をクリックし、受信者を選択します。
-
受信者の詳細ページで、次の操作を行います。
-
所有者を更新します。
-
コメントを編集または追加します。
-
受信者の名前を変更します。
ケバブメニューをクリックし、[ 名前の変更 ]を選択します。
-
カスタム 受信者プロパティ を編集、削除、または追加します。
「受信者のプロパティ 」の横にある 編集アイコンをクリックします。次に、プロパティ名 ( キー ) と 値 を追加します。詳細については、「 受信者のプロパティの管理」を参照してください。
-
トークン認証された受信者のみ:
- [認証] リンク を表示してコピーします。「アクティベーションリンクを取得する」を参照してください
- [トークン管理 ] で、ベアラー トークンをローテーションまたは更新します。「受信者トークンの管理」を参照してください。
-
OIDC フェデレーション受信者のみ:
- [OIDC フェデレーション ポリシー ] で、[ ポリシーの追加 ] をクリックします。リンクを参照してください。
- 受信者エンドポイント と 受信者 MTLS エンドポイント を表示およびコピーします。
-
次のコマンドを 1 つ以上ノートブックまたは Databricks SQL クエリ エディターで実行します。
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
プロパティの詳細については、「 受信者のプロパティの管理」を参照してください。
(オプション)アクセスリストを使用して受信者のアクセスを制限します
受信者オブジェクトを設定するときに、受信者のアクセスを制限した IP アドレスのセットに制限できます。 「IP アクセス リストを使用して Delta Sharing 受信者のアクセスを制限する (オープン共有)」を参照してください。
受取人のプロパティを管理します
受信者オブジェクトには、データ共有アクセスを絞り込むために使用できる定義済みのプロパティが含まれています。 たとえば、これらを使用して次の操作を実行できます。
- 異なるテーブルパーティションを異なる受信者と共有することで、複数の受信者と同じ共有を使用しながら、それらの受信者間のデータ境界を維持できます。
- 受信者のプロパティに基づいて、受信者がテーブルデータにアクセスするのを行または列レベルで制限する動的ビューを共有します。
カスタムプロパティを作成することもできます。
定義済みのプロパティは databricks.
で始まり、次のものが含まれます。
databricks.accountId
:データ受信者が所属する Databricks アカウント(Databricks-to-Databricks 共有のみ)。databricks.metastoreId
: データ受信者が属する Unity Catalog メタストア (Databricks間共有のみ)。databricks.name
: データ受信者の名前。
価値がある可能性のあるカスタム プロパティには、たとえば、 country
などがあります。 たとえば、カスタムプロパティ [ 'country' = 'us'
] を受信者にアタッチすると、テーブルデータを国ごとにパーティション分割し、米国のデータを含む行のみを、そのプロパティが割り当てられている受信者と共有できます。 また、受信者のプロパティに基づいて行または列へのアクセスを制限する動的ビューを共有することもできます。 詳細な例については、「 受信者のプロパティを使用してパーティションのフィルター処理を行う 」および「 共有に動的ビューを追加して行と列をフィルター処理する」を参照してください。
必要条件
受信者のプロパティは、Databricks Runtime 12.2 以降でサポートされています。
受信者を作成または更新するときにプロパティを追加する
受信者を作成するとき、または既存の受信者に対してプロパティを更新するときに、プロパティを追加できます。 カタログ エクスプローラ、 Databricks Unity Catalog CLI、または SQL コマンドは、 Databricks ノートブックまたは Databricks SQL クエリ エディタで使用できます。
必要なアクセス許可 : メタストア管理者、または Unity Catalog メタストアの CREATE RECIPIENT
権限を持つユーザー。
- Catalog Explorer
- SQL
- CLI
カタログエクスプローラを使用して受信者 を作成 または 更新 する場合は、次の操作を行ってカスタムプロパティを追加または更新します。
-
[受信者の詳細] ページに移動します。
新しい受信者を作成する場合は、「 作成 」をクリックすると、このページが表示されます。既存の受信者を更新する場合は、
Delta Sharing > Shared by me > Recipients > 歯車アイコン をクリックし、受信者を選択して、このページに移動します。
-
[ プロパティを編集] > [プロパティを追加] をクリックします。
-
プロパティ名 ( キー ) と 値 を入力します。
たとえば、共有データを国別にフィルタリングし、この受信者と米国のデータのみを共有する場合は、「country」という名前のキーを作成し、値を「US」にすることができます。
-
保存 をクリックします。
受信者を作成するときにカスタム プロパティを追加するには、ノートブックまたは 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"
}
}
}'
受信者のプロパティを表示する
受取人のプロパティを表示するには、「受取人の詳細を表示する」の指示に従ってください。
受取人を削除する
受信者を削除するには、カタログ エクスプローラー、DatabricksUnity CatalogCLI 、またはDROP RECIPIENT
SQL DatabricksノートブックまたはDatabricks SQL クエリ エディターの コマンドを使用できます。受信者を削除するには、受信者オブジェクトの所有者である必要があります。
受信者を削除すると、受信者が代表するユーザーは共有データにアクセスできなくなります。 受信者がオープン共有シナリオで使用するトークンは無効になります。
必要な権限 : 受信者オブジェクトの所有者。
- Catalog Explorer
- SQL
- CLI
-
Databricks ワークスペースで、
カタログ をクリックします。
-
[カタログ ] ウィンドウの上部にある [
] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。
または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。
-
[ 自分が共有したユーザー ] タブで、[ 受信者] をクリックし、受信者を選択します。
-
[ 受信者] タブで、受信者を見つけて選択します。
-
ケバブメニューをクリックし、[ 削除 ]を選択します。
-
確認ダイアログで、[ 削除 ] をクリックします。
ノートブックまたはDatabricks SQLクエリーエディタで次のコマンドを実行します。
DROP RECIPIENT [IF EXISTS] <recipient-name>;
Databricks CLI を使用して次のコマンドを実行します。
databricks recipients delete <recipient-name>