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

オープン共有受信者に対して Open ID Connect (OIDC) フェデレーションを有効にする

このページでは、Databricks のデータプロバイダーが、Databricks で作成された OpenSharing シェアへのアクセスを管理するために、ID プロバイダー(IdP)に認証をフェデレーションする方法について説明します。この認証フローはOIDCフェデレーションを使用しており、これにより受信者のIdPが発行するJSON Web トークン (JWT) をDatabricksによって認証される有効期間の短いOAuthトークンとして利用できます。このDatabricksからオープン共有認証方法は、Unity Catalogが有効なDatabricksワークスペースにアクセスできない受信者向けに設計されています。

OIDCフェデレーションでは、受信側のIdPがJWTトークンを発行し、多要素認証(MFA)などのセキュリティポリシーを適用する責任があります。同様に、JWTトークンの有効期間は受信者のIdPによって決定されます。

Databricksはこれらのトークンを生成または管理しません。受信者のIdPに対してのみ認証をフェデレートし、JWTを受信者が構成したフェデレーションポリシーに照らして検証します。データプロバイダーは、組織内の他のユーザーや部署と内部的にデータを共有する場合、自身のIdPに認証をフェデレートすることも選択できます。

OIDC フェデレーションは、Databricks が発行した長期間有効なベアラー トークンを使用して、Databricks 以外の受信者をプロバイダーに接続する代替手段です。きめ細かなアクセス制御を可能にし、MFAをサポートし、受信者が共有資格情報を管理して保護する必要性を排除することでセキュリティリスクを軽減します。

代わりにベアラー トークンを使用して共有への認証を管理する方法に関する情報については、ベアラー トークンを使用して非Databricks ユーザーの受信者オブジェクトを作成する (Databricks-to-Open 共有)を参照してください。

OpenSharingでOIDCフェデレーションはどのように機能しますか?

  1. データプロバイダーがDatabricks上のOpenSharingで受信者を作成する際、Microsoft Entra IDやOktaなどの受信者IdPの発行者URLを指定し、共有へのアクセス権を持つべき受信者のユーザー、グループ、サービスプリンシパル、またはOAuthアプリケーションを定義するOIDCトークンフェデレーションポリシーを構成します。

  2. Databricks は、ポリシーに基づいて OIDC プロファイル Web ポータルの URL を生成し、プロバイダーがその URL を受信者と共有します。

    エンドユーザーは、使用するプラットフォームに応じてエンドポイントURLをコピーするかプロファイルファイルをダウンロードし、共有データをクエリするプラットフォームにそのURLまたはプロファイルファイルを提供します。Databricks OIDCポータルウェブからダウンロードされたこの共有プロファイルファイルには、機密情報は含まれていません。

    • ユーザーマシン間 (U2M) 認証の場合、受信者は OIDC プロファイル Web ポータルから受信者エンドポイントを U2M アプリケーションに入力します。
    • マシン間 (M2M) 認証の場合、受信者アプリケーション開発者はプロファイルファイルをダウンロードし、受信者クライアントアプリでそれを参照します。
  3. 受信者が希望のプラットフォームを使用して共有データにアクセスしようとすると、認証は受信者のIdPにフェデレートされます。

    Databricks はトークンも資格情報も生成または管理しません。代わりに、受信者のIdPはIDクレームを含むJWTを生成します。この短期間のトークンの有効期間は、受信者のIdPによって強制されます。OpenSharingサービスは、受信者のポリシーに対してJWTを検証し、発行者、オーディエンス、サブジェクトなどの期待されるクレームと一致することを確認します。検証が成功した場合、リクエストは認証され、Unity Catalog の権限に基づいてアクセスが付与されます。

始める前に

受信者を作成するには、次の要件を満たす必要があります。

  • 共有するデータが登録されているUnity Catalogメタストアに対してCREATE RECIPIENT権限が必要です。
  • 受信者は、そのUnity CatalogメタストアがアタッチされたDatabricksワークスペースを使用して作成する必要があります。
  • レシーバーを作成するためにDatabricksノートブックを使用する場合、コンピュートはDatabricks Runtime 11.3 LTS以降、および標準または専用アクセスモード(以前は共有およびシングルユーザーアクセスモード)を使用する必要があります。

使用するIDプロバイダーはどちらですか?

共有シナリオに応じて、内部または外部の ID プロバイダーで OIDC フェデレーションを使用できます。

  • 内部IDプロバイダー(プロバイダー管理)

    • これは、大規模な組織内で、異なる部門が直接Databricksにアクセスできないが、同じIdPを共有している場合にデータ共有に役立ちます。
    • このアプローチにより、プロバイダーは受信者に代わってアクセスを管理できるようになります。
    • MFA や役割ベースのアクセス制御などのセキュリティ ポリシーは、プロバイダーの IdP によって適用されます。
  • 外部IDプロバイダー(受信者が管理)

    • プロバイダーは、受信者の IdP を信頼するように共有ポリシーを設定します。
    • 受信者組織は、共有データに誰がアクセスできるかを完全に制御できます。
    • MFAや役割ベースのアクセス制御などのセキュリティポリシーは、受信者のIdPによって適用されます。

U2M または M2M 認証シナリオ

OIDC トークン フェデレーションを使用した Secure Open Sharing は、ユーザーマシン間 (U2M) 認証フローとマシン間 (M2M) 認証フローの両方をサポートし、さまざまな安全なデータ共有シナリオを可能にします。

ユーザーマシン間(U2M)認証

受信者組織のユーザーは、自身のIdPを使用して認証します。MFAが構成されている場合、ログイン時に適用されます。

認証が完了すると、ユーザーは Power BI や Tableau などのツールを使用して共有データにアクセスできます。データプロバイダーは、受信者組織内の特定のユーザーやグループへのデータアクセスを制限するアクセスポリシーを定義し、共有リソースにアクセスできるユーザーを厳密に制御できます。U2M クライアントアプリケーション(例: Power BI)は、OAuth 認証コードグラントフローを使用して、IdP からアクセストークンを取得します。

マシン間 (M2M) 認証

M2M は、ユーザーによる操作なしでアクセスが可能な自動化されたワークロード(夜間ジョブやバックグラウンドサービスなど)に最適です。受信者組織は、IdPにサービスプリンシパルを登録します。このサービスIDは、アプリケーションまたはスクリプトがプログラムによって安全にリソースにアクセスできるようにします。Databricks、プロバイダー、または受信者の間で、シークレットや資格情報が交換されることはありません。すべてのシークレット管理は各組織内で完結します。Python OpenSharingクライアントやSpark OpenSharingクライアントなどのM2Mクライアントは、OAuth クライアント資格情報フローを使用してIdPからアクセストークンを取得します。

OIDCフェデレーションポリシーを使用する受信者を作成します

ステップ 1. Open OIDC Federation Recipientを作成します。

OIDCを使用して認証する受信者を作成するには:

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

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

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

  3. 自分が共有 タブで、 新しい受信者 をクリックします。

  4. 受信者名 」を入力します。

  5. 受信者の種類 で、 オープン を選択します。

  6. OIDCフェデレーションを 認証方法 として選択してください。

  7. 作成 をクリックします。

  8. (オプション) カスタム 受信者プロパティ を作成します。受信者の 詳細 タブで、 プロパティの編集 > +プロパティを追加 をクリックします。次に、プロパティ名 ( キー ) と を追加します。詳細については、受信者のプロパティを管理するを参照してください。

ステップ2: OIDCフェデレーションポリシーを作成します。

ポリシーを作成する前に、受信者のIdPに関する、共有へのアクセス権を持つ必要があるユーザー、グループ、サービスプリンシパル、またはOAuthアプリケーションを含む必要な情報を収集してください。ご自身の(内部)IdPを社内共有のために使用している場合、この情報をご自身のIDシステムから取得してください。

まず、受信者から、そのIdPと、共有へのアクセス権を持つべきユーザー、グループ、サービスプリンシパル、またはOAuthアプリケーションに関する情報を要求する必要があります。その後、受信者を作成する際に、その情報をDatabricksで提供します。

  1. 受信者編集ページの**OIDCフェデレーションポリシー**の下で、**ポリシーの追加**をクリックします。

OIDCポリシー構成ダイアログ

  1. 次の項目を入力します。

    • ポリシー名 :ポリシーのわかりやすい名前。

    • 発行者URL :JWTトークンを発行しているIdPのHTTPS URL。

    • サブジェクトクレーム :認証IDタイプを識別するJWT内のクレームです。Microsoft Entra ID内では、以下の値を構成できます。

      • oid(オブジェクト ID) :PowerBI などの U2M アプリケーションを介してユーザーがデータにアクセスする場合に選択します。
      • groups : PowerBIなどのU2Mアプリケーションを介してユーザーグループがデータにアクセスする場合に選択します。
      • azp : OAuthアプリケーションが、Python OpenSharing ClientやSpark OpenSharing ClientなどのM2Mアプリケーションを介してデータにアクセスすることを目的としている場合は、選択します。

      他の IdP では、sub などのクレームやその他のクレームが使用される場合があります。ユースケースに適したクレームを判断するには、IdP のドキュメントを参照してください。

    • 件名 : 共有へのアクセスを許可された特定のユーザー、グループ、またはアプリケーション。

    • オーディエンス : JWTが一致する必要がある1つ以上のリソース識別子。audクレームがリストされたオーディエンスのいずれかに一致する場合、トークンは有効とみなされます。

  2. 保存 をクリックします。

使用する値(発行者、サブジェクトクレーム、サブジェクト、オーディエンス)について不明な場合は、以下の例を参照してください。OIDCフェデレーションポリシーを作成する前に、その詳細を決定する必要があります。

外部受信者管理 IdP を使用している場合は、安全なチャンネルを介して受信者から以下の情報を要求してください。内部プロバイダー管理 IdP を使用している場合、この情報は共有している ID に基づいてご自身の IdP から提供されます。

IdP が Entra ID の場合の U2M の例:

これらは、Entra IDテナント内のObject ID 11111111-2222-3333-4444-555555555555を持つ特定のユーザーと共有するための構成例です。 aaaaaaaa-bbbb-4ccc-dddd-eeeeeeeeeeee

  • 発行者: https://login.microsoftonline.com/aaaaaaaa-bbbb-4ccc-dddd-eeeeeeeeeeee/v2.0
  • 件名クレーム: oid (オブジェクトID)
  • 件名: 11111111-2222-3333-4444-555555555555
  • オーディエンス:64978f70-f6a6-4204-a29e-87d74bfea138(Databricks が Entra ID に登録したマルチテナントアプリのクライアント ID です)

これは、Entra ID テナントにおけるオブジェクトID 66666666-2222-3333-4444-555555555555 を持つ特定のグループと共有するための構成例です。 aaaaaaaa-bbbb-4ccc-dddd-eeeeeeeeeeee

  • 発行者: https://login.microsoftonline.com/aaaaaaaa-bbbb-4ccc-dddd-eeeeeeeeeeee/v2.0
  • サブジェクトクレーム: groups
  • 件名: 66666666-2222-3333-4444-555555555555
  • オーディエンス:64978f70-f6a6-4204-a29e-87d74bfea138(Databricks が Entra ID に登録したマルチテナントアプリのクライアント ID です)
注記

Power BIやTableauのようなU2Mアプリケーションの場合、対象はDatabricksがEntra IDに登録したマルチテナントアプリID(64978f70-f6a6-4204-a29e-87d74bfea138)である必要があります。

U2MアプリケーションとそのOIDCフェデレーションポリシーの詳細については、「U2MフローでOpen ID Connect (OIDC) フェデレーションを使用して共有されたデータを読み取る」を参照してください。

M2Mの例(IdPがEntra IDの場合):

Entra ID テナント aaaaaaaa-bbbb-4ccc-dddd-eeeeeeeeeeee 内のアプリケーション (クライアント) ID 11111111-2222-3333-4444-555555555555 を持つM2M OAuthアプリケーションの場合:

  • 発行者: https://login.microsoftonline.com/aaaaaaaa-bbbb-4ccc-dddd-eeeeeeeeeeee/v2.0
  • サブジェクトクレーム: azp
  • 件名:11111111-2222-3333-4444-555555555555(これはアプリケーション(クライアント)IDです。登録済みOAuthアプリケーションのクライアントIDであり、受信者のEntra IDポータルで確認できます)
  • オーディエンス: 66666666-2222-3333-4444-555555555555(これは、登録されたOAuthアプリケーションのクライアントIDなど、受信者によって定義された有効なオーディエンス識別子です。)M2MアプリケーションとそのOIDCフェデレーションポリシーの詳細については、M2MフローでOpen ID Connect (OIDC) フェデレーションを使用して共有されたデータを読み取るを参照してください。

ステップ3: 受信者に共有へのアクセス権を付与する

受信者の作成および共有の作成後に、受信者にそれらの共有へのアクセス権を付与できます。

受信者に共有アクセス権を付与するには、カタログエクスプローラ、Databricks Unity Catalog CLI、または Databricks ノートブックまたは Databricks SQL クエリエディターの GRANT ON SHARE SQL コマンドを使用できます。

**必要な権限**:次のいずれか:

  • メタストア管理者。
  • 共有オブジェクトと受信者オブジェクト ((USE SHARE + SET SHARE PERMISSION) または共有の所有者) および (USE RECIPIENT または受信者の所有者) の両方に対する委任されたアクセス許可または所有権。

手順については、「OpenSharing データ共有へのアクセスを管理する (プロバイダー向け)」を参照してください。

Iceberg受信者と共有

OIDC 受信者が Iceberg REST カタログを使用して共有データアセットを読んでいる場合、**Iceberg OIDCプロファイル生成ポータル**のリンクを共有してください。

OIDCフェデレーションポリシーを使用する受信者を作成してから、リンクを送信してください:

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

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

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

  3. **自分が共有** タブで、**受信者** をクリックします。

  4. OIDC 受信者を検索して選択します。

  5. ページの右側で、**OIDCフェデレーションポリシー**の下にある**デフォルトOIDCポリシー**をクリックします。

  6. Iceberg OIDCプロファイル生成ポータルリンクをコピーして、安全な方法で受信者と共有してください。

  7. リンクには、受信者が共有データを読み取るために必要な共有名も含まれています。

受信者ワークフロー

受信者がOIDCトークンフェデレーションを使用して共有を認証およびアクセスする方法については、以下を参照してください: