データ受信者向けのDelta Sharingプロバイダーを管理する
このページでは、Unity Catalogを使用して、Delta Sharingを使用してデータを共有しているデータプロバイダーに関する情報を取得する方法について説明します。また、プロバイダーオブジェクトとは何か、そしてUnity Catalogメタストアでプロバイダーオブジェクトを作成する必要があるのはどのような場合かについても説明しています。ただし、ほとんどの受信者はこれを行う必要はありません。
データ受信者が、説明されている機能を使用するには、 Unity Catalogで有効になっているDatabricksワークスペースにアクセスできる必要があります。 このページは、Unityカタログ対応のワークスペースをお持ちでないユーザーには適用されません。
受信者はプロバイダーオブジェクトを作成する必要がありますか?
Databricks の Delta Sharing では、"プロバイダー" という用語は、データを共有している組織と、その組織を表す受信者の Unity Catalog メタストア内のセキュリティ保護可能なオブジェクトの両方を意味する場合があります。受信者の Unity Catalog メタストアにそのセキュリティ保護可能なオブジェクトが存在すると、受信者は Unity Catalog を使用して共有データへのチームのアクセスを管理できます。
Unity Catalog メタストアへのアクセス権を持つ受信者は、通常、プロバイダー オブジェクトを作成する必要はありません。 これは、データはDatabricks-to-Databricks共有を使用して共有する必要があり、プロバイダー オブジェクトはUnity Catalogメタストアに自動的に作成されるためです。
Unity Catalog 対応の Databricks ワークスペースから共有されていないプロバイダーからデータを受信している場合は、カタログエクスプローラ を使用してプロバイダーの資格情報ファイルをインポートできます。「Databricks: オープン共有コネクタを使用して共有データを読み取る」を参照してください。
始める前に
Databricks ワークスペースでプロバイダーを管理するには:
- ワークスペースでUnity Catalogが有効になっている必要があります。
- プロバイダーを表示するには、メタストア管理者であるか、メタストア管理者から
USE PROVIDER特権が付与されている必要があります。 - プロバイダーを作成するには、メタストア管理者であるか、メタストア管理者から
CREATE PROVIDER特権が付与されている必要があります。 - プロバイダーを更新するには、プロバイダーオブジェクトの所有者であり、
CREATE PROVIDER権限を持っている必要があります。 詳細については、「プロバイダーの更新 (名前の変更、所有者の変更、コメント)」を参照してください。
このため、ワークスペースがメタストア管理者なしで作成された場合、Databricks でプロバイダー オブジェクトを操作する前に、Databricks アカウント管理者がユーザーまたはグループにメタストア管理者ロールを付与する必要があります。 「Unity Catalog の自動有効化」および「(省略可能) メタストア管理者ロールの割り当て」を参照してください。
プロバイダーを見る
使用可能なデータ プロバイダーの一覧を表示するには、カタログエクスプローラ、Databricks Unity Catalog CLI、または Databricks ノートブックまたは Databricks SQL クエリ エディターの SHOW PROVIDERS SQL コマンドを使用できます。
必要な権限 : メタストア内のすべてのプロバイダーを表示するには、 USE PROVIDER権限が必要です。他のユーザーは、自分が所有するプロバイダーにのみアクセスできます。
- Catalog Explorer
- SQL
- CLI
-
Databricks ワークスペースで、
カタログ をクリックします。
-
[カタログ ] ウィンドウの上部にある [
] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。
または、右上隅の 「共有」> Delta Sharing をクリックします。
-
[ 自分と共有] タブで、組織と共有されているすべてのデータを表示します。共有ごとに、次の詳細が提供されます。
- 名前: プロバイダーによって指定された組織名。
- 認証タイプ: プロバイダーが使用する共有方法。
- 所有者: プロバイダーの名前または電子メール。
- 作成場所: 共有が作成された日時。
- 形容: 共有の説明。
ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。必要に応じて、 <pattern> を LIKE 述部に置き換えます。
SHOW PROVIDERS [LIKE <pattern>];
SHOW PROVIDERSの詳細については、「SHOW PROVIDERS」を参照してください。
Databricks CLI を使用して次のコマンドを実行します。
databricks providers list
プロバイダーの詳細を表示
プロバイダーの詳細を表示するには、カタログ エクスプローラー、 、または ノートブックまたはDatabricksUnity CatalogCLIDESCRIBE PROVIDERSQLDatabricksDatabricks SQL クエリ エディターの コマンドを使用できます。
必要な権限 :メタストア管理者、USE PROVIDER 権限を持つユーザー、またはプロバイダーオブジェクトの所有者。
詳細は次のとおりです。
- プロバイダーが共有するシェア(「プロバイダーがあなたと共有しているシェアを表示する」を参照)。
- プロバイダーの作成者、作成タイムスタンプ、コメント、および認証タイプ (
TOKENまたはDATABRICKS)。TOKENは、Delta Sharing オープン共有プロトコルを使用してデータを共有したプロバイダーを表します。DATABRICKSは、 Databricks-to-Databricks 共有プロトコルを使用してデータを共有したプロバイダーを表します。 - プロバイダーが Databricks-to-Databricks 共有を使用している場合: プロバイダーの Unity Catalog メタストアのクラウド、リージョン、メタストア ID。
- プロバイダーがオープン共有を使用している場合: Delta Sharing 共有サーバーがホストされている受信者プロファイル エンドポイント。
- Catalog Explorer
- SQL
- CLI
-
Databricks ワークスペースで、
カタログ をクリックします。
-
[カタログ ] ウィンドウの上部にある [
] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。
または、右上隅の 「共有」> Delta Sharing をクリックします。
-
[ 自分と共有] タブで、プロバイダーを見つけて選択します。
ノートブックまたはDatabricks SQLクエリーエディタで次のコマンドを実行します。
DESC PROVIDER <provider-name>;
DESC PROVIDERの詳細については、DESCRIBE PROVIDERを参照してください。
Databricks CLI を使用して次のコマンドを実行します。
databricks providers get <provider-name>
プロバイダーがあなたと共有している株式を表示します
プロバイダーが共有している共有を表示するには、カタログ エクスプローラー、Databricks Unity Catalog CLI、または Databricks ノートブックまたは Databricks SQL クエリー エディターの SHOW SHARES IN PROVIDER SQL コマンドを使用できます。
必要な権限 :メタストア管理者、USE PROVIDER 権限を持つユーザー、またはプロバイダーオブジェクトの所有者。
- Catalog Explorer
- SQL
- CLI
-
Databricks ワークスペースで、
カタログ をクリックします。
-
[カタログ ] ウィンドウの上部にある [
] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。
または、右上隅の 「共有」> Delta Sharing をクリックします。
-
[ 自分と共有] タブで、プロバイダーを見つけて選択します。
ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。必要に応じて、 <pattern> を LIKE 述部に置き換えます。
SHOW SHARES IN PROVIDER [LIKE <pattern>];
SHOW SHARES IN PROVIDERの詳細については、SHOW SHARES IN PROVIDERを参照してください。
Databricks CLI を使用して次のコマンドを実行します。
databricks providers list-shares <provider-name>
プロバイダーの更新 (名前の変更、所有者の変更、コメント)
カタログ エクスプローラー、Databricks Unity Catalog CLI、または Databricks ノートブックまたは Databricks SQL クエリー エディターの ALTER PROVIDER SQL コマンドを使用して、Unity Catalog メタストア内のプロバイダー オブジェクトを変更できます。
- プロバイダーの名前を変更して、ユーザーが Databricks インターフェイスでプロバイダー オブジェクトを表示する方法を変更します。
- プロバイダ オブジェクトの所有者を変更します。
- コメントを追加または変更してください。
必要な権限 : 所有者を更新するには、プロバイダー オブジェクトの所有者である必要があります。 プロバイダー名を更新するには、メタストアの管理者(または CREATE PROVIDER 権限を持つユーザー) であり 、プロバイダーの所有者でなければなりません。 コメントを更新するには、所有者である必要があります。 初期所有者はメタストア管理者です。
- Catalog Explorer
- SQL
- CLI
-
Databricks ワークスペースで、
カタログ をクリックします。
-
[カタログ ] ウィンドウの上部にある [
] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。
または、右上隅の 「共有」> Delta Sharing をクリックします。
-
[ 自分と共有] タブで、プロバイダーを見つけて選択します。
-
詳細ページで、所有者、コメント、またはプロバイダー名を更新します。
プロバイダーの名前を変更するには、
ケバブメニューをクリックし、「 名前の変更 」を選択します。
ノートブックまたはDatabricks SQLクエリーエディタで次のコマンドを実行します。
ALTER PROVIDER <provider-name> RENAME TO <new-provider-name>
OWNER TO <new-owner>
COMMENT "<comment>";
ALTER PROVIDERの詳細については、ALTER PROVIDERを参照してください。
Databricks CLI を使用して次のコマンドを実行します。<provider-name> を現在のプロバイダー名に、<new-provider-name> を新しい名前に置き換えます。
databricks providers update <provider-name> /
--new-name <new-provider-name> /
--comment "<new comment>" /
--owner <new-owner-name>
受信者の認証情報をローテーションする
このセクションは、認証タイプがTOKEN 、 OAUTH_CLIENT_CREDENTIALS 、またはOIDC_FEDERATIONのプロバイダーオブジェクトに適用されます。Databricks-to-Databricksプロバイダー(認証タイプDATABRICKS )は自動的にローテーションされます。 プロバイダーオブジェクトを使用せずにデータにアクセスする場合(たとえば、 delta-sharing Python または Spark コネクタを使用する場合)、コネクタ構成に新しい認証情報ファイルを適用してください。Delta Sharing を使用して共有されたデータの読み取り、ベアラートークンを使用したオープンな共有を参照してください。
オープン共有プロトコルを使用するプロバイダーは、ベアラートークンをローテーションし、新しい認証情報ファイルを送信する場合があります。その場合は、Databricks REST APIを使用してプロバイダーオブジェクトを更新してください。新しい認証情報を適用するために、プロバイダーを削除して再作成しないでください。カタログはプロバイダーの名前ではなく、プロバイダーの内部IDに紐付けられます。同じ名前のプロバイダーを再作成すると、カタログと共有データとの接続が切断されます。
ALTER PROVIDERDatabricks CLI および Catalog Explorer は、プロバイダー認証情報の更新をサポートしていません。
認証情報を更新する
recipient_profile_strフィールドに新しい認証情報ファイルの内容を記述したPATCHリクエストをプロバイダーエンドポイントに送信します。
必要な権限 :プロバイダーオブジェクトの所有者またはメタストア管理者。
- Python
- curl
受信側のワークスペースにあるノートブックから、以下のコマンドを実行してください。<provider-name>メタストア内のプロバイダーオブジェクトの名前に置き換え、 new_profile新しい認証情報ファイルの値に更新してください。
import json
import requests
new_profile = {
"shareCredentialsVersion": 1,
"bearerToken": "<new-bearer-token>",
"endpoint": "https://<provider-workspace>.cloud.databricks.com/api/2.0/delta-sharing/metastores/<metastore-id>",
}
token = (
dbutils.notebook.entry_point.getDbutils()
.notebook()
.getContext()
.apiToken()
.get()
)
workspace_url = spark.conf.get("spark.databricks.workspaceUrl")
response = requests.patch(
f"https://{workspace_url}/api/2.1/unity-catalog/providers/<provider-name>",
headers={
"Authorization": f"Bearer {token}",
"Content-Type": "application/json",
},
json={"recipient_profile_str": json.dumps(new_profile)},
)
print(response.status_code)
print(response.json())
curl --request PATCH \
--header "Authorization: Bearer $DATABRICKS_TOKEN" \
--header "Content-Type: application/json" \
--url "https://<databricks-instance>/api/2.1/unity-catalog/providers/<provider-name>" \
--data '{
"recipient_profile_str": "<contents of the new credential file>"
}'
ローテーションが正常に完了すると、プロバイダーの更新されたメタデータを含む以下のレスポンスが返されます。
{
"name": "<provider-name>",
"authentication_type": "TOKEN",
"owner": "user@example.com",
"recipient_profile": {
"share_credentials_version": 1,
"endpoint": "https://<provider-workspace>.cloud.databricks.com/api/2.0/delta-sharing/metastores/<metastore-id>"
},
"updated_at": 1775804332820,
"updated_by": "user@example.com",
"id": "abcd2a5b-c18e-46eb-ae11-3056cfe99bef"
}
詳細については、 「プロバイダーの更新REST API」を参照してください。
回転を確認する
カタログ、スキーマ、およびテーブルに引き続きアクセスできることを確認してください。カタログ名は、回転前と同じである必要があります。
- Catalog Explorer
- SQL
-
Databricks ワークスペースで、
カタログ をクリックします。
-
[カタログ ] ウィンドウの上部にある [
] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。
または、右上隅の 「共有」> Delta Sharing をクリックします。
-
「共有アイテム」 タブで、ご利用のプロバイダーを探してください。
以前表示されていたエラーバナーは消え、株式は再び上場されるはずです。掲載されているカタログは、以前と同じ内容であるはずです。
以下のSQLをノートブックまたはDatabricks SQLクエリエディタで実行してください。
-- The catalog name should match what it was before rotation
SHOW CATALOGS;
-- Schemas in the shared catalog should still appear
SHOW SCHEMAS IN <catalog-name>;
-- Tables should still appear
SHOW TABLES IN <catalog-name>.<schema-name>;
-- A read from a shared table should return data
SELECT * FROM <catalog-name>.<schema-name>.<table-name> LIMIT 10;
クエリが成功すれば、ローテーションは完了し、既存のすべてのクエリ、ジョブ、ダッシュボードは引き続き動作します。
トラブルシューティング
エラー | 修正 |
|---|---|
リクエストが返される | 認証情報をローテーションするには、プロバイダーの所有者またはメタストアの管理者である必要があります。メタストア管理者に、ローテーションを適用するか、所有権を移転するよう依頼してください。シェアの更新を参照してください。 |
リクエストが返される | プロバイダー名が間違っています。メタストア内の正確な名前を一覧表示するには、 |
リクエストは「受信者プロファイルを更新できません」というメッセージとともに | API は、 |
クエリは返します | カタログ名が間違っているか、カタログとプロバイダ間の連携が壊れている可能性があります。カタログが存在することを確認するには、 |
カタログエクスプローラーは、 | 表示されているのは、ローテーション前のキャッシュされた結果です。ページを更新するか、数分お待ちください。 |
プロバイダーを削除する
プロバイダーを削除するには、カタログ エクスプローラー、 Databricks CLI 、またはDatabricksノートブックまたはDatabricks SQLクエリ エディターのDROP PROVIDER SQLコマンドを使用できます。 プロバイダーを削除するには、プロバイダーオブジェクトの所有者である必要があります。
プロバイダーを削除すると、自分と組織内のユーザー (受信者) は、プロバイダーが共有するデータにアクセスできなくなります。
必要な権限 : プロバイダー オブジェクトの所有者。
- Catalog Explorer
- SQL
- CLI
-
Databricks ワークスペースで、
カタログ をクリックします。
-
[カタログ ] ウィンドウの上部にある [
] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。
または、右上隅の 「共有」> Delta Sharing をクリックします。
-
[ 自分と共有] タブで、プロバイダーを見つけて選択します。
-
ケバブメニューをクリックし、[ 削除 ]を選択します。
-
確認ダイアログで、[ 削除 ] をクリックします。
ノートブックまたはDatabricks SQLクエリーエディタで次のコマンドを実行します。
DROP PROVIDER [IF EXISTS] <provider-name>;
DROP PROVIDERの詳細については、「DROP PROVIDER」を参照してください。
Databricks CLI を使用して次のコマンドを実行します。
databricks providers delete <provider-name>
操作が成功した場合、結果は返されません。