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:

Microsoft Entra ID-Token

ODBC- und JDBC-Treiber 2.6.15 und höher unterstützen Microsoft Entra ID-Token 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.

Wichtig

JDBC-Treiber 2.6.36 und höher unterstützt die Verwendung von Azure Databricks-OAuth-Geheimnissen zum Erstellen von OAuth 2.0-Token. Geheime Schlüssel der Microsoft Entra ID werden nicht unterstützt.

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.

Hinweis

DAS PROBLEM in älteren Versionen, die die Verbindung mit M2M für private Linkarbeitsbereiche herstellen, wurde nicht unterstützt.

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. Weitere Informationen dazu finden Sie unter Manuelles Generieren und Verwenden von Zugriffstoken für die OAuth-M2M-Authentifizierung.

  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.