Freigeben über


Authentifizierungseinstellungen für den Databricks JDBC-Treiber

In diesem Artikel wird beschrieben, wie Sie die Azure Databricks-Authentifizierungseinstellungen für den Databricks JDBC-Treiber konfigurieren.

Um eine Azure Databricks-Verbindung für den Databricks JDBC-Treiber zu konfigurieren, müssen Sie Ihre Einstellungen für die Computerressourcen, alle Einstellungen für die Treiberfunktionen und die folgenden Authentifizierungseinstellungen zu einer JDBC-Verbindungs-URL oder programmgesteuerten Sammlung von JDBC-Verbindungseigenschaften kombinieren.

JDBC-Verbindungs-URLs verwenden das folgende Format:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>[;<setting1>=<value1>;<setting2>=<value2>;<settingN>=<valueN>]

Programmatische Sammlungen von JDBC-Verbindungseigenschaften können in Java-Code verwendet werden, wie im folgenden Beispiel gezeigt:

package org.example;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.Properties;

public class Main {
  public static void main(String[] args) throws Exception {
    Class.forName("com.databricks.client.jdbc.Driver");
    String url = "jdbc:databricks://" + System.getenv("DATABRICKS_SERVER_HOSTNAME") + ":443";
    Properties p = new java.util.Properties();
    p.put("httpPath", System.getenv("DATABRICKS_HTTP_PATH"));
    p.put("<setting1>", "<value1");
    p.put("<setting2>", "<value2");
    p.put("<settingN>", "<valueN");
    try (Connection conn = DriverManager.getConnection(url, p)) {
      Statement stmt = conn.createStatement();
      try (ResultSet rs = stmt.executeQuery("<query>")) {
        ResultSetMetaData md = rs.getMetaData();
        String[] columns = new String[md.getColumnCount()];
        for (int i = 0; i < columns.length; i++) {
          columns[i] = md.getColumnName(i + 1);
        }
        while (rs.next()) {
          System.out.print("Row " + rs.getRow() + "=[");
          for (int i = 0; i < columns.length; i++) {
            if (i != 0) {
              System.out.print(", ");
            }
            System.out.print(columns[i] + "='" + rs.getObject(i + 1) + "'");
          }
          System.out.println(")]");
        }
      }
    }
    System.exit(0);
  }
}
  • Legen Sie die Umgebungswerte DATABRICKS_SERVER_HOSTNAME und DATABRICKS_HTTP_PATH jeweils auf den Hostnamen des Servers und den HTTP-Pfadwert der Azure Databricks Ziel-Computeressourcen fest. Wie Sie diese Werte abrufen, erfahren Sie unter Computeeinstellungen für den Databricks JDBC-Treiber. Informationen zum Festlegen von Umgebungsvariablen finden Sie in der Dokumentation des Betriebssystems.
  • Ersetzen Sie <setting> und <value> nach Bedarf für jede der in den folgenden Abschnitten aufgeführten Verbindungseigenschaften.
  • Sie können auch spezielle oder erweiterte Einstellungen der Treiberfunktionhinzufügen. Diese werden normalerweise als <setting>- und <value>-Paare hinzugefügt.
  • Ersetzen Sie in diesem Beispiel <query> durch eine SELECT-SQL-Abfragezeichenfolge.

Ob Sie eine Verbindungs-URL oder eine Sammlung von Verbindungseigenschaften verwenden, hängt von den Anforderungen Ihrer Ziel-App, des Tools, des Clients, des SDK oder der API ab. Beispiele für JDBC-Verbindungs-URLs und programmatische Sammlungen von JDBC-Verbindungseigenschaften finden Sie in diesem Artikel für jeden unterstützten Azure Databricks-Authentifizierungstyp.

Der Databricks JDBC-Treiber unterstützt die folgenden Azure Databricks-Authentifizierungstypen:

Persönliches Zugriffstoken für Azure Databricks

Gehen Sie wie folgt vor, um ein persönliches Azure Databricks-Zugriffstoken zu erstellen:

  1. Wählen Sie in Ihrem Azure Databricks-Arbeitsbereich in der oberen Leiste Ihren Azure Databricks-Benutzernamen und dann im Dropdownmenü die Option Einstellungen aus.
  2. Klicken Sie auf Entwickler.
  3. Klicken Sie neben Zugriffstoken auf Verwalten.
  4. Klicken Sie auf Neues Token generieren.
  5. (Optional) Geben Sie einen Kommentar ein, durch den Sie dieses Token in Zukunft identifizieren können, und ändern Sie die standardmäßige Lebensdauer des Tokens von 90 Tagen. Wenn Sie ein Token ohne Gültigkeitsdauer erstellen möchten (nicht empfohlen), lassen Sie das Feld Lebensdauer (Tage) leer.
  6. Klicken Sie auf Generate (Generieren) .
  7. Kopieren Sie das angezeigte Token an einen sicheren Speicherort, und klicken Sie auf Fertig.

Hinweis

Achten Sie darauf, den kopierten Token an einem sicheren Ort zu speichern. Geben Sie das kopierte Token nicht an andere Personen weiter. Wenn Sie das kopierte Token verlieren, können Sie das gleiche Token nicht erneut generieren. Stattdessen müssen Sie erneut das Verfahren zum Erstellen eines neuen Tokens durchlaufen. Wenn Sie das kopierte Token verlieren oder glauben, dass das Token kompromittiert wurde, empfiehlt Databricks dringend, dass Sie das Token sofort aus Ihrem Arbeitsbereich löschen. Klicken Sie hierzu auf der Seite Zugriffstoken auf das Papierkorbsymbol (Widerrufen) neben dem Token.

Wenn Sie in Ihrem Arbeitsbereich keine Token erstellen oder verwenden können, liegt dies möglicherweise daran, dass Ihr Arbeitsbereichsadministrator Token deaktiviert hat oder Ihnen keine Berechtigung zum Erstellen oder Verwenden von Token erteilt hat. Wenden Sie sich an Ihren Arbeitsbereichsadministrator oder lesen Sie:

Um sich mit einem persönlichen Azure Databricks-Zugriffstoken zu authentifizieren, legen Sie die folgenden Konfigurationen fest:

Für eine JDBC-Verbindungs-URL mit eingebetteten allgemeinen Konfigurationseigenschaften und sensiblen Berechtigungseigenschaften:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=3;UID=token;PWD=<personal-access-token>

Für Java-Code mit allgemeinen Konfigurationseigenschaften und sensiblen Berechtigungseigenschaften, die außerhalb der JDBC-Verbindungs-URL festgelegt wurden:

// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "3");
p.put("UID", "token");
p.put("PWD", "<personal-access-token>");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
  • Ein vollständiges Java-Codebeispiel, mit dem Sie den vorangegangenen Codeschnipsel an Ihre eigenen Bedürfnisse anpassen können, finden Sie im Codebeispiel am Anfang dieses Artikels.
  • Ersetzen Sie in der vorangehenden URL oder im Java-Code <personal-access-token> durch das persönliche Databricks-Zugangs-Token für Ihren Arbeitsbereich-Benutzer.
  • Wie Sie die Werte von <server-hostname> und <http-path> abrufen, erfahren Sie unter Computeeinstellungen für den Databricks JDBC-Treiber.

Token in Microsoft Entra ID (ehemals Azure Active Directory)

ODBC- und ODBC-Treiber 2.6.15 und höher unterstützen Microsoft Entra ID-Token (früher Azure Active Directory) für einen Azure Databricks-Benutzer oder einen Microsoft Entra ID-Dienstprinzipal.

Gehen Sie wie folgt vor, um ein Microsoft Entra ID-Zugriffstoken zu erstellen:

Microsoft Entra ID-Zugriffstoken haben eine Standardlebensdauer von ca. 1 Stunde. Ein Zugriffstoken kann für eine vorhandene Sitzung programmgesteuert aktualisiert werden, ohne dass die Verbindung unterbrochen wird. Führen Sie hierzu den Code unter Aktualisieren eines Microsoft Entra ID-Zugriffstokens aus. Anweisungen zum Aktualisieren des Tokens finden Sie im Configuring Authentication > Using OAuth 2.0-Abschnitt im Leitfaden zum Databricks JDBC-Treiber.

Um sich mit einem Microsoft Entra ID-Token zu authentifizieren, legen Sie die folgenden Konfigurationen fest:

Für eine JDBC-Verbindungs-URL mit eingebetteten allgemeinen Konfigurationseigenschaften und sensiblen Berechtigungseigenschaften:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<microsoft-entra-id-token>

Für Java-Code mit allgemeinen Konfigurationseigenschaften und sensiblen Berechtigungseigenschaften, die außerhalb der JDBC-Verbindungs-URL festgelegt wurden:

// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "11");
p.put("Auth_Flow", "0");
p.put("Auth_AccessToken", "<microsoft-entra-id-token>");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
  • Ein vollständiges Java-Codebeispiel, mit dem Sie den vorangegangenen Codeschnipsel an Ihre eigenen Bedürfnisse anpassen können, finden Sie im Codebeispiel am Anfang dieses Artikels.
  • Ersetzen Sie in der vorangehenden URL oder im Java-Code <microsoft-entra-id-token> durch das Microsoft Entra ID-Token.
  • Wie Sie die Werte von <server-hostname> und <http-path> abrufen, erfahren Sie unter Computeeinstellungen für den Databricks JDBC-Treiber.

Weitere Informationen finden Sie im Token Pass-through-Abschnitt im Leitfaden zum JDBC-Treiber.

OAuth 2.0-Token

JDBC-Treiber 2.6.36 und höher unterstützt ein OAuth 2.0-Token für einen Microsoft Entra ID-Dienstprinzipal. Dieser Vorgang wird auch als Passthrough-Authentifizierung per OAuth 2.0-Token bezeichnet.

OAuth 2.0-Token haben eine Standardlebensdauer von 1 Stunde. Wiederholen Sie diesen Vorgang, um ein neues OAuth 2.0-Token zu generieren.

Damit Sie die Passthrough-Authentifizierung per OAuth 2.0-Token verwenden können, sind die folgenden Konfigurationen erforderlich:

Für eine JDBC-Verbindungs-URL mit eingebetteten allgemeinen Konfigurationseigenschaften und sensiblen Berechtigungseigenschaften:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<oauth-token>

Für Java-Code mit allgemeinen Konfigurationseigenschaften und sensiblen Berechtigungseigenschaften, die außerhalb der JDBC-Verbindungs-URL festgelegt wurden:

// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "11");
p.put("Auth_Flow", "0");
p.put("Auth_AccessToken", "<oauth-token>");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
  • Ein vollständiges Java-Codebeispiel, mit dem Sie den vorangegangenen Codeschnipsel an Ihre eigenen Bedürfnisse anpassen können, finden Sie im Codebeispiel am Anfang dieses Artikels.
  • Ersetzen Sie in der vorangehenden URL oder im Java-Code <oauth-token> durch das Azure Databricks OAuth-Token. (Microsoft Entra ID-Token werden für die Passthrough-Authentifizierung per OAuth 2.0-Token nicht unterstützt.)
  • Wie Sie die Werte von <server-hostname> und <http-path> abrufen, erfahren Sie unter Computeeinstellungen für den Databricks JDBC-Treiber.

Weitere Informationen finden Sie im Token Pass-through-Abschnitt im Leitfaden zum JDBC-Treiber.

OAuth U2M-Authentifizierung (User-to-Machine)

JDBC-Treiber 2.6.36 und höher unterstützt die User-to-Machine (U2M) OAuth-Authentifizierung für Azure Databricks-Benutzer*innen. Dies wird auch als browserbasierte OAuth 2.0-Authentifizierung bezeichnet.

Die browserbasierte OAuth U2M- oder OAuth 2.0-Authentifizierung hat keine Voraussetzungen. OAuth 2.0-Token haben eine Standardlebensdauer von 1 Stunde. Die browserbasierte OAuth U2M- oder OAuth 2.0-Authentifizierung sollte abgelaufene OAuth 2.0-Token automatisch aktualisieren.

Hinweis

Die browserbasierte OAuth U2M- oder OAuth 2.0-Authentifizierung funktioniert nur mit Anwendungen, die lokal ausgeführt werden. Sie funktioniert nicht mit serverbasierten oder cloudbasierten Anwendungen.

Legen Sie die folgenden Konfigurationen fest, um sich mit der browserbasierten OAuth-Benutzer-zu-Computer (U2M)- oder OAuth 2.0- Authentifizierung zu authentifizieren:

Für eine JDBC-Verbindungs-URL mit eingebetteten allgemeinen Konfigurationseigenschaften und sensiblen Berechtigungseigenschaften:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=2;TokenCachePassPhrase=<passphrase>;EnableTokenCache=0

Für Java-Code mit allgemeinen Konfigurationseigenschaften und sensiblen Berechtigungseigenschaften, die außerhalb der JDBC-Verbindungs-URL festgelegt wurden:

// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "11");
p.put("Auth_Flow", "2")
p.put("TokenCachePassPhrase", "<passphrase>");
p.put("EnableTokenCache", "0");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
  • Ein vollständiges Java-Codebeispiel, mit dem Sie den vorangegangenen Codeschnipsel an Ihre eigenen Bedürfnisse anpassen können, finden Sie im Codebeispiel am Anfang dieses Artikels.
  • Ersetzen Sie in der vorangehenden URL oder im Java-Code <passphrase> durch eine Passphrase Ihrer Wahl. Der Treiber verwendet diesen Schlüssel für die Aktualisierungstokenverschlüsselung.
  • Wie Sie die Werte von <server-hostname> und <http-path> abrufen, erfahren Sie unter Computeeinstellungen für den Databricks JDBC-Treiber.

Weitere Informationen finden Sie im Using Browser Based Authentication-Abschnitt im Leitfaden zum JDBC-Treiber.

OAuth-Computer-zu-Computer-Authentifizierung (M2M)

JDBC-Treiber 2.6.36 und höher unterstützt die Machine-to-Machine (M2M) OAuth-Authentifizierung für einen Microsoft Entra ID-Dienstprinzipal. Dies wird auch OAuth 2.0-Authentifizierung mit Clientanmeldeinformationen genannt.

Um die OAuth M2M- oder OAuth 2.0-Authentifizierung mit Clientanmeldeinformationen zu konfigurieren, gehen Sie wie folgt vor:

  1. Erstellen Sie einen durch Microsoft Entra ID verwalteten Dienstprinzipal, und weisen Sie ihn dann Azure Databricks-Konten und -Arbeitsbereichen zu. Informationen hierzu finden Sie unter Verwalten von Dienstprinzipalen.

    Wichtig

    JDBC-Treiber 2.6.36 und höher unterstützt Azure Databricks-OAuth-Schlüssel für die M2M OAuth-Authentifizierung oder die Authentifizierung mit OAuth 2.0-Clientanmeldeinformationen. Geheime Schlüssel der Microsoft Entra ID werden nicht unterstützt.

  2. Erstellen Sie ein Azure Databricks-OAuth-Geheimnis für den Dienstprinzipal. Informationen hierzu finden Sie unter Manuelles Generieren und Verwenden von Zugriffstoken für die OAuth-Machine-to-Machine-Authentifizierung (M2M).

  3. Gewähren Sie dem Dienstprinzipal Zugriff auf Ihren Cluster oder Ihr Warehouse. Weitere Informationen finden Sie unter Compute-Berechtigungen und Verwalten eines SQL-Warehouse.

Legen Sie die folgenden Konfigurationen fest, um die OAuth-Computer-zu-Computer (M2M)- oder OAuth 2.0-Authentifizierung mit Clientanmeldeinformationen zu authentifizieren:

Für eine JDBC-Verbindungs-URL mit eingebetteten allgemeinen Konfigurationseigenschaften und sensiblen Berechtigungseigenschaften:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=1;OAuth2ClientId=<service-principal-application-id>;OAuth2Secret=<service-principal-oauth-secret>

Für Java-Code mit allgemeinen Konfigurationseigenschaften und sensiblen Berechtigungseigenschaften, die außerhalb der JDBC-Verbindungs-URL festgelegt wurden:

// ...
String url = "jdbc:databricks://<server-hostname>:443";
Properties p = new java.util.Properties();
p.put("httpPath", "<http-path>");
p.put("AuthMech", "11");
p.put("Auth_Flow", "1");
p.put("OAuth2ClientId", "<service-principal-application-id>");
p.put("OAuth2Secret", "<service-principal-oauth-secret>");
// ...
Connection conn = DriverManager.getConnection(url, p);
// ...
  • Ein vollständiges Java-Codebeispiel, mit dem Sie den vorangegangenen Codeschnipsel an Ihre eigenen Bedürfnisse anpassen können, finden Sie im Codebeispiel am Anfang dieses Artikels.
  • Ersetzen Sie in der vorangehenden URL oder im Java-Code die folgenden Platzhalter:
    • Ersetzen Sie <service-principal-application-id> durch den Wert der Anwendungs-(Client-)ID des Dienstherrn.
    • Ersetzen Sie <service-principal-oauth-secret> durch das Azure Databricks-OAuth-Geheimnis des Dienstprinzipals. (Microsoft Entra ID-Geheimnisse werden für die OAuth-M2M-Authentifizierung oder die Authentifizierung mit OAuth 2.0-Clientanmeldeinformationen nicht unterstützt.)
    • Wie Sie die Werte von <server-hostname> und <http-path> abrufen, erfahren Sie unter Computeeinstellungen für den Databricks JDBC-Treiber.

Weitere Informationen finden Sie im Using M2M Based Authentication-Abschnitt im Leitfaden zum JDBC-Treiber.