メインコンテンツまでスキップ

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特権が必要です。他のユーザーは、自分が所有するプロバイダーにのみアクセスできます。

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

  2. カタログ ウィンドウの上部にある歯車アイコン。歯車アイコンをクリックし、 OpenSharing を選択します。

    または、右上隅の Share > OpenSharing をクリックします。

  3. 自分と共有済み 」タブで、組織と共有されているすべてのデータを表示します。各シェアについて、以下の詳細が提供されます。

    • 名前: プロバイダーによって指定された組織名。
    • **認証タイプ:** プロバイダーが使用する共有方法。
    • オーナー: プロバイダーの名前またはEメール。
    • 作成日時: 共有が作成された日時。
    • 説明: 共有の説明。

プロバイダーの詳細を表示する

プロバイダーの詳細を表示するには、カタログ エクスプローラー、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共有サーバーがホストされている場所です。
  1. Databricks ワークスペースで、データアイコン。 カタログ をクリックします。

  2. カタログ ウィンドウの上部にある歯車アイコン。歯車アイコンをクリックし、 OpenSharing を選択します。

    または、右上隅の Share > OpenSharing をクリックします。

  3. 自分と共有 タブで、プロバイダーを見つけて選択します。

プロバイダーがあなたと共有した共有を表示する

プロバイダーが共有している共有を表示するには、カタログ エクスプローラー、Databricks Unity Catalog CLI、または Databricks ノートブックまたは Databricks SQL クエリー エディターの SHOW SHARES IN PROVIDER SQL コマンドを使用できます。

必要な権限 :メタストア管理者、USE PROVIDER権限を持つユーザー、またはプロバイダーオブジェクトの所有者。

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

  2. カタログ ウィンドウの上部にある歯車アイコン。歯車アイコンをクリックし、 OpenSharing を選択します。

    または、右上隅の Share > OpenSharing をクリックします。

  3. 自分と共有 タブで、プロバイダーを見つけて選択します。

プロバイダーを更新(名前を変更、所有者を変更、コメント)

カタログ エクスプローラー、Databricks Unity Catalog CLI、または Databricks ノートブックまたは Databricks SQL クエリー エディターの ALTER PROVIDER SQL コマンドを使用して、Unity Catalog メタストア内のプロバイダー オブジェクトを変更できます。

  • ユーザーがDatabricksインターフェイスでプロバイダーオブジェクトを認識する方法を変更するには、プロバイダーの名前を変更します。
  • プロバイダー オブジェクトの所有者を変更します。
  • コメントを追加または変更します。

必要な権限:所有者を更新するには、プロバイダーオブジェクトの所有者である必要があります。プロバイダー名を更新するには、メタストア管理者(またはCREATE PROVIDER 権限を持つユーザー)であり、プロバイダーの所有者である必要があります。コメントを更新するには、所有者である必要があります。最初の所有者はメタストア管理者です。

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

  2. カタログ ウィンドウの上部にある歯車アイコン。歯車アイコンをクリックし、 OpenSharing を選択します。

    または、右上隅の Share > OpenSharing をクリックします。

  3. 自分と共有 タブで、プロバイダーを見つけて選択します。

  4. 詳細ページで、所有者、コメント、またはプロバイダー名を更新できます。

    プロバイダーの名前を変更するには、ケバブメニューアイコン。 ケバブメニューをクリックし、 「名前の変更」 を選択してください。

開示されている受信者の資格情報をローテーションする

このセクションは、認証タイプが TOKENOAUTH_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リクエストを送信してください。

必要な権限 :プロバイダーオブジェクト所有者またはメタストア管理者。

受信者のワークスペースでノートブックから以下を実行します。メタストアのプロバイダーオブジェクト名で <provider-name> を置き換え、新しい資格情報ファイルの値で new_profile を更新します。

Python
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={
&quot;Authorization&quot;: f&quot;Bearer {token}&quot;,
&quot;Content-Type&quot;: &quot;application/json&quot;,
},
json={&quot;recipient_profile_str&quot;: json.dumps(new_profile)},
)

print(response.status_code)
print(response.json())

回転が成功すると、プロバイダーの更新されたメタデータを含む以下の応答が返されます。

JSON
{
"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 を参照してください。

ローテーションを確認します。

カタログ、スキーマ、およびテーブルが引き続きアクセス可能であることを確認してください。カタログ名はローテーション前と同じである必要があります。

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

  2. カタログ ウィンドウの上部にある歯車アイコン。歯車アイコンをクリックし、 OpenSharing を選択します。

    または、右上隅の Share > OpenSharing をクリックします。

  3. 自分と共有 」タブで、プロバイダーを見つけてください。

以前のエラーバナーは表示されなくなり、共有が再度リスト表示されるはずです。リストされたカタログは、以前と同じであるはずです。

トラブルシューティング

エラー

修正

リクエストが返す 403 Forbidden

資格情報をローテーションするには、プロバイダーの所有者またはメタストア管理者である必要があります。メタストア管理者にローテーションを適用するか、所有権を譲渡するよう依頼してください。「プロバイダーの更新(名前の変更、所有者の変更、コメント)」を参照してください。

リクエストが返す 404 Not Found

プロバイダー名が正しくありません。メタストア内の正確な名前を一覧表示するには、SHOW PROVIDERSを実行してください。

リクエストは「受信者プロファイルを更新できません」というメッセージとともに 400 Bad Request を返します。

APIは、TOKENOAUTH_CLIENT_CREDENTIALS、およびOIDC_FEDERATIONプロバイダーの認証情報のみを更新します。Databricks-to-Databricks共有の場合、認証情報は自動的にローテーションします。

クエリーの戻り値 TABLE_OR_VIEW_NOT_FOUND

カタログ名が正しくないか、カタログとプロバイダーのバインディングが破損している可能性があります。SHOW CATALOGSSHOW SCHEMAS IN <catalog-name>を実行して、カタログが存在することを確認します。

カタログエクスプローラは、PATCH の成功後、古いデータまたはエラーが表示されます。

ローテーション前のキャッシュされた結果が表示されています。ページを更新するか、数分お待ちください。

プロバイダーを削除する

プロバイダーを削除するには、カタログエクスプローラ、Databricks CLI、または Databricks ノートブックまたは Databricks SQL クエリエディターの DROP PROVIDER SQL コマンドを使用できます。プロバイダーを削除するには、プロバイダーオブジェクトの所有者である必要があります。

プロバイダーを削除すると、お客様および組織のユーザー (受信者) は、プロバイダーによって共有されたデータにアクセスできなくなります。

必要な権限 : プロバイダーオブジェクト所有者。

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

  2. カタログ ウィンドウの上部にある歯車アイコン。歯車アイコンをクリックし、 OpenSharing を選択します。

    または、右上隅の Share > OpenSharing をクリックします。

  3. 自分と共有 タブで、プロバイダーを見つけて選択します。

  4. ケバブメニューアイコン。 ケバブメニューをクリックし、 削除 を選択します。

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