このページでは、データ受信者が独自の ID プロバイダー (IdP) に登録されているPython クライアントを使用して、Databricks で作成された OpenSharing 共有へのアクセスを確立する方法について説明します。
この "マシン間" (M2M) OAuth クライアント資格情報付与フローは、通常、仮想マシンで実行されている夜間ジョブなどのアプリケーションが自律的にデータにアクセスするシナリオで使用されます。 この認証フローでは、OIDC フェデレーションが使用されます。 受信者の IdP は、Databricks が認証する有効期間の短い OAuth トークンとして機能する JSON Web トークン (JWT) を発行します。 この Databricks オープン共有認証フローは、Unity Catalog 対応 Databricks ワークスペースにアクセスできない受信者を対象にしています。
Open OIDC フェデレーションは、有効期間が長い Databricks によって発行されたベアラー トークンを使用して、Databricks 以外の受信者をプロバイダーに接続する代わりに使用できます。 OAuth クライアント資格情報の付与フローでは、OAuth アプリケーションが受信者の IdP のサービス プリンシパル (SP) として登録されます。 有効期間が長いシークレットや資格情報は、Databricks、プロバイダー、受信者の間で共有されません。 ベアラー トークンを使用して共有への認証を管理する方法については、「ベアラー トークンを使用して Databricks 以外のユーザーの受信者オブジェクトを作成する (Databricks から開く共有)」を参照してください。
このページは受信者を対象としています。 プロバイダーがAzure Databricksで受信者の OIDC フェデレーションを有効にする方法については、「OpenSharing 受信者の Open ID Connect (OIDC) フェデレーションを有効にする」を参照してください。
"ユーザーからマシンへの" (U2M) フローの詳細については、U2M フロー で Open ID Connect (OIDC) フェデレーションを使用して共有されるデータの読み取りを参照してください。
IdP にアプリを登録する
OIDC フェデレーションを使用してクライアント アプリケーションに OpenSharing 共有へのアクセス権を付与するには、事前に OAuth アプリケーションを IdP に登録する必要があります。 このセクションでは、Microsoft Entra ID で OAuth アプリケーションを登録する方法について説明します。 その他の IdP については、そのドキュメントを参照してください。
Microsoft Entra IDでアプリを登録する
これらの手順は一般的なガイダンスとして意図されており、最新の状態に保持される保証はありません。 アプリの登録手順の詳細については、この Microsoft クイック スタートを参照してください。
- Microsoft Entra 管理センターに、少なくともアプリケーション開発者としてサインインします。
- [アプリの登録] に移動し、リダイレクト URL なしで新しい登録を作成します。
- [ 証明書] と [シークレット] > アプリのシークレットを作成 するに移動します。
- シークレット値をコピーし、安全に保存します。
- アプリの [アプリの登録] > [概要] ページで、アプリケーション (クライアント) ID をコピーします
- マニフェストを更新して、アプリを V2 アプリケーションに変更します。
- アプリの [管理 ] セクションで、[マニフェスト] を選択 します。
- エディターで、
accessTokenAcceptedVersionを2に設定します。 - 変更を保存します。
必要な情報を Azure Databricks データ プロバイダーに送信する
受信者として Microsoft Entra ID を使用する場合は、次の手順に従ってプロバイダーに必要なフィールドを取得できます。 最新の手順については、常に Microsoft Entra ID のドキュメントを参照してください。
発行者 URL:
https://login.microsoftonline.com/{tenantId}/v2.0、{tenantId}を Entra テナント ID に置き換えます。 テナント ID がわからない場合は、 Microsoft Entra ID のドキュメントを参照してください。サブジェクト要求: データにアクセスするエンティティを識別する JWT ペイロード内のフィールドを参照します。 使用される特定のフィールドは、ID プロバイダー (IdP) とユース ケースによって異なります。 たとえば、Microsoft Entra ID の M2M アプリケーションの場合、サブジェクト要求は
azpされ、トークンの使用が承認されたアプリケーションのクライアント ID を表します。 詳細については、Microsoft Entra ID アクセス トークン要求リファレンスを参照してください。件名: 受信者の ID プロバイダー (IdP) に登録されている OAuth アプリケーションのユニーク識別子を参照します。
たとえば、Microsoft Entra ID では、これは アプリケーション (クライアント) ID です。 登録中にクライアント ID をコピーしなかった場合は、IdP に固有の手順に従って取得できます。 Microsoft Entra ID の場合は、次の手順に従います。- Microsoft Entra 管理センターの [アプリの登録 ] に移動します。
- 登録済みの OAuth アプリケーションを選択します。
- [概要] ページで アプリケーション (クライアント) ID を 見つけます。
その他の IdPについては、対応する識別子を取得するためにその文書を参照してください。
対象ユーザー: コンピューターから Azure Databricks への認証の場合、通常はリソースの
clientIdを使用しますが、その他の有効なリソース識別子は指定できます。これは前の手順でコピーしておく必要があります。 そうでない場合は、Microsoft Entra 管理センターに移動し、 アプリの登録を検索し、登録済みのアプリケーションを選択して、[概要] ページで アプリケーション (クライアント) ID を 見つけます。 別のリソース ID を使用することもできます。
発行者、サブジェクト要求、件名、および対象ユーザーをプロバイダーと共有します。
Databricks プロバイダーによって共有される OAuth プロファイル ファイルを使用するようにアプリを構成する
プロバイダーから OpenSharing 共有にアクセスするようにアプリを構成するには:
Databricks プロバイダーが共有した OIDC プロファイル ポータルの URL に移動します。
まだ受信していない場合は、URL を要求します。
ポータル ページで M2M タイルを選択し、[ OAuth の場合] で [ ファイルのダウンロード] をクリックします。
ダウンロードした
oauth_config.shareJSON ファイルを変更して、clientId、clientSecret、scopeを追加します。アプリを登録するときに、クライアント ID とクライアント シークレットをコピーしている必要があります。 クライアント シークレットを再度取得することはできません。 クライアント ID を取得するには、前のセクションの手順を参照してください。
対象ユーザーとしてアプリの
{clientId}を使用する場合は、スコープを{clientId}/.defaultする必要があります。 たとえば、対象ユーザーが61a80fb9-ce0c-4794-9f7f-2ba42a7b76f6場合、スコープは61a80fb9-ce0c-4794-9f7f-2ba42a7b76f6/.defaultする必要があります。サンプル プロファイル:
{ "shareCredentialsVersion": 2, "endpoint": "https://oregon.cloud.databricks.com/api/2.0/delta-sharing/metastores/11a11aaa-11aa-11a12-11aa-111a1aa11111/recipients/a11da11aa1-a1a1-11a1-a11a-1111a11111aa", "tokenEndpoint": "https://login.microsoftonline.com/a111a111-1111-1aaa-1aa1-1aa1111aa1/oauth2/v2.0/token", "type": "oauth_client_credentials", "clientId": "[REPLACE_WITH_YOUR_CLIENT_ID]", "clientSecret": "[REPLACE_WITH_YOUR_CLIENT_SECRET]", "scope": "[REPLACE_WITH_YOUR_SCOPE]" }最新の OpenSharing Python OSS クライアントをインストールして設定します。
OpenSharing Python OSS クライアントの最新バージョンが必要です。
python3 -m venv .venv source .venv/bin/activate pip3 install "delta-sharing>=1.3.1"更新した
oauth_config.shareファイルを保存します。構成をテストします。
test.pyのテストスクリプトを作成してください。import delta_sharing # Point to the profile file. It can be a file on the local file system or a file on a remote storage. profile_file = "oauth_config.share" # Create a SharingClient. client = delta_sharing.SharingClient(profile_file) # # List all shared tables. tables = client.list_all_tables() print(tables) # replace the following line with the coordinates of the shared table #table_url = profile_file + "#sample_share.sample_db.sample_table" # Fetch 10 rows from a table and convert it to a Pandas DataFrame. # This can be used to read sample data from a table that cannot fit in the memory. #df = delta_sharing.load_as_pandas(table_url, limit=10) #print(df)スクリプトを実行します。
python3 test.pyスクリプトは共有テーブルを一覧表示する必要があります。