Condividi tramite


Impostazioni di autenticazione per il driver JDBC di Databricks

Il driver JDBC di Databricks supporta più metodi di autenticazione a seconda del caso d'uso. Questa pagina descrive come configurare ogni metodo ed elenca le proprietà di connessione necessarie.

Per configurare l'autenticazione per il driver JDBC di Databricks, usare uno dei metodi seguenti:

Trasmissione del token OAuth 2.0

Il driver JDBC accetta i token OAuth nella Auth_AccessToken proprietà . È possibile passare direttamente un token OAuth di Azure Databricks o un token JSON Web (JWT) da un provider di identità esterno. Se si passa un token IdP esterno, Azure Databricks lo scambia automaticamente per un token di Azure Databricks usando la federazione dei token.

Negli esempi seguenti sostituire i segnaposto seguenti:

Le proprietà necessarie sono:

  • AuthMech impostato su 11 (autenticazione OAuth 2.0)
  • Auth_Flow impostato su 0 (modalità pass-through del token)
  • Auth_AccessToken impostare su un token OAuth di Azure Databricks o su un token JWT IdP esterno

Vedere Proprietà di autenticazione.

Per un URL di connessione JDBC:

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

Nel codice Java:

// ...
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);
// ...

Federazione dei token con un provider di identità esterno

Se si esegue l'autenticazione con un token da un provider di identità esterno, ad esempio Okta, Microsoft Entra ID, Keycloak o qualsiasi IDP conforme a OIDC, Azure Databricks esegue automaticamente lo scambio di token. La configurazione di JDBC è identica a quella del pass-through del token. Passa il token IdP in Auth_AccessToken e il driver si occupa del resto.

Prima di usare la federazione dei token, è necessario:

  1. Creare un criterio di federazione nell'account Azure Databricks che considera attendibile il provider di identità esterno. Un criterio di federazione specifica l'URL dell'emittente, i valori di destinatari previsti e il claim JWT usato per eseguire il mapping a un utente di Azure Databricks. Vedere Autenticare l'accesso ad Azure Databricks usando la federazione dei token OAuth.
  2. Verificare che esista un utente di Azure Databricks corrispondente. L'email dell'utente o un altro identificatore deve corrispondere al valore subject_claim nel token JWT.
  3. Verificare che l'endpoint di individuazione OIDC dell'IdP sia raggiungibile pubblicamente in modo che Azure Databricks possa recuperare le chiavi di firma per verificare il token.

Autenticazione OAuth da utente a macchina (U2M)

L'autenticazione U2M OAuth consente di accedere ad Azure Databricks tramite un browser. Il driver apre una finestra del browser, si esegue l'autenticazione e il driver riceve un token OAuth. Il driver usa l'ID databricks-sql-jdbcclient OAuth predefinito .

Questo tipo di autenticazione non ha prerequisiti. I token hanno una durata predefinita di un'ora e vengono aggiornati automaticamente alla scadenza.

Annotazioni

OAuth U2M funziona solo con applicazioni eseguite localmente. Non funziona con applicazioni basate su server o basate sul cloud.

Negli esempi seguenti sostituire i segnaposto seguenti:

Le proprietà necessarie sono:

  • AuthMech impostato su 11 (autenticazione OAuth 2.0)
  • Auth_Flow impostato su 2 (modalità basata su browser U2M)
  • TokenCachePassPhrase imposta la passphrase utilizzata per crittografare le credenziali U2M OAuth memorizzate nella cache. In questo modo si evitano le autenticazioni ripetute basate su browser. Per non utilizzare la memorizzazione nella cache dei token, impostare EnableTokenCache su 0.

Vedere Proprietà di autenticazione.

In un URL di connessione JDBC:

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

Nel codice Java:

// ...
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);
// ...

Autenticazione OAuth da computer a computer (M2M)

Il driver JDBC supporta l'autenticazione da computer a computer OAuth (M2M) usando una delle entità o l'identità seguenti. Vedere Autorizzare l'accesso dell'entità servizio ad Azure Databricks con OAuth.

M2M utilizzando il principal di servizio gestito di Databricks

Per configurare l'autenticazione utilizzando un principal di servizio gestito da Databricks:

  1. Crea un service-principal gestito da Databricks e assegnalo agli account e agli spazi di lavoro Databricks.

  2. Crea un segreto OAuth di Databricks per il principale del servizio. Vedere Generare manualmente token di accesso OAuth M2M.

  3. Concedi autorizzazioni di accesso a cluster e magazzini SQL.

  4. Aggiungere le proprietà seguenti all'URL di connessione JDBC esistente o all'oggetto java.util.Properties:

    • AuthMech impostato su 11 (autenticazione OAuth 2.0)
    • Auth_Flow impostato su 1 (modalità credenziali client M2M)
    • OAuth2ClientID impostato al valore dell'ID applicazione (client) dell'entità servizio
    • OAuth2Secret impostato sul segreto OAuth di Databricks dell'entità servizio

    Vedere Proprietà di autenticazione.

M2M utilizzando il principal del servizio gestito di Azure

Per configurare l'autenticazione utilizzando un principale del servizio gestito da Azure:

  1. Crea un segreto OAuth di Databricks per il principale del servizio. Vedere Generare manualmente token di accesso OAuth M2M.

  2. Concedi autorizzazioni di accesso a cluster e magazzini SQL.

  3. Aggiungere le proprietà seguenti all'URL di connessione JDBC esistente o all'oggetto java.util.Properties:

    • AuthMech impostato su 11 (autenticazione OAuth 2.0)
    • Auth_Flow impostato su 1 (modalità credenziali client M2M)
    • OAuth2ClientID impostato su ID applicazione (client) dell'entità servizio
    • AzureTenantID impostare su ID del tenant di Azure trovato in Azure Active Directory
    • OAuth2Secret impostato sul segreto OAuth di Databricks del principale del servizio

    Vedere Proprietà di autenticazione.

M2M utilizzando le identità gestite di Azure

Per configurare l'autenticazione utilizzando le identità gestite di Azure:

  1. Configura identità gestite per le tue risorse Azure.

  2. Concedi autorizzazioni di accesso a cluster e magazzini SQL.

  3. Aggiungere le proprietà seguenti all'URL di connessione JDBC esistente o all'oggetto java.util.Properties:

    • AuthMech impostato su 11 (autenticazione OAuth 2.0)
    • Auth_Flow impostato su 3 (modalità identità gestita)
    • OAuth2ClientID impostare sull'ID client dell'identità gestita. Questa operazione è necessaria solo se si usa un'identità gestita assegnata dall'utente.
    • Azure_workspace_resource_id impostare l'ID risorsa di Azure dell'area di lavoro di Databricks

    Vedere Proprietà di autenticazione.

Token di accesso personale di Databricks

Annotazioni

I token di accesso personali sono ideali per gli scenari di test. Azure Databricks consiglia tipi di autenticazione più sicuri per gli scenari di produzione.

Per creare un token di accesso personale di Databricks, seguire la procedura descritta in Creare token di accesso personali per gli utenti dell'area di lavoro.

Negli esempi seguenti sostituire i segnaposto seguenti:

Le proprietà necessarie sono:

  • AuthMech impostato su 3 (autenticazione token)
  • UID impostato sulla stringa letterale token
  • PWD o password impostato sul valore del tuo token di accesso personale di Databricks

Vedere Proprietà di autenticazione.

In un URL di connessione JDBC:

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

Nel codice Java:

// ...
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);
// ...