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>
, vedere 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 dell'ambiente
DATABRICKS_SERVER_HOSTNAME
eDATABRICKS_HTTP_PATH
rispettivamente sul nome host del server e sul percorso HTTP della risorsa di calcolo di Azure Databricks di destinazione. Per ottenere questi valori, vedere impostazioni di calcolo per il driver JDBC di Databricks. Per impostare le variabili di ambiente, vedere la documentazione del sistema operativo. - 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. Consulta Ottenere i token ID di Microsoft Entra per gli utenti usando l'interfaccia della riga di comando di Azure.
- Per un'entità servizio di Microsoft Entra ID, utilizzare Ottenere un token di accesso di Microsoft Entra ID con la CLI 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 a Microsoft Entra ID. Per istruzioni su come aggiornare il token, vedere la sezione Configuring Authentication > Using OAuth 2.0
nella guida driver JDBC di Databricks.
Per eseguire l'autenticazione con un token ID Microsoft Entra, 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=0;Auth_AccessToken=<microsoft-entra-id-token>
Per il codice Java con proprietà di configurazione generali e proprietà delle credenziali sensibili impostate all'esterno 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>
, vedere 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 informazioni su come creare un token OAuth 2.0 per l'autenticazione del token pass-through per un principale del servizio di Microsoft Entra ID, vedere Generare e usare manualmente i token di accesso per l'autenticazione del principale del servizio 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 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=0;Auth_AccessToken=<oauth-token>
Per il codice Java con proprietà di configurazione generali e proprietà delle credenziali sensibili impostate all'esterno 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>
, vedere 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 generali e proprietà delle credenziali sensibili impostate all'esterno 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>
, vedere 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, eseguire le operazioni seguenti:
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. Per farlo, vedere Generare e usare manualmente i token di accesso per l'autenticazione del principale del servizio OAuth.
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 utilizzando OAuth da macchina a macchina (M2M) o l'autenticazione con le credenziali del client 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=1;OAuth2ClientId=<service-principal-application-id>;OAuth2Secret=<service-principal-oauth-secret>
Per il codice Java con proprietà di configurazione generali e proprietà delle credenziali sensibili impostate all'esterno 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>
, vedere 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.