Open ID Connect (OIDC) フェデレーションを使用して、Delta Sharing 共有 (オープン共有) への認証を有効にします
プレビュー
この機能は パブリック プレビュー段階です。Databricks アカウント チームに連絡して、アクセスをリクエストしてください。
この記事では、Databricks のデータ プロバイダーを使用して、受信者が自分の ID プロバイダー (IdP) を使用して、Databricks で作成された Delta Sharing 共有へのアクセスを確立できるようにする方法について説明します。この認証フローでは、OIDC フェデレーションを使用して、受信者の IdP によって生成された JSON Web トークン (JWT) を、Databricks によって生成された有効期間の短い OAuth トークンと交換します。この Databricks から Open への共有 認証フローは、Unity Catalog 対応の Databricks ワークスペースにアクセスできない受信者向けです。
OIDC フェデレーションは、Databricks が発行した長期間有効なベアラー トークンを使用して、Databricks 以外の受信者をプロバイダーに接続する代替手段です。きめ細かなアクセス制御を可能にし、MFAをサポートし、受信者が共有資格情報を管理して保護する必要性を排除することでセキュリティリスクを軽減します。ベアラー トークンを使用して共有への認証を管理する方法については、「 ベアラー トークンを使用して非Databricks ユーザーの受信者オブジェクトを作成する (オープン共有)」を参照してください。
Delta Sharing では OIDC フェデレーションはどのように機能しますか?
-
データ プロバイダーは、Delta Sharing の で受信者を作成するときに、受信者Databricks IdP の発行者 URL (Microsoft Entra ID や Okta など) を指定し、共有にアクセスする必要がある受信者ユーザー、サービスプリンシパル、グループ、またはクライアント アプリケーションを定義する OIDC トークン フェデレーション ポリシーを構成します。
-
Databricks は、ポリシーに基づいて OIDC プロファイル Web ポータル URL を生成し、プロバイダーはその URL を受信者と共有します。
エンドユーザーは、優先するプラットフォームに応じてエンドポイントURLをコピーするか、プロファイルファイルをダウンロードし、共有データをクエリするプラットフォームにURLまたはプロファイルファイルを提供します。
受信者クライアント アプリと Databricks アカウント間のマシン間 (M2M) 認証の場合、受信者アプリの開発者はプロファイル ファイルをダウンロードし、クライアント アプリで参照します。
-
受信者が好みのプラットフォームを使用して共有データにアクセスしようとすると、IdP が認証を管理します。
IdP は、ID クレームを含む短命の JWT を発行します。Delta Sharing サービスは、JWT を受取人のポリシーに照らして検証し、JWT が発行者、対象ユーザー、サブジェクトなどの予想される請求と一致することを確認します。検証が成功すると、要求が認証され、Unity Catalog のアクセス許可に基づいてアクセスが許可されます。
始める前に
受信者を作成するには、次の要件を満たす必要があります。
- メタストア管理者であるか、共有するデータが登録されている Unity Catalog メタストアの
CREATE_RECIPIENT
特権を持っている必要があります。 - 受信者は、その Unity Catalog メタストアがアタッチされている Databricks ワークスペースを使用して作成する必要があります。
- Databricks ノートブックを使用して受信者を作成する場合、コンピュートは Databricks Runtime 11.3 LTS 以降を使用し、標準または専用アクセス モード (以前の共有およびシングル ユーザー アクセス モード) を使用する必要があります。
OIDC フェデレーション ポリシーを使用する受信者を作成する
OIDC フェデレーションポリシーを使用する受信者を作成するには、まず、受信者に IdP に関する情報と、共有へのアクセス権を付与するユーザー、グループ、およびサービスプリンシパルに関する情報をリクエストする必要があります。その後、受信者を作成するときに、その情報を Databricks で提供します。
ステップ1.OIDC ポリシーの作成に必要な情報について、受信者に問い合わせます
受信者に次の情報をリクエストし、安全なチャンネルを使用して共有します。
- 発行者URL: ID プロバイダーを識別する HTTPS URL。トークンの
iss
要求で指定されます。 - サブジェクト: 共有へのアクセスが許可されている受信者のユーザー、グループ、または登録済みの OAuth アプリ。
sub
、group
、またはoid
の要求で指定されています。 - 対象ユーザー: トークンを受け入れるリソース サーバーを表す識別子。トークン内のオーディエンスがポリシー内の少なくとも 1 つのオーディエンスと一致する限り、トークンは一致と見なされます。
aud
クレームで指定されています。
受信者がこの情報を見つける方法の詳細については、「Delta Sharingユーザー間フローで Open ID Connect (OIDC) フェデレーションを使用して 共有を受信する (オープン共有)」 および「Delta SharingPythonクライアントを使用して 共有を受信する」および「マシン間フローで Open ID Connect (OIDC) フェデレーション (オープン共有)」 を参照してください。
ステップ2.OIDC ポリシーを使用して受信者を作成する
OIDC を使用して認証する受信者を作成するには、次のようにします。
-
Databricks ワークスペースで、
カタログ をクリックします。
-
[カタログ ] ウィンドウの上部にある [
] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。
または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。
-
[ 自分が共有] タブで、[ 新しい受信者 ] をクリックします。
-
受信者名 を入力します。
-
[受信者の種類] で、[ 開く] を選択します。
-
作成 をクリックします。
-
OIDC フェデレーション ポリシーを追加します。
受信者の編集ページの OIDC フェデレーション ポリシー で、[ ポリシーの追加 ] をクリックします。
次の項目を入力します。
-
ポリシー名 : 人間が判読できるポリシーの名前。
-
発行者URL : JWTトークンを発行する受信者IDプロバイダを識別するHTTPS URL。
-
サブジェクト要求 : 認証対象のサブジェクト (ユーザー、グループ、またはマシン ID) を識別する JWT ペイロード内のフィールド。
ユーザー名で識別されるユーザーまたはサービスプリンシパルには sub 、IdP で定義されたグループには グループ を、エンティティのオブジェクト ID には oid を使用します (ユーザー、サービスプリンシパル、または受信者の IdP に登録されている OAuth アプリ)。
-
Microsoft Entra ID を使用した OIDC フェデレーションでは、 oid と グループ のみがサポートされます。
-
件名 : 共有へのアクセスが許可されている特定の受信者ユーザーまたはグループ。
-
オーディエンス : トークンを受け入れるリソースサーバーを表す識別子。トークン内のオーディエンスがポリシー内の少なくとも 1 つのオーディエンスと一致する限り、トークンは一致と見なされます。
ユーザーから Databricks への認証では、常に次の ID を使用します。
64978f70-f6a6-4204-a29e-87d74bfea138
これは、受信者が Power BI と Tableau を使用して Databricks 共有にアクセスするために使用する、
Databricks published multi-tenant App(DeltaSharing)
OAuth に登録されたクライアント アプリの ID です。マシン間Databricks 認証では、通常はリソースの
clientId
を使用しますが、他の有効なリソース識別子を指定することもできます。
これらのフィールドの詳細情報と、受信者がその値を見つける方法については、Delta Sharingユーザー間フローでの Open ID Connect (OIDC) フェデレーションを使用した 共有の受信 (オープン共有) およびDelta Sharingクライアントを使用したPython 共有の受信およびマシン間フローでの Open ID Connect (OIDC) フェデレーション (オープン共有) を参照してください。 8. 保存 をクリックします。
-
OIDC プロファイル生成ポータル の URL をコピーし、受信者と共有します。
後で表示してコピーするには、受信者の詳細ページに戻り、[ OIDC フェデレーション ポリシー ] の下のポリシー名をクリックします。
-
(オプション)カスタム 受信者プロパティ を作成します。
受信者 の「詳細 」タブで、「 プロパティを編集」>「+プロパティを追加」 をクリックします。次に、プロパティ名 ( キー ) と 値 を追加します。詳細については、「 受信者のプロパティの管理」を参照してください。
ステップ3.受信者に共有へのアクセス権を付与する
受信者を作成し、 共有を作成したら、その共有へのアクセス権を受信者に付与できます。
受信者に共有アクセス権を付与するには、Catalog Explorer、Databricks Unity Catalog CLI、または Databricks ノートブックまたは Databricks SQL クエリエディターの GRANT ON SHARE
SQL コマンドを使用できます。
必要な権限 : 次のいずれかです。
- メタストア管理者。
- 共有オブジェクトと受信者オブジェクト ((
USE SHARE
+SET SHARE PERMISSION
) または共有の所有者) および (USE RECIPIENT
または受信者の所有者) の両方に対する委任されたアクセス許可または所有権。
手順については、「 Delta Sharing データ共有へのアクセスを管理する (プロバイダー向け)」を参照してください。
受信者のワークフロー
受信者が OIDC トークン フェデレーションを使用して共有を認証し、アクセスする方法については、以下を参照してください。