Impostazioni di autenticazione per il driver JDBC di Databricks
Questo articolo descrive come configurare le impostazioni di autenticazione di Azure Databricks per il driver JDBC di Databricks.
Per configurare una connessione Azure Databricks per il driver JDBC di Databricks, è necessario combinare le impostazioni delle risorse di calcolo, le impostazioni delle funzionalità del driver e le seguenti impostazioni di autenticazione in un URL di connessione JDBC o in una raccolta programmatica di proprietà di connessione JDBC.
Gli URL di connessione JDBC usano il seguente formato:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>[;<setting1>=<value1>;<setting2>=<value2>;<settingN>=<valueN>]
- Per ottenere i valori per
<server-hostname>
e<http-path>
, consultare Impostazioni di calcolo per il driver JDBC di Databricks. - Sostituire
<setting>=<value>
in base alle esigenze per ognuna delle proprietà di connessione elencate nelle sezioni seguenti. - È anche possibile aggiungere impostazioni speciali o avanzate delle funzionalità del driver.
Le raccolte a livello di codice delle proprietà di connessione JDBC possono essere usate nel codice Java, ad esempio l'esempio seguente:
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);
}
}
- Impostare i valori di ambiente
DATABRICKS_SERVER_HOSTNAME
eDATABRICKS_HTTP_PATH
rispettivamente sui valori del Nome host server e del percorso HTTP della risorsa di calcolo di Azure Databricks di destinazione. Per ottenere i valori, consultare Impostazioni di calcolo per il driver JDBC di Databricks. Per impostare le variabili di ambiente, si veda la documentazione relativa al sistema operativo Windows utilizzato. - Sostituire
<setting>
e<value>
in base alle esigenze per ognuna delle proprietà di connessione elencate nelle sezioni seguenti. - È anche possibile aggiungere impostazioni speciali o avanzate delle funzionalità del driver, in genere come coppie aggiuntive
<setting>
e<value>
. - Per questo esempio, sostituire
<query>
con una stringa di query SQLSELECT
.
Se si usa un URL di connessione o una raccolta di proprietà di connessione, dipenderà dai requisiti dell'app di destinazione, dello strumento, del client, dell'SDK o dell'API. In questo articolo sono disponibili esempi di URL di connessione JDBC e raccolte a livello di codice di proprietà di connessione JDBC per ogni tipo di autenticazione di Azure Databricks supportato.
Il driver JDBC di Databricks supporta i seguenti tipi di autenticazione di Azure Databricks:
- Token di Microsoft Entra ID
- Token OAuth 2.0
- Autenticazione da utente a computer (U2M) OAuth
- Autenticazione OAuth da computer a computer (M2M)
Token di Microsoft Entra ID
I driver ODBC e JDBC 2.6.15 e versioni successive supportano i token Microsoft Entra ID per un utente di Azure Databricks o un'entità servizio Microsoft Entra ID.
Per creare un token di accesso di Microsoft Entra ID, eseguire le operazioni seguenti:
- Per un utente di Azure Databricks, è possibile usare l'interfaccia della riga di comando di Azure. Consultare Ottenere i token Microsoft Entra ID per gli utenti utilizzando l’interfaccia della riga di comando di Azure.
- Per un'entità servizio Microsoft Entra ID, consultare Ottenere un token di accesso microsoft Entra ID con l'interfaccia della riga di comando di Azure. Per creare un'entità servizio gestita di Microsoft Entra ID, consultare Gestire le entità servizio.
I token di accesso di Microsoft Entra ID hanno una durata predefinita di circa 1 ora. Un token di accesso può essere aggiornato a livello di codice per una sessione esistente senza interrompere la connessione eseguendo il codice in Aggiornare un token di accesso di Microsoft Entra ID. Per istruzioni su come aggiornare il token, consultare la sezione Configuring Authentication > Using OAuth 2.0
nella Guida al driver JDBC di Databricks.
Per eseguire l'autenticazione con un token ID Microsoft Entra, impostare la seguente configurazione.
Per un URL di connessione JDBC con proprietà di configurazione generali incorporate e proprietà delle credenziali sensibili:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<microsoft-entra-id-token>
Per il codice Java con proprietà di configurazione generale e proprietà di credenziali sensibili impostate al di fuori dell'URL di connessione JDBC:
// ...
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);
// ...
- Per un esempio di codice Java completo che è possibile adattare il frammento di codice precedente alle proprie esigenze, consultare l'esempio di codice all'inizio di questo articolo.
- Nell'URL o nel codice Java precedente sostituire
<microsoft-entra-id-token>
con il token di Microsoft Entra ID. - Per ottenere i valori per
<server-hostname>
e<http-path>
, consultare Impostazioni di calcolo per il driver JDBC di Databricks.
Per altre informazioni, consultare la sezione Token Pass-through
nella Guida al driver JDBC di Databricks.
Token OAuth 2.0
Il driver JDBC 2.6.36 e versioni successive supporta un token OAuth 2.0 per un'entità servizio Microsoft Entra ID. Questa operazione è nota anche come autenticazione pass-through del token OAuth 2.0.
- Per creare un token OAuth 2.0 per l'autenticazione pass-through del token per un'entità servizio Microsoft Entra ID, consultare Generare e usare manualmente i token di accesso per l'autenticazione M2M OAuth. Prendere nota del valore OAuth
access_token
dell'entità servizio. - Per creare un'entità servizio gestita di Microsoft Entra ID, consultare Gestire le entità servizio.
Importante
Il driver JDBC 2.6.36 e versioni successive supporta l'uso dei segreti OAuth di Azure Databricks per creare token OAuth 2.0. I segreti dell'ID Microsoft Entra non sono supportati.
I token OAuth 2.0 hanno una durata predefinita di 1 ora. Per generare un nuovo token OAuth 2.0, ripetere questo processo.
Per eseguire l'autenticazione usando l'autenticazione pass-through del token OAuth 2.0, impostare la seguente configurazione.
Per un URL di connessione JDBC con proprietà di configurazione generali incorporate e proprietà delle credenziali sensibili:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<oauth-token>
Per il codice Java con proprietà di configurazione generale e proprietà di credenziali sensibili impostate al di fuori dell'URL di connessione JDBC:
// ...
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);
// ...
- Per un esempio di codice Java completo che è possibile adattare il frammento di codice precedente alle proprie esigenze, consultare l'esempio di codice all'inizio di questo articolo.
- Nell'URL o nel codice Java precedente sostituire
<oauth-token>
con il token OAuth di Azure Databricks. (I token ID Microsoft Entra non sono supportati per l'autenticazione pass-through del token OAuth 2.0). - Per ottenere i valori per
<server-hostname>
e<http-path>
, consultare Impostazioni di calcolo per il driver JDBC di Databricks.
Per altre informazioni, consultare la sezione Token Pass-through
nella Guida al driver JDBC di Databricks.
Autenticazione da utente a computer (U2M) OAuth
Il driver JDBC 2.6.36 e versioni successive supporta l'autenticazione OAuth utente-computer (U2M) per un utente di Azure Databricks. Questa è anche nota come autenticazione OAuth 2.0 basata su browser.
L'autenticazione basata su browser OAuth U2M o OAuth 2.0 non ha prerequisiti. I token OAuth 2.0 hanno una durata predefinita di 1 ora. L'autenticazione basata su browser OAuth U2M o OAuth 2.0 deve aggiornare automaticamente i token OAuth 2.0 scaduti.
Nota
L'autenticazione basata su browser OAuth U2M o OAuth 2.0 funziona solo con le applicazioni eseguite localmente. Non funziona con applicazioni basate su server o basate sul cloud.
Per eseguire l'autenticazione usando l'autenticazione basata su browser OAuth da utente a computer (U2M) o OAuth 2.0, impostare la configurazione seguente.
Per un URL di connessione JDBC con proprietà di configurazione generali incorporate e proprietà delle credenziali sensibili:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=2;TokenCachePassPhrase=<passphrase>;EnableTokenCache=0
Per il codice Java con proprietà di configurazione generale e proprietà di credenziali sensibili impostate al di fuori dell'URL di connessione JDBC:
// ...
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);
// ...
- Per un esempio di codice Java completo che è possibile adattare il frammento di codice precedente alle proprie esigenze, consultare l'esempio di codice all'inizio di questo articolo.
- Nell'URL o nel codice Java precedente sostituire
<passphrase>
con una passphrase di propria scelta. Il driver usa questa chiave per la crittografia del token di aggiornamento. - Per ottenere i valori per
<server-hostname>
e<http-path>
, consultare Impostazioni di calcolo per il driver JDBC di Databricks.
Per altre informazioni, consultare la sezione Using Browser Based Authentication
nella Guida al driver JDBC di Databricks.
Autenticazione OAuth da computer a computer (M2M)
Il driver JDBC 2.6.36 e versioni successive supporta l'autenticazione OAuth computer-computer (M2M) per un'entità servizio Microsoft Entra ID. Questa operazione è nota anche come autenticazione delle credenziali client OAuth 2.0.
Nota
JDBC 2.6.40.1071 risolve il problema nelle versioni precedenti che si connettevano con M2M per le aree di lavoro di collegamento privato non era supportato.
Per configurare l'autenticazione delle credenziali client OAuth M2M o OAuth 2.0, procedere come segue:
Creare un'entità servizio gestita da Microsoft Entra ID e assegnarla agli account e alle aree di lavoro di Azure Databricks. A tale scopo, consultare Gestire le entità servizio.
Importante
Il driver JDBC 2.6.36 e versioni successive supporta i segreti OAuth di Azure Databricks per l'autenticazione delle credenziali client OAuth M2M o OAuth 2.0. I segreti dell'ID Microsoft Entra non sono supportati.
Creare un segreto OAuth di Azure Databricks per l'entità servizio. A tale scopo, si veda Generare e usare manualmente i token di accesso per l'autenticazione OAuth M2M.
Concedere all'entità servizio l'accesso al cluster o al warehouse. Vedere Autorizzazioni di calcolo o Gestire un'istanza di SQL Warehouse.
Per eseguire l'autenticazione usando l'autenticazione delle credenziali del client OAuth da computer a computer (M2M) o OAuth 2.0, impostare la configurazione seguente.
Per un URL di connessione JDBC con proprietà di configurazione generali incorporate e proprietà delle credenziali sensibili:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=1;OAuth2ClientId=<service-principal-application-id>;OAuth2Secret=<service-principal-oauth-secret>
Per il codice Java con proprietà di configurazione generale e proprietà di credenziali sensibili impostate al di fuori dell'URL di connessione JDBC:
// ...
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);
// ...
- Per un esempio di codice Java completo che è possibile adattare il frammento di codice precedente alle proprie esigenze, consultare l'esempio di codice all'inizio di questo articolo.
- Nell'URL o nel codice Java precedente, sostituire i seguenti segnaposto:
- Sostituire
<service-principal-application-id>
con il valore dell’ID (cliente) dell'applicazione dell’entità servizio. - Sostituire
<service-principal-oauth-secret>
il segreto OAuth di Azure Databricks dell'entità servizio. (I segreti microsoft Entra ID non sono supportati per l'autenticazione client OAuth M2M o OAuth 2.0.) - Per ottenere i valori per
<server-hostname>
e<http-path>
, consultare Impostazioni di calcolo per il driver JDBC di Databricks.
- Sostituire
Per altre informazioni, consultare la sezione Using M2M Based Authentication
nella Guida al driver JDBC di Databricks.