OpenSharingプロバイダーの管理(データ受信者用)
このページでは、OpenSharing を使用してデータを共有しているデータプロバイダーに関する情報を取得するために Unity Catalog を使用する方法について説明します。また、プロバイダーオブジェクトとは何か、そしてUnity Catalogメタストア内でプロバイダーオブジェクトをいつ作成する必要があるかについても説明します(これは、ほとんどの受信者には全く必要のないタスクです)。
データ受信者は、記載されている機能を使用するには、Unity Catalog が有効な Databricks ワークスペースにアクセスできる必要があります。このページは、Unity Catalog が有効なワークスペースを持たない受信者には適用されません。
受信者はプロバイダーオブジェクトを作成する必要がありますか?
OpenSharing on Databricksでは、「プロバイダー」という用語は、データ共有元の組織と、その組織を表す受信者のUnity Catalogメタストア内のセキュリティ保護可能なオブジェクトの2つを意味する場合があります。そのセキュリティ保護可能なオブジェクトが受信者のUnity Catalogメタストアに存在することで、受信者はUnity Catalogを使用して共有データへのチームのアクセスを管理できるようになります。
Unity Catalog メタストアにアクセスできる受信者として、プロバイダーオブジェクトを作成する必要は通常ありません。これは、Databricks-to-Databricks共有を使用してデータがお客様と共有されるためであり、プロバイダーオブジェクトがUnity Catalogメタストアに自動的に作成されるためです。
Unity Catalogが有効なDatabricksワークスペースから共有していないプロバイダーからデータを受信している場合は、Catalog Explorerを使用してプロバイダーの資格情報ファイルをインポートできます。「Databricks: Databricks-to-Open共有コネクタを使用して共有データを読み取る」を参照してください。
始める前に
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 ワークスペースで、
カタログ をクリックします。
-
カタログ ウィンドウの上部にある
歯車アイコンをクリックし、 OpenSharing を選択します。
または、右上隅の Share > OpenSharing をクリックします。
-
「 自分と共有済み 」タブで、組織と共有されているすべてのデータを表示します。各シェアについて、以下の詳細が提供されます。
- 名前: プロバイダーによって指定された組織名。
- **認証タイプ:** プロバイダーが使用する共有方法。
- オーナー: プロバイダーの名前またはEメール。
- 作成日時: 共有が作成された日時。
- 説明: 共有の説明。
ノートブックまたはDatabricks SQLクエリーエディターで次のコマンドを実行します。必要に応じて、<pattern>をLIKE述語に置き換えます。
SHOW PROVIDERS [LIKE <pattern>];
SHOW PROVIDERS の詳細については、SHOW PROVIDERSを参照してください。
Databricks CLI を使用して、次のコマンドを実行します。
databricks providers list
プロバイダーの詳細を表示する
プロバイダーの詳細を表示するには、カタログ エクスプローラー、Databricks Unity Catalog CLI 、またはDatabricks ノートブックまたはDatabricks SQLクエリエディターのDESCRIBE PROVIDER SQLコマンドを使用できます。
必要な権限 :メタストア管理者、USE PROVIDER権限を持つユーザー、またはプロバイダーオブジェクトの所有者。
詳細は次のとおりです。
- プロバイダーが共有した共有 (プロバイダーが共有した共有を表示するを参照してください)。
- プロバイダーの作成者、作成日時、コメント、および認証タイプ(
TOKENまたはDATABRICKS)。TOKENは、OpenSharing Databricks-to-オープン共有 共有プロトコルを使用してデータを共有したプロバイダーを表します。DATABRICKSは、Databricks-to-Databricks 共有プロトコルを使用してデータを共有したプロバイダーを表します。 - プロバイダーが Databricks-to-Databricks 共有を使用している場合: プロバイダーの Unity Catalog メタストアのクラウド、リージョン、およびメタストア ID。
- プロバイダーが Databricks-to-Open 共有を使用する場合: 受信者プロファイルエンドポイント。これは、OpenSharing共有サーバーがホストされている場所です。
- Catalog Explorer
- SQL
- CLI
-
Databricks ワークスペースで、
カタログ をクリックします。
-
カタログ ウィンドウの上部にある
歯車アイコンをクリックし、 OpenSharing を選択します。
または、右上隅の Share > OpenSharing をクリックします。
-
自分と共有 タブで、プロバイダーを見つけて選択します。
ノートブックまたは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 ワークスペースで、
カタログ をクリックします。
-
カタログ ウィンドウの上部にある
歯車アイコンをクリックし、 OpenSharing を選択します。
または、右上隅の Share > OpenSharing をクリックします。
-
自分と共有 タブで、プロバイダーを見つけて選択します。
ノートブックまたは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 ワークスペースで、
カタログ をクリックします。
-
カタログ ウィンドウの上部にある
歯車アイコンをクリックし、 OpenSharing を選択します。
または、右上隅の Share > OpenSharing をクリックします。
-
自分と共有 タブで、プロバイダーを見つけて選択します。
-
詳細ページで、所有者、コメント、またはプロバイダー名を更新できます。
プロバイダーの名前を変更するには、
ケバブメニューをクリックし、 「名前の変更」 を選択してください。
ノートブックまたは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 コネクタを使用する場合、コネクタの設定に新しい資格情報ファイルを適用します。「OpenSharing Databricks-to-Open sharing を使用して共有されたデータをベアラー トークンで読み取る」を参照してください。
Databricks-to-Open共有プロトコルを使用しているプロバイダーは、お客様のベアラートークンを更新し、新しい資格情報ファイルを送信する可能性があります。その場合は、Databricks REST API を使用してプロバイダーオブジェクトを更新してください。新しい資格情報を適用するために、プロバイダーを削除して再作成しないでください。カタログは、その名前ではなく、プロバイダーの内部IDにバインドされます。同じ名前でプロバイダーを再作成すると、カタログの共有データへの接続が切断されます。
ALTER PROVIDER、Databricks 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 ワークスペースで、
カタログ をクリックします。
-
カタログ ウィンドウの上部にある
歯車アイコンをクリックし、 OpenSharing を選択します。
または、右上隅の Share > OpenSharing をクリックします。
-
「 自分と共有 」タブで、プロバイダーを見つけてください。
以前のエラーバナーは表示されなくなり、共有が再度リスト表示されるはずです。リストされたカタログは、以前と同じであるはずです。
ノートブックまたはDatabricks SQLクエリーエディタで次の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 ワークスペースで、
カタログ をクリックします。
-
カタログ ウィンドウの上部にある
歯車アイコンをクリックし、 OpenSharing を選択します。
または、右上隅の Share > OpenSharing をクリックします。
-
自分と共有 タブで、プロバイダーを見つけて選択します。
-
ケバブメニューをクリックし、 削除 を選択します。
-
確認ダイアログで、 [削除] をクリックします。
ノートブックまたはDatabricks SQLクエリーエディタで次のコマンドを実行します。
DROP PROVIDER [IF EXISTS] <provider-name>;
DROP PROVIDER の詳細については、DROP PROVIDER を参照してください。
Databricks CLI を使用して、次のコマンドを実行します。
databricks providers delete <provider-name>
操作が成功した場合、結果は返されません。