重要
この機能は パブリック プレビュー段階です。
このページでは、Azure Databricks によって管理されていない外部サービス データに対してフェデレーション クエリを実行するように Lakehouse Federation を設定する方法について説明します。 レイクハウスフェデレーションの詳細については、「レイクハウスフェデレーションとは」を参照してください。
Lakehouse Federation を使用して外部サービス データベースに接続するには、Azure Databricks Unity カタログ メタストアで次を作成する必要があります (2023 年 11 月 9 日以降に作成されたワークスペースには、Unity カタログ メタストアが自動的にプロビジョニングされています)。
- 外部サービス データベースへの 接続 。
- Unity カタログのクエリ構文とデータ ガバナンス ツールを使用してデータベースへの Azure Databricks ユーザー アクセスを管理できるように、Unity カタログの外部サービス データベースをミラーリングする 外部カタログ 。
開始する前に
ワークスペースの要件:
- Unity Catalog を使用できるワークスペース。 2023 年 11 月 9 日以降に作成されたワークスペースは、自動メタストア プロビジョニングを含め、Unity カタログに対して自動的に有効になります。 ワークスペースが自動有効化の前にあり、Unity カタログに対して有効になっていない場合を除き、メタストアを手動で作成する必要はありません。 「Unity Catalog の自動有効化」を参照してください。
コンピューティング要件:
- コンピューティング リソースからターゲット データベース システムへのネットワーク接続。 「レイクハウス フェデレーションのためのネットワークに関する推奨事項」を参照してください。
- Azure Databricks コンピューティングでは、Databricks Runtime 15.4 LTS 以降と Standard または Dedicated アクセス モードを使用する必要があります。
- SQL ウェアハウスはプロまたはサーバーレスである必要があり、2023.40 以降を使用する必要があります。
必要なアクセス許可:
- 接続を作成するには、メタストア管理者であるか、ワークスペースにアタッチされている Unity カタログメタストアに対する
CREATE CONNECTION権限を持つユーザーである必要があります。 Unity カタログが自動的に有効になっているワークスペースでは、ワークスペース管理者は既定でCREATE CONNECTION特権を持っています。 - 外部カタログを作成するには、メタストアに対する
CREATE CATALOG権限を持ち、接続の所有者であるか、接続に対するCREATE FOREIGN CATALOG特権を持っている必要があります。 Unity カタログが自動的に有効になっているワークスペースでは、ワークスペース管理者は既定でCREATE CATALOG特権を持っています。
追加の権限要件は、以下の各タスク ベースのセクションで規定されています。
- 次のいずれかの方法を使用して、外部サービスへの認証を設定します。
- ベアラー トークン: 単純なトークン ベースの認証用のベアラー トークンを取得します。
- OAuth 2.0 Machine-to-Machine: コンピューター間認証を有効にするアプリを作成して構成します。
- OAuth 2.0 User-to-Machine Shared: サービス ID とマシンの間でアクセスを共有するために、ユーザーの操作で認証します。
- OAuth 2.0 User-to-Machine Per User: ユーザー ID とマシンの間でアクセスするために、ユーザーごとの操作で認証を行います。
外部サービスの認証方法
ベアラー トークン
ベアラー トークンは、トークンがクライアントに発行され、追加の資格情報を必要とせずにリソースにアクセスするために使用される、単純なトークン ベースの認証メカニズムです。 トークンは要求ヘッダーに含まれており、有効である限りアクセス権を付与します。
OAuth Machine-to-Machine
OAuth Machine-to-Machine (M2M) 認証は、2 つのシステムまたはアプリケーションが直接ユーザーの関与なしに通信するときに使用されます。 トークンは、独自の資格情報を使用して認証する登録済みマシン クライアントに発行されます。 これは、ユーザー コンテキストが不要なサーバー間通信、マイクロサービス、自動化タスクに最適です。 Databricks では、OAuth ユーザーからマシンへの共有よりも、OAuth マシン間を使用することをお勧めします。
OAuth ユーザーからマシンへの共有
OAuth ユーザー間共有認証を使用すると、1 人のユーザー ID が複数のクライアントまたはユーザー間で同じ資格情報セットを認証および共有できます。 すべてのユーザーが同じアクセス トークンを共有します。 このアプローチは、一貫性のあるユーザー ID で十分な共有デバイスまたは環境に適していますが、個々の説明責任と追跡を減らします。 ID ログインが必要な場合は、[ユーザーからマシンへの共有] を選択します。 Databricks では、OAuth ユーザーからマシンへの共有よりも、OAuth マシン間を使用することをお勧めします。
ユーザーあたりの OAuth ユーザー対マシン数
OAuth のユーザー対マシン認証では、各ユーザー ID が独自の資格情報を認証し、それを用いてリソースアクセスを行います。 各ユーザーには一意のアクセス トークンが発行され、個々のアクセス制御、監査、アカウンタビリティが有効になります。 この方法は、ユーザー固有のデータ アクセスが必要な場合や、個々のユーザーに代わって外部サービスにアクセスする場合に適しています。
外部サービスは OAuth 2.0 仕様に準拠している必要があります
OAuth を使用する HTTP 接続では、 OAuth 2.0 の公式仕様に準拠したサービスに接続して、アクセス トークン データの処理方法と返し方法を確認する必要があります。 つまり、サービスの応答では、 access_token、 expires_inなど、仕様で説明されている正確なフィールド名とデータ形式を使用する必要があります。
OAuth 2.0 を使用した外部サービスへの接続で問題が発生した場合は、サービスの応答が次の要件に従っていることを確認してください。
外部サービスへの接続を作成する
まず、サービスにアクセスするためのパスと資格情報を指定する外部サービスへの Unity カタログ接続を作成します。
Unity カタログ接続を使用する利点は次のとおりです。
- セキュリティで保護された資格情報の管理: シークレットとトークンは Unity カタログに安全に格納および管理され、ユーザーに公開されないようにします。
-
詳細なアクセス制御: Unity カタログを使用すると、
USE CONNECTIONとMANAGE CONNECTIONの特権で接続を使用または管理できるユーザーをきめ細かく制御できます。 -
ホスト固有のトークンの適用: トークンは、接続の作成時に指定された
host_nameに制限され、承認されていないホストで使用できないようにします。
必要な権限: メタストア管理者、または CREATE CONNECTION 特権を持つユーザー。
次のいずれかの方法を使用して接続を作成します。
- カタログ エクスプローラー UI を使用します。
- Azure Databricks ノートブックまたは Databricks SQL クエリ エディターで、
CREATE CONNECTIONSQL コマンドを実行します。 - 接続を作成するには、Databricks REST API または Databricks CLI を使用します。 POST /api/2.1/unity-catalog/connections および Unity Catalog コマンドを参照してください。
カタログ エクスプローラー
カタログ エクスプローラー UI を使用して接続を作成します。
Azure Databricks ワークスペースで、[
カタログ。
[カタログ] ウィンドウの上部にある
の [追加] アイコンをクリックし、メニューから [接続の作成] を選択します。[接続の作成] をクリックします。
わかりやすい接続名を入力します。
HTTPの 接続の種類 を選択します。
次のオプションから 認証の種類 を選択します。
- ベアラートークン
- OAuth マシン対マシン
- OAuth ユーザーからマシン共有へ
-
OAuth ユーザーからマシンへ (ユーザーごと)
- 独自の OAuth 資格情報を入力するには、[ 手動構成] を選択します。 外部 MCP サーバーに接続していて、Databricks で OAuth 資格情報を管理する場合は、「 マネージド OAuth フロー」を参照してください。
[認証] ページで、HTTP 接続の次の接続プロパティを入力します。
ベアラー トークンのプロパティ
ベアラー トークンの場合:
プロパティ 説明 値の例 ホスト Databricks ワークスペースまたはデプロイのベース URL。 https://databricks.comポート 接続に使用されるネットワーク ポート (通常は HTTPS 用に 443)。443ベアラー トークン API 要求の承認に使用される認証トークン。 bearer-tokenベース パス API エンドポイントのルート パス。 /api/OAuth Machine-to-Machine プロパティ
マシン対マシンのOAuthについて:
プロパティ 説明 クライアント ID 作成したアプリケーションの一意の識別子。 クライアント シークレット 作成したアプリケーション用に生成されたシークレットまたはパスワード。 OAuth の範囲 ユーザー承認時に付与するスコープ。 スコープ パラメーターは、スペースで区切られた大文字と小文字を区別する文字列の一覧として表されます。
例:channels:read channels:history chat:writeトークン エンドポイント 承認許可または更新トークンを提示してアクセス トークンを取得するためにクライアントによって使用されます。
通常は次の形式です。https://authorization-server.com/oauth/tokenOAuth ユーザーからマシンへの共有プロパティ
OAuth ユーザーからマシンへの共有の場合:
- OAuth 資格情報を使用してサインインするように求められます。 使用する資格情報は、この接続を使用するすべてのユーザーによって共有されます。 一部のプロバイダーでは、リダイレクト URL の許可リストが必要です。リダイレクト URL の許可リストとして
<databricks_workspace_url>/login/oauth/http.htmlを含めてください。 例:https://databricks.com/login/oauth/http.html
プロパティ 説明 クライアント ID 作成したアプリケーションの一意の識別子。 クライアント シークレット 作成したアプリケーション用に生成されたシークレットまたはパスワード。 OAuth の範囲 ユーザー承認時に付与するスコープ。 スコープ パラメーターは、スペースで区切られた大文字と小文字を区別する文字列の一覧として表されます。
例:channels:read channels:history chat:write承認エンドポイント ユーザーエージェントのリダイレクトを通じてリソース所有者を認証するために使用されます。
通常は次の形式です。https://authorization-server.com/oauth/authorizeトークン エンドポイント 承認許可または更新トークンを提示してアクセス トークンを取得するためにクライアントによって使用されます。
通常は次の形式です。https://authorization-server.com/oauth/tokenOAuth ユーザーとマシンのユーザーごとのプロパティ
ユーザーあたりの OAuth ユーザー対マシンの場合:
- 各ユーザーは、HTTP 接続を初めて使用する際に、個々の OAuth 資格情報を使用してサインインするように求められます。 一部のプロバイダーでは、リダイレクト URL の許可リストが必要です。リダイレクト URL の許可リストとして
<databricks_workspace_url>/login/oauth/http.htmlを含めてください。 例:https://databricks.com/login/oauth/http.html
プロパティ 説明 クライアント ID 作成したアプリケーションの一意の識別子。 OAuth フロー中にクライアント アプリケーションを識別するために承認サーバーによって使用されます。 クライアント シークレット 作成したアプリケーション用に生成されたシークレットまたはパスワード。 トークンの承認コードを交換するときにクライアント アプリケーションを認証するために使用され、機密を保持する必要があります。 OAuth の範囲 ユーザー承認時に付与するスコープ。 アプリケーションが要求するアクセス許可を定義する、スペース区切りの大文字と小文字を区別する文字列の一覧として表されます。
例:channels:read channels:history chat:write承認エンドポイント ユーザー エージェント リダイレクトを使用してリソース所有者を認証し、承認を取得するために使用されるエンドポイント。
通常は次の形式です。https://authorization-server.com/oauth/authorize
クライアントは、ユーザーをこのエンドポイントに誘導してログインし、アクセス許可に同意します。トークン エンドポイント アクセス トークンの承認付与 (承認コードなど) または更新トークンを交換するためにクライアントによって使用されるエンドポイント。
通常は次の形式です。https://authorization-server.com/oauth/tokenOauth 資格情報の交換方法 プロバイダーは、トークン交換中に OAuth クライアント資格情報を渡すために異なる方法を必要とします。 次のいずれかのオプションを選択します。 - header_and_body: 承認ヘッダーと要求本文の両方に資格情報を配置します (既定)。
- body_only: 資格情報は、承認ヘッダーなしで要求本文にのみ配置します。
- header_only: 認証ヘッダーにのみ資格情報を配置します (OKTA などのプロバイダーの場合)。
- OAuth 資格情報を使用してサインインするように求められます。 使用する資格情報は、この接続を使用するすべてのユーザーによって共有されます。 一部のプロバイダーでは、リダイレクト URL の許可リストが必要です。リダイレクト URL の許可リストとして
[接続の作成] をクリックします。
SQL
CREATE CONNECTION SQL コマンドを使用して接続を作成します。
注
SQL コマンドを使用して、 OAuth Machine-to-User Shared を使用する接続を作成することはできません。 代わりに、カタログ エクスプローラーの UI の手順を参照してください。
ベアラー トークンを使用して新しい接続を作成するには、ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。
CREATE CONNECTION <connection-name> TYPE HTTP
OPTIONS (
host '<hostname>',
port '<port>',
base_path '<base-path>',
bearer_token '<bearer-token>'
);
Databricks では、資格情報などの機密性の高い値にプレーンテキスト文字列ではなく、シークレット 使用することをお勧めします。 例えば次が挙げられます。
CREATE CONNECTION <connection-name> TYPE HTTP
OPTIONS (
host '<hostname>',
port '<port>',
base_path '<base-path>',
bearer_token secret ('<secret-scope>','<secret-key-password>')
)
OAuth Machine-to-Machine を使用して新しい接続を作成するには、ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。
CREATE CONNECTION <connection-name> TYPE HTTP
OPTIONS (
host '<hostname>',
port '<port>',
base_path '<base-path>',
client_id '<client-id>'
client_secret '<client-secret>'
oauth_scope '<oauth-scope1> <oauth-scope-2>'
token_endpoint '<token-endpoint>'
)
Unity カタログ接続を共有する
接続 USE CONNECTION 使用する必要がある ID プリンシパルに特権を付与します。
- ワークスペースで、[ Catalog>Connections> Your connection >Permissions] に移動します。
- Unity カタログ接続への適切なアクセス権を ID に付与します。
外部システムに HTTP 要求を送信する
接続が確立されたので、http_request 組み込み SQL 関数を使用してサービスに HTTP 要求を送信する方法について説明します。
接続オブジェクトにUSE CONNECTION のアクセス許可が必要です。
ノートブックまたは Databricks SQL エディターで次の SQL コマンドを実行します。 プレースホルダー値を次のように置き換えます。
-
connection-name: ホスト、ポート、base_path、およびアクセス資格情報を指定する 接続オブジェクト。 -
http-method: 呼び出しを行うために使用される HTTP 要求メソッド。 例:GET、POST、PUT、DELETE -
path: サービス リソースを呼び出すbase_pathの後に連結するパス。 -
json: リクエストに含めて送信する JSON 本文。 -
headers: 要求ヘッダーを指定するマップ。
SELECT http_request(
conn => <connection-name>,
method => <http-method>,
path => <path>,
json => to_json(named_struct(
'text', text
)),
headers => map(
'Accept', "application/vnd.github+json"
)
);
注
ユーザーからマシンまでのユーザー接続タイプでは、http_request を使用した SQL アクセスはブロックされます。 代わりに Python Databricks SDK を使用してください。
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ExternalFunctionRequestHttpMethod
WorkspaceClient().serving_endpoints.http_request(
conn="connection-name",
method=ExternalFunctionRequestHttpMethod.POST,
path="/api/v1/resource",
json={"key": "value"},
headers={"extra-header-key": "extra-header-value"},
)
エージェント ツールに HTTP 接続を使用する
AI エージェントは、HTTP 接続を使用して、Slack、Google カレンダー、または HTTP 要求を使用する API を使用して任意のサービスなどの外部アプリケーションにアクセスできます。 エージェントは、外部に接続されたツールを使用して、タスクの自動化、メッセージの送信、サードパーティプラットフォームからのデータの取得を行うことができます。
「AI エージェント ツールを外部サービスに接続する」を参照してください。
外部サービスへのネットワーク接続をセキュリティで保護する
Azure Databricks は、ワークスペースのサーバーレス コンピューティング プレーンを介して HTTP 接続のトラフィックを外部サービスにルーティングします。 このトラフィックは、Private Link または IP 許可リストを使用してセキュリティで保護できます。
Private Link (推奨)
Private Link では、完全なテナント分離が提供されます。 接続を介してサービスに到達できるのは、Azure Databricks ワークスペースだけです。 トラフィックは、パブリック インターネットではなくプライベート接続経由で移動します。 クラウド ネットワーク (VPC または VNet) 内でホストされている外部サービスには Private Link を使用します。
Private Link を構成するには、 VNet 内のリソースへのプライベート接続の構成に関するページを参照してください。 プロキシのセットアップ パターンについては、 Azure Databricks サーバーレスのプライベート接続パターンと専用接続パターンに関するブログ シリーズを参照してください。
IP 許可リスト
重要
ワークスペースが 2026 年 3 月より前に作成された場合、ファイアウォール規則はサーバーレス IP ではなくコントロール プレーン IP を参照する可能性があります。 接続エラーを回避するには 、2026 年 4 月 30 日 より前に許可リストを更新する必要があります。 HTTP 接続のサーバーレス ルーティングへの移行を参照してください。
Private Link がオプションでない場合は、Azure Databricks サーバーレス送信 IP を許可リストするように外部サービスのファイアウォール規則を構成します。 IP 許可リストでは、送信 IP は Azure Databricks のお客様間で共有されるため、このアプローチではテナントを分離できません。
サーバーレス送信 IP の一覧については、 サーバーレス コンピューティング ファイアウォールプレビューの送信 IP を参照してください。
注
HTTP 接続を使用すると、Azure Databricks のデータ転送料金が発生する場合があります。 詳細については、「 データ転送と接続の価格」を参照してください。