Partilhar via


Configurações de autenticação para o Databricks JDBC Driver

Este artigo descreve como definir as configurações de autenticação do Azure Databricks para o Databricks JDBC Driver.

Para configurar uma conexão do Azure Databricks para o Databricks JDBC Driver, você deve combinar suas configurações de recursos de computação, quaisquer configurações de capacidade de driver e as seguintes configurações de autenticação em uma URL de conexão JDBC ou coleção programática de propriedades de conexão JDBC.

As URLs de conexão JDBC usam o seguinte formato:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>[;<setting1>=<value1>;<setting2>=<value2>;<settingN>=<valueN>]
  • Para obter os valores de e , consulte as configurações de cálculo dono Databricks JDBC Driver .
  • Substitua <setting>=<value> , conforme necessário, cada uma das propriedades de conexão, conforme listado nas seções a seguir.
  • Você também pode adicionar configurações de capacidade de driver especiais ou avançadas.

Coleções programáticas de propriedades de conexão JDBC podem ser usadas em código Java, como o exemplo a seguir:

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);
  }
}
  • Defina os valores de ambiente DATABRICKS_SERVER_HOSTNAME e DATABRICKS_HTTP_PATH para Server Hostname e HTTP Path do recurso de computação Azure Databricks de destino, respetivamente. Para obter esses valores, consulte Configurações de computação para o Databricks JDBC Driver. Para definir variáveis de ambiente, consulte a documentação do seu sistema operacional.
  • Substitua <setting> e <value> conforme necessário para cada uma das propriedades de conexão, conforme listado nas seções a seguir.
  • Você também pode adicionar configurações de capacidade de driver especiais ou avançadas, geralmente como adicionais <setting> e <value> pares.
  • Para este exemplo, substitua <query> por uma cadeia de caracteres de consulta SQL SELECT .

Se você usa uma URL de conexão ou uma coleção de propriedades de conexão dependerá dos requisitos do seu aplicativo, ferramenta, cliente, SDK ou API de destino. Exemplos de URLs de conexão JDBC e coleções programáticas de propriedades de conexão JDBC são fornecidos neste artigo para cada tipo de autenticação do Azure Databricks com suporte.

O Databricks JDBC Driver dá suporte aos seguintes tipos de autenticação do Azure Databricks:

Token de ID do Microsoft Entra

Os drivers ODBC e JDBC 2.6.15 e superiores oferecem suporte a tokens de ID do Microsoft Entra para um usuário do Azure Databricks ou uma entidade de serviço do Microsoft Entra ID.

Para criar um token de acesso do Microsoft Entra ID, faça o seguinte:

Os tokens de acesso do Microsoft Entra ID têm um tempo de vida padrão de cerca de 1 hora. Um token de acesso pode ser atualizado programaticamente para uma sessão existente sem interromper a conexão executando o código em Atualizar um token de acesso do Microsoft Entra ID. Para obter instruções sobre como atualizar o token, consulte a seção Configuring Authentication > Using OAuth 2.0 no Databricks JDBC Driver Guide.

Para autenticar usando um token de ID do Microsoft Entra, defina a seguinte configuração.

Para uma URL de conexão JDBC com propriedades de configuração geral incorporadas e propriedades de credenciais confidenciais:

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

Para código Java com propriedades de configuração geral e propriedades de credenciais confidenciais definidas fora da URL de conexão 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);
// ...
  • Para obter um exemplo de código Java completo que você pode adaptar o trecho de código anterior às suas próprias necessidades, consulte o exemplo de código no início deste artigo.
  • No URL ou código Java anterior, substitua <microsoft-entra-id-token> pelo token ID do Microsoft Entra.
  • Para obter os valores de e , consulte as configurações de cálculo dono Databricks JDBC Driver .

Para obter mais informações, consulte a Token Pass-throughseção no Databricks JDBC Driver Guide.

Tokens OAuth 2.0

O driver JDBC 2.6.36 e superior suporta um token OAuth 2.0 para uma entidade de serviço Microsoft Entra ID. Isso também é conhecido como autenticação de passagem de token OAuth 2.0.

Importante

O driver JDBC 2.6.36 e superior oferece suporte ao uso de segredos OAuth do Azure Databricks para criar tokens OAuth 2.0. Os segredos de ID do Microsoft Entra não são suportados.

Os tokens OAuth 2.0 têm um tempo de vida padrão de 1 hora. Para gerar um novo token OAuth 2.0, repita este processo.

Para autenticar usando a autenticação de passagem de token OAuth 2.0, defina a seguinte configuração.

Para uma URL de conexão JDBC com propriedades de configuração geral incorporadas e propriedades de credenciais confidenciais:

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

Para código Java com propriedades de configuração geral e propriedades de credenciais confidenciais definidas fora da URL de conexão 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);
// ...
  • Para obter um exemplo de código Java completo que você pode adaptar o trecho de código anterior às suas próprias necessidades, consulte o exemplo de código no início deste artigo.
  • Na URL ou código Java anterior, substitua <oauth-token> pelo token OAuth do Azure Databricks. (Os tokens de ID do Microsoft Entra não são suportados para autenticação de passagem de token OAuth 2.0.)
  • Para obter os valores de e , consulte as configurações de cálculo dono Databricks JDBC Driver .

Para obter mais informações, consulte a Token Pass-throughseção no Databricks JDBC Driver Guide.

Autenticação OAuth user-to-machine (U2M)

O driver JDBC 2.6.36 e superior oferece suporte à autenticação U2M (usuário para máquina) OAuth para um usuário do Azure Databricks. Isso também é conhecido como autenticação baseada em navegador OAuth 2.0.

A autenticação baseada em navegador OAuth U2M ou OAuth 2.0 não tem pré-requisitos. Os tokens OAuth 2.0 têm um tempo de vida padrão de 1 hora. A autenticação baseada em navegador OAuth U2M ou OAuth 2.0 deve atualizar os tokens OAuth 2.0 expirados para você automaticamente.

Nota

A autenticação baseada em navegador OAuth U2M ou OAuth 2.0 funciona apenas com aplicativos executados localmente. Ele não funciona com aplicativos baseados em servidor ou em nuvem.

Para autenticar usando a autenticação OAuth user-to-machine (U2M) ou OAuth 2.0 baseada em navegador, defina a seguinte configuração.

Para uma URL de conexão JDBC com propriedades de configuração geral incorporadas e propriedades de credenciais confidenciais:

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

Para código Java com propriedades de configuração geral e propriedades de credenciais confidenciais definidas fora da URL de conexão 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);
// ...
  • Para obter um exemplo de código Java completo que você pode adaptar o trecho de código anterior às suas próprias necessidades, consulte o exemplo de código no início deste artigo.
  • No URL ou código Java anterior, substitua <passphrase> por uma frase secreta de sua escolha. O driver usa essa chave para atualizar a criptografia de token.
  • Para obter os valores de e , consulte as configurações de cálculo dono Databricks JDBC Driver .

Para obter mais informações, consulte a Using Browser Based Authenticationseção no Databricks JDBC Driver Guide.

Autenticação OAuth máquina-a-máquina (M2M)

O driver JDBC 2.6.36 e superior suporta autenticação OAuth máquina-a-máquina (M2M) para uma entidade de serviço Microsoft Entra ID. Isso também é conhecido como autenticação de credenciais de cliente usando OAuth 2.0 .

Nota

JDBC 2.6.40.1071 resolve o problema em versões mais antigas que a conexão usando M2M para espaços de trabalho de link privado não era suportada.

Para configurar a autenticação de credenciais de cliente OAuth M2M ou OAuth 2.0, faça o seguinte:

  1. Crie uma entidade de serviço gerenciado do Microsoft Entra ID e atribua-a a contas e espaços de trabalho do Azure Databricks. Para fazer isso, consulte Gerenciar entidades de serviço.

    Importante

    O driver JDBC 2.6.36 e superior oferece suporte aos segredos OAuth do Azure Databricks para autenticação de credenciais de cliente OAuth M2M ou OAuth 2.0. Os segredos de ID do Microsoft Entra não são suportados.

  2. Crie um segredo OAuth do Azure Databricks para a entidade de serviço. Para isso, consulte Gerar e usar manualmente tokens de acesso para a autenticação do principal de serviço OAuth.

  3. Dê à entidade de serviço acesso ao seu cluster ou depósito. Consulte Permissões de computação ou Gerenciar um armazém SQL.

Para autenticar usando a autenticação de credenciais de cliente OAuth máquina-a-máquina (M2M) ou OAuth 2.0, defina a seguinte configuração.

Para uma URL de conexão JDBC com propriedades de configuração geral incorporadas e propriedades de credenciais confidenciais:

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=1;OAuth2ClientId=<service-principal-application-id>;OAuth2Secret=<service-principal-oauth-secret>

Para código Java com propriedades de configuração geral e propriedades de credenciais confidenciais definidas fora da URL de conexão 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);
// ...
  • Para obter um exemplo de código Java completo que você pode adaptar o trecho de código anterior às suas próprias necessidades, consulte o exemplo de código no início deste artigo.
  • No URL ou código Java anterior, substitua os seguintes espaços reservados:
    • Substitua <service-principal-application-id> pelo valor de ID do aplicativo (cliente) da entidade de serviço.
    • Substitua <service-principal-oauth-secret> pelo segredo OAuth do Azure Databricks da entidade de serviço. (Os segredos de ID do Microsoft Entra não são suportados para autenticação de credenciais de cliente OAuth M2M ou OAuth 2.0.)
    • Para obter os valores de e , consulte as configurações de cálculo dono Databricks JDBC Driver .

Para obter mais informações, consulte a Using M2M Based Authenticationseção no Databricks JDBC Driver Guide.