Pular para o conteúdo principal

Configurações de autenticação para o driver JDBC da Databricks

nota

Este artigo se aplica ao driver Databricks JDBC Simba. Para o driver JDBC desenvolvido pela Databricks, consulte Databricks JDBC Driver (OSS).

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

Para configurar uma conexão Databricks para o driver Databricks JDBC , o senhor deve combinar suas configurações de recurso compute, quaisquer configurações de capacidade do driver e as seguintes configurações de autenticação em um URL de conexão JDBC ou em um conjunto programático de propriedades de conexão JDBC.

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

jdbc:databricks://<server-hostname>:443;httpPath=<http-path>[;<setting1>=<value1>;<setting2>=<value2>;<settingN>=<valueN>]

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

Java
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 DATABRICKS_SERVER_HOSTNAME DATABRICKS_HTTP_PATH os valores de ambiente Databricks compute e como os valores de Server Hostname e HTTP Path do recurso de destino , respectivamente. Para obter esses valores, consulte as configurações de computação do driver Databricks JDBC. Para definir a variável 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 listadas nas seções a seguir.
  • Você também pode adicionar configurações de capacidade de driver especiais ou avançadas, normalmente como pares adicionais de <setting> e <value>.
  • Para este exemplo, substitua <query> por SQL SELECT query strings.

O uso de um URL de conexão ou de um conjunto de propriedades de conexão dependerá dos requisitos do aplicativo, da ferramenta, do cliente, do SDK ou da 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 Databricks compatível.

O driver JDBC da Databricks é compatível com os seguintes tipos de autenticação da Databricks:

Databricks tokens de acesso pessoal

nota

Os tokens de acesso pessoal são fornecidos para cenários de teste. A Databricks recomenda tipos de autenticação mais seguros para cenários de produção.

Para criar tokens de acesso pessoal Databricks, siga as etapas em Databricks acesso pessoal tokens para usuários workspace.

Para configurar a autenticação de um URL de conexão JDBC com propriedades de configuração geral incorporadas e propriedades de credenciais confidenciais usando seu PAT:

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

Para código Java com propriedades de configuração geral e propriedades de credenciais confidenciais definidas fora do URL de conexão JDBC:

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);
// ...
  • Você pode adaptar o trecho de código anterior para atender às suas próprias necessidades. Consulte o início deste artigo para obter um exemplo completo do código Java.
  • No URL anterior ou no código Java, substitua <personal-access-token> pelos tokens de acesso pessoal Databricks do usuário workspace.
  • Para obter os valores de <server-hostname> e <http-path>, consulte as configurações de computação do driver Databricks JDBC.

OAuth 2.0 tokens

JDBC O driver 2.6.36 e o acima suportam tokens OAuth 2.0 para um usuário ou entidade de serviço Databricks. Isso também é conhecido como OAuth autenticação de passagem de tokens 2.0.

Para criar tokens OAuth 2.0 para autenticação de passagem de tokens, faça o seguinte:

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

Para um 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 do URL de conexão JDBC:

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);
// ...
  • Você pode adaptar o trecho de código anterior para atender às suas próprias necessidades. Consulte o início deste artigo para obter um exemplo completo do código Java.
  • No URL anterior ou no código Java, substitua <oauth-token> pelos tokens OAuth 2.0.
  • Para obter os valores de <server-hostname> e <http-path>, consulte as configurações de computação do driver Databricks JDBC.

Para obter mais informações, consulte a seção Token Pass-through no guia do driverDatabricks JDBC.

Autenticação OAuth de usuário para máquina (U2M)

JDBC O driver 2.6.36 e o acima oferecem suporte à autenticação OAuth user-to-machine (U2M) para um usuário Databricks. Isso também é conhecido como autenticação baseada em navegador OAuth 2.0.

nota

JDBC A versão 2.6.40.1071 resolve o problema de versões anteriores em que não havia suporte para a conexão usando M2M para o espaço de trabalho de link privado.

A autenticação baseada em navegador OAuth U2M ou OAuth 2.0 não tem pré-requisitos. OAuth 2.0 tokens têm uma vida útil de default de 1 hora. OAuth A autenticação baseada em navegador U2M ou OAuth 2.0 deve refresh expirar OAuth 2.0 tokens automaticamente para o senhor.

nota

OAuth A autenticação baseada em navegador 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 a autenticação baseada em navegador OAuth 2.0, defina a seguinte configuração.

Para um 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 do URL de conexão JDBC:

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);
// ...
  • Para obter um exemplo completo do código Java, no qual o senhor 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 esse key para criptografia de tokens refresh.
  • Para obter os valores de <server-hostname> e <http-path>, consulte as configurações de computação do driver Databricks JDBC.

Para obter mais informações, consulte a seção Using Browser Based Authentication no guia do driverDatabricks JDBC.

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

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

nota

JDBC A versão 2.6.40.1071 resolve o problema de versões anteriores em que não havia suporte para a conexão usando M2M para o espaço de trabalho de link privado.

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

  1. Crie uma Databricks entidade de serviço em seu Databricks workspace e crie um OAuth secret para essa entidade de serviço.

    Para criar a entidade de serviço e seu segredo OAuth, consulte Autorizar o acesso autônomo a Databricks recurso com uma entidade de serviço usando OAuth. Anote o valor do UUID da entidade de serviço ou do ID do aplicativo e o valor do segredo do OAuth da entidade de serviço.

  2. Conceda à entidade de serviço acesso ao seu clustering ou depósito. Consulte computar permissões ou gerenciar SQL warehouse a.

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 um 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 do URL de conexão JDBC:

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", "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 completo do código Java, no qual o senhor 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 anterior ou no código Java, substitua os seguintes espaços reservados:
    • Substitua <service-principal-application-id> pelo valor de UUID/ID do aplicativo da entidade de serviço.
    • Substitua <service-principal-oauth-secret> pelo valor do segredo OAuth da entidade de serviço.
    • Para obter os valores de <server-hostname> e <http-path>, consulte as configurações de computação do driver Databricks JDBC.

Para obter mais informações, consulte a seção Using M2M Based Authentication no guia do driverDatabricks JDBC.