Freigeben über


Herstellen einer Verbindung mit externen HTTP-Diensten

Von Bedeutung

Dieses Feature befindet sich in der Public Preview.

Auf dieser Seite wird beschrieben, wie Sie lakehouse Federation einrichten, um Verbundabfragen für externe Dienstdaten auszuführen, die nicht von Azure Databricks verwaltet werden. Weitere Informationen zur Lakehouse Federation finden Sie unter Was ist Lakehouse Federation?

Um eine Verbindung mit Ihrer externen Dienstdatenbank mithilfe des Lakehouse Federation herzustellen, müssen Sie Folgendes in Ihrem Azure Databricks Unity-Katalog-Metastore erstellen:

  • Eine Verbindung mit Ihrer externen Dienstdatenbank.
  • Einen Fremdkatalog, der die Datenbank Ihres externen Dienstes in Unity Catalog spiegelt, sodass Sie die Abfragesyntax und Datengovernancetools von Unity Catalog zum Verwalten des Azure Databricks-Benutzerzugriffs auf die Datenbank verwenden können.

Bevor Sie anfangen

Anforderungen an den Arbeitsbereich:

  • Der Arbeitsbereich muss für Unity Catalog aktiviert sein.

Computeanforderungen:

  • Netzwerkkonnektivität von Ihrer Rechnerressource zu den Zieldatenbanksystemen. Weitere Informationen finden Sie unter Netzwerkempfehlungen für Lakehouse Federation.
  • Azure Databricks-Compute muss Databricks Runtime 15.4 LTS oder höher verwenden und den Zugriffsmodus Standard oder Dediziert haben.
  • SQL-Lagerhäuser müssen pro oder serverlos sein und 2023.40 oder höher verwenden.

Erforderliche Berechtigungen:

  • Um eine Verbindung zu erstellen, müssen Sie ein Metastore-Administrator oder ein Benutzer mit den CREATE CONNECTION Berechtigungen für den Unity-Katalog-Metastore sein, der dem Arbeitsbereich zugeordnet ist.
  • Um einen Fremdkatalog zu erstellen, müssen Sie über die Berechtigung „CREATE CATALOG“ für den Metastore verfügen und entweder der Besitzer der Verbindung sein oder über die Berechtigung „CREATE FOREIGN CATALOG“ für die Verbindung verfügen.

Zusätzliche Berechtigungsanforderungen werden in den folgenden aufgabenbasierten Abschnitten angegeben.

  • Richten Sie die Authentifizierung für den externen Dienst mithilfe einer der folgenden Methoden ein:

    • Bearertoken: Abrufen eines Bearertokens für die einfache tokenbasierte Authentifizierung.
    • OAuth 2.0 Machine-to-Machine: Erstellen und Konfigurieren einer App zum Aktivieren der Computer-zu-Computer-Authentifizierung.
    • OAuth 2.0 Benutzer-zu-Computer Shared: Authentifizieren Sie mit Benutzerinteraktion, um den Zugriff zwischen Dienstidentität und Computer freizugeben.
    • OAuth 2.0 Benutzer-zu-Computer Pro Benutzer: Authentifizieren Sie sich mit einer Benutzerinteraktion, um auf die Verbindung zwischen Benutzeridentität und Computer zuzugreifen.

Authentifizierungsmethoden für externe Dienste

Bearertoken: Ein Bearertoken ist ein einfacher tokenbasierter Authentifizierungsmechanismus, bei dem ein Token an einen Client ausgegeben und für den Zugriff auf Ressourcen verwendet wird, ohne dass zusätzliche Anmeldeinformationen erforderlich sind. Das Token ist im Anforderungsheader enthalten und gewährt Zugriff, solange es gültig ist.

OAuth Machine-to-Machine: OAuth Machine-to-Machine (M2M)-Authentifizierung wird verwendet, wenn zwei Systeme oder Anwendungen ohne direkte Benutzerbeteiligung kommunizieren. Token werden an einen registrierten Computerclient ausgegeben, der seine eigenen Anmeldeinformationen zur Authentifizierung verwendet. Dies ist ideal für Server-zu-Server-Kommunikation, Microservices und Automatisierungsaufgaben, bei denen kein Benutzerkontext erforderlich ist. Databricks empfiehlt die Verwendung von OAuth Machine-to-Machine, wenn sie über OAuth User-to-Machine Shared verfügbar ist.

OAuth U2M-Freigabe (User-to-Machine): Die freigegebene OAuth-Authentifizierung ermöglicht es einer einzelnen Benutzeridentität, sich zu authentifizieren und denselben Satz Anmeldeinformationen über mehrere Clients oder Benutzende hinweg freizugeben. Alle Benutzer teilen dasselbe Zugriffstoken. Dieser Ansatz eignet sich für freigegebene Geräte oder Umgebungen, in denen eine konsistente Benutzeridentität ausreichend ist, aber es reduziert die individuelle Verantwortlichkeit und Nachverfolgung. Wählen Sie in Fällen, in denen die Anmeldung über Identitäten erforderlich ist, die Option „User-to-Machine-Freigabe" aus. Databricks empfiehlt die Verwendung von OAuth Machine-to-Machine, wenn sie über OAuth User-to-Machine Shared verfügbar ist.

OAuth Benutzer-zu-Maschine-Authentifizierung pro Benutzer: Die OAuth Benutzer-zu-Maschine-Authentifizierung pro Benutzer ermöglicht es jeder Benutzeridentität, sich zu authentifizieren und ihre eigenen Anmeldeinformationen zu verwenden, um auf Ressourcen zuzugreifen. Jeder Benutzer wird ein eindeutiges Zugriffstoken ausgestellt und ermöglicht die individuelle Zugriffssteuerung, Überwachung und Verantwortlichkeit. Diese Methode eignet sich, wenn der benutzerspezifische Datenzugriff erforderlich ist und wenn der Zugriff auf externe Dienste im Auftrag des einzelnen Benutzers erfolgt.

Externe Dienste müssen OAuth 2.0-Spezifikationen erfüllen

HTTP-Verbindungen, die OAuth verwenden, müssen eine Verbindung mit Diensten herstellen, die der offiziellen OAuth 2.0-Spezifikation entsprechen, damit sie Zugriffstokendaten verarbeiten und zurückgeben. Dies bedeutet, dass die Antworten des Dienstes die genauen Feldnamen und Datenformate verwenden müssen, die in der Spezifikation beschrieben sind, z. B. access_token, expires_in usw.

Wenn Sie Probleme beim Herstellen einer Verbindung mit einem externen Dienst mit OAuth 2.0 haben, überprüfen Sie, ob die Antworten des Diensts diesen Anforderungen entsprechen.

Erstellen einer Verbindung mit dem externen Dienst

Erstellen Sie zunächst eine Unity-Katalogverbindung mit dem externen Dienst, die einen Pfad und Anmeldeinformationen für den Zugriff auf den Dienst angibt.

Zu den Vorteilen der Verwendung einer Unity-Katalogverbindung gehören die folgenden:

  • Sichere Verwaltung von Anmeldeinformationen: Geheime Schlüssel und Token werden sicher im Unity-Katalog gespeichert und verwaltet, um sicherzustellen, dass sie nie für Benutzer verfügbar gemacht werden.
  • granulare Zugriffssteuerung: Unity-Katalog ermöglicht eine differenzierte Kontrolle darüber, wer Verbindungen mit den USE CONNECTION und MANAGE CONNECTION Berechtigungen verwenden oder verwalten kann.
  • Hostspezifische Tokenerzwingung: Token sind auf die während der Verbindungserstellung angegebenen host_name beschränkt, um sicherzustellen, dass sie nicht mit nicht autorisierten Hosts verwendet werden können.

Erforderliche Berechtigungen: Metastore-Administrator oder Benutzer mit der Berechtigung „CREATE CONNECTION“.

Erstellen Sie eine Verbindung mit einer der folgenden Methoden:

  • Verwenden Sie die Benutzeroberfläche des Katalog-Explorers.
  • Führen Sie den CREATE CONNECTION SQL-Befehl in einem Azure Databricks-Notizbuch oder im SQL-Abfrage-Editor für Databricks aus.
  • Verwenden Sie die Databricks-REST-API oder die Databricks CLI, um eine Verbindung zu erstellen. Siehe POST /api/2.1/unity-catalog/connections und Unity Catalog-Befehle.

Katalog-Explorer

Verwenden Sie die Benutzeroberfläche des Katalog-Explorers, um eine Verbindung zu erstellen.

  1. Klicken Sie im Azure Databricks-Arbeitsbereich auf das Datensymbol.Katalog.

  2. Klicken Sie oben im Bereich Katalog auf das Symbol Symbol zum Hinzufügen bzw. PlussymbolHinzufügen, und wählen Sie im Menü Verbindung hinzufügen aus.

    Klicken Sie alternativ auf der Seite Schnellzugriff auf die Schaltfläche Externe Daten >, wechseln Sie zur Registerkarte Verbindungen, und klicken Sie auf Verbindungerstellen.

  3. Klicken Sie auf Verbindung herstellen.

  4. Geben Sie im Feld Connection name einen benutzerfreundlichen Namen für die Verbindung ein.

  5. Wählen Sie einen Verbindungstyp von HTTP aus.

  6. Wählen Sie einen Authentifizierungstyp aus den folgenden Optionen aus:

    • Bearertoken
    • OAuth Computer zu Computer
    • OAuth Benutzer zu Computer Shared
    • OAuth Benutzer zu Computer pro Benutzer
  7. Geben Sie auf der Seite Authentication die folgenden Verbindungseigenschaften für die HTTP-Verbindung ein.

    Für ein Bearertoken:

    Eigentum BESCHREIBUNG Beispielwert
    Gastgeber Die Basis-URL Ihres Databricks-Arbeitsbereichs oder Ihrer Bereitstellung. https://databricks.com
    Hafen Der für die Verbindung verwendete Netzwerkport, in der Regel 443 für HTTPS. 443
    Bearer-Token Das Authentifizierungstoken, das zum Autorisieren von API-Anforderungen verwendet wird. bearer-token
    Basispfad Der Stammpfad für API-Endpunkte. /api/

    Für OAuth Machine-to-Machine-Token:

    Eigentum BESCHREIBUNG
    Client-ID Eindeutiger Bezeichner für die anwendung, die Sie erstellt haben.
    Geheimer Clientschlüssel Geheimer Schlüssel oder Kennwort für die anwendung, die Sie erstellt haben.
    OAuth-Bereich Autorisierungsbereich zur Zuweisung während der Benutzerautorisierung. Der Bereichsparameter wird als Liste mit durch Leerzeichen getrennten Zeichenfolgen ausgedrückt, bei denen die Groß-/Kleinschreibung beachtet wird.
    Beispiel: channels:read channels:history chat:write
    Tokenendpunkt Wird vom Client verwendet, um ein Zugriffstoken zu erhalten, indem er seine Autorisierungsberechtigung oder seinen Aktualisierungstoken vorlegt.
    In der Regel im Format: https://authorization-server.com/oauth/token

    Für OAuth U2M-Freigabetoken (User-to-Machine):

    • Sie werden aufgefordert, sich mit Ihren OAuth-Anmeldeinformationen anzumelden. Die Anmeldeinformationen, die Sie verwenden, werden von allen gemeinsam genutzt, die diese Verbindung verwenden. Einige Anbieter verlangen eine Liste „Zulassen“ für die Umleitungs-URL, bitte fügen Sie <databricks_workspace_url>/login/oauth/http.html als Umleitungs-URL-Liste „Zulassen“ hinzu. Beispiel: https://databricks.com/login/oauth/http.html
    Eigentum BESCHREIBUNG
    Client-ID Eindeutiger Bezeichner für die anwendung, die Sie erstellt haben.
    Geheimer Clientschlüssel Geheimer Schlüssel oder Kennwort für die anwendung, die Sie erstellt haben.
    OAuth-Bereich Autorisierungsbereich zur Zuweisung während der Benutzerautorisierung. Der Bereichsparameter wird als Liste mit durch Leerzeichen getrennten Zeichenfolgen ausgedrückt, bei denen die Groß-/Kleinschreibung beachtet wird.
    Beispiel: channels:read channels:history chat:write
    Autorisierungsendpunkt Wird verwendet, um sich über die Benutzer-Agent-Umleitung beim Ressourcenbesitzer zu authentifizieren.
    In der Regel im Format: https://authorization-server.com/oauth/authorize
    Tokenendpunkt Wird vom Client verwendet, um ein Zugriffstoken zu erhalten, indem er seine Autorisierungsberechtigung oder seinen Aktualisierungstoken vorlegt.
    In der Regel im Format: https://authorization-server.com/oauth/token

    Für OAuth Benutzer-zu-Computer Pro Benutzer Token

    • Jeder Benutzer wird aufgefordert, sich bei der ersten Verwendung der HTTP-Verbindung mit seinen einzelnen OAuth-Anmeldeinformationen anzumelden. Einige Anbieter verlangen eine Liste „Zulassen“ für die Umleitungs-URL, bitte fügen Sie <databricks_workspace_url>/login/oauth/http.html als Umleitungs-URL-Liste „Zulassen“ hinzu. Beispiel: https://databricks.com/login/oauth/http.html
    Eigentum BESCHREIBUNG
    Client-ID Eindeutiger Bezeichner für die anwendung, die Sie erstellt haben. Wird vom Autorisierungsserver verwendet, um die Clientanwendung während des OAuth-Flusses zu identifizieren.
    Geheimer Clientschlüssel Geheimer Schlüssel oder Kennwort für die anwendung, die Sie erstellt haben. Sie wird verwendet, um die Clientanwendung beim Austausch von Autorisierungscodes für Token zu authentifizieren und vertraulich zu halten.
    OAuth-Bereich Autorisierungsbereich zur Zuweisung während der Benutzerautorisierung. Ausgedrückt als eine Liste von durch Leerzeichen getrennten, case-sensitiven Zeichenfolgen, die die von der Anwendung angeforderten Berechtigungen definieren.
    Beispiel: channels:read channels:history chat:write
    Autorisierungsendpunkt Endpunkt zur Authentifizierung des Ressourcenbesitzers über die Umleitung des Benutzer-Agents und zum Erhalt der Autorisierung.
    In der Regel im Format: https://authorization-server.com/oauth/authorize
    Der Client leitet den Benutzer an diesen Endpunkt weiter, um sich anzumelden und den Berechtigungen zuzustimmen.
    Tokenendpunkt Endpunkt, der vom Client verwendet wird, um eine Autorisierungserteilung (z. B. einen Autorisierungscode) oder ein Aktualisierungstoken für ein Zugriffstoken auszutauschen.
    In der Regel im Format: https://authorization-server.com/oauth/token
    Exchange-Methode für OAuth-Zugangsdaten Anbieter erfordern unterschiedliche Methoden zum Übergeben von OAuth-Clientanmeldeinformationen während des Tokenaustauschs. Wählen Sie eine der folgenden Optionen aus:
    • header_and_body: Platziert Anmeldeinformationen sowohl im Autorisierungsheader als auch im Anforderungstext (Standard).
    • body_only: Platziert Anmeldeinformationen nur im Anforderungstext ohne Autorisierungsheader.
    • header_only: Platziert Anmeldeinformationen nur im Autorisierungsheader (für Anbieter wie OKTA).
  8. Klicken Sie auf Verbindung herstellen.

SQL

Verwenden Sie den SQL-Befehl CREATE CONNECTION, um eine Verbindung zu erstellen.

Hinweis

Sie können den SQL-Befehl nicht verwenden, um eine Verbindung zu erstellen, die OAuth Machine-to-User Shared verwendet. Lesen Sie stattdessen die Anweisungen zur Benutzeroberfläche des Katalog-Explorers.

Um eine neue Verbindung mit einem Bearer-Tokenzu erstellen, führen Sie den folgenden Befehl in einem Notizbuch oder dem SQL-Abfrage-Editor für Databricks aus:

CREATE CONNECTION <connection-name> TYPE HTTP
OPTIONS (
  host '<hostname>',
  port '<port>',
  base_path '<base-path>',
  bearer_token '<bearer-token>'
);

Databricks empfiehlt die Verwendung von Geheimnissen anstelle von Klartextzeichenfolgen für vertrauliche Werte wie Anmeldeinformationen. Beispiel:

CREATE CONNECTION <connection-name> TYPE HTTP
OPTIONS (
  host '<hostname>',
  port '<port>',
  base_path '<base-path>',
  bearer_token secret ('<secret-scope>','<secret-key-password>')
)

Um eine neue Verbindung mit der Methode OAuth Machine-to-Machine zu erstellen, führen Sie den folgenden Befehl in einem Notebook oder dem SQL-Abfrage-Editor für Databricks aus:

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>'
)

Senden einer HTTP-Anforderung an das externe System

Nachdem Sie nun über eine Verbindung verfügen, erfahren Sie, wie Sie HTTP-Anforderungen mithilfe der integrierten SQL-Funktion http_request an den Dienst senden.

Erforderlichen Berechtigungen:USE CONNECTION für das Verbindungsobjekt.

Führen Sie den folgenden SQL-Befehl in einem Notizbuch oder dem SQL-Editor für Databricks aus. Ersetzen Sie folgende Platzhalterwerte:

  • connection-name: Das Verbindungsobjekt, das den Host, Port, base_path und Zugangsdaten angibt.
  • http-method: Die HTTP-Anforderungsmethode, die zum Ausführen des Aufrufs verwendet wird. Beispiel: GET, POST, PUT, DELETE
  • path: Der Pfad, der nach dem base_path verketten wird, um die Dienstressource aufzurufen.
  • json: Der JSON-Text, der mit der Anforderung gesendet werden soll.
  • headers: Eine Zuordnung zur Spezifizierung der Anforderungsheader.
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"
  )
);

Hinweis

SQL-Zugriff mit http_request ist für den Verbindungstyp "Benutzer-zu-Maschine für jeden Nutzer" blockiert. Verwenden Sie stattdessen das 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"},
)

Verwenden von HTTP-Verbindungen für Agenttools

KI-Agents können die HTTP-Verbindung verwenden, um auf externe Anwendungen wie Slack, Google Calendar oder einen beliebigen Dienst mit einer API mit HTTP-Anforderungen zuzugreifen. Agents können extern verbundene Tools verwenden, um Aufgaben zu automatisieren, Nachrichten zu senden und Daten von Drittanbieterplattformen abzurufen.

Siehe Verbinden von KI-Agent-Tools mit externen Diensten.