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>]
- Wie Sie die Werte von
<server-hostname>
und<http-path>
abrufen, erfahren Sie unter Computeeinstellungen für den Databricks JDBC-Treiber. - Ersetzen Sie
<setting>=<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.
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
undDATABRICKS_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 eineSELECT
-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
- OAuth 2.0-Token
- OAuth U2M-Authentifizierung (User-to-Machine)
- OAuth-M2M-Authentifizierung
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:
- Für eine*n Azure Databricks-Benutzer*in können Sie die Azure CLI verwenden. Weitere Informationen finden Sie unter Abrufen von Microsoft Entra ID-Token für Benutzer mithilfe der Azure CLI.
- Einen Microsoft Entra ID-Dienstprinzipal finden Sie unter Abrufen eines Microsoft Entra ID-Zugriffstokens mit der Azure CLI. Informationen zum Erstellen eines verwalteten Dienstprinzipals von Microsoft Entra ID finden Sie unter Verwalten von Dienstprinzipalen.
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.
- Informationen zum Erstellen eines OAuth 2.0-Tokens für die Passthrough-Authentifizierung für einen Microsoft Entra ID-Dienstprinzipal finden Sie unter Manuelles Generieren und Verwenden von Zugriffstoken für die OAuth-M2M-Authentifizierung. Notieren Sie sich den Wert des OAuth-Tokens
access_token
für den Dienstprinzipal. - Informationen zum Erstellen eines verwalteten Dienstprinzipals von Microsoft Entra ID finden Sie unter Verwalten von Dienstprinzipalen.
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:
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.
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.
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.
- Ersetzen Sie
Weitere Informationen finden Sie im Using M2M Based Authentication
-Abschnitt im Leitfaden zum JDBC-Treiber.