Configurações de autenticação para o driver JDBC do Databricks
O driver JDBC do Databricks suporta vários métodos de autenticação, dependendo do seu caso de uso. Esta página descreve como configurar cada método e lista as propriedades de conexão necessárias.
Para configurar a autenticação do driver JDBC do Databricks, utilize um dos seguintes métodos:
- Transmissão de tokensOAuth 2.0 (incluindo federação de tokens com provedores de identidade externos)
- Autenticação OAuth user-to-machine (U2M)
- Autenticação OAuth machine-to-machine (M2M)
- access tokenpessoal Databricks
Transmissão de tokensOAuth 2.0
O driver JDBC aceita tokens OAuth na propriedade Auth_AccessToken . Você pode passar tokens OAuth do Databricks diretamente ou tokens JSON Web (JWT) de um provedor de identidade externo. Se você fornecer tokens de um IdP externo, Databricks os trocará automaticamente por tokens Databricks usando a federação de tokens.
Nos exemplos a seguir, substitua os seguintes marcadores de posição:
<oauth-token>Com tokens OAuth 2.0 do Databricks ou um JWT de um IdP externo.- Para obter os valores para
<server-hostname>e<http-path>, consulte Configurar uma conexão com o Databricks usando o driver JDBC do Databricks.
As propriedades necessárias são:
AuthMechdefinido como11(autenticação OAuth 2.0)Auth_Flowdefinido como0(modo de passagem de tokens)Auth_AccessTokenconfigurado para tokens OAuth Databricks ou um JWT de um IdP externo.
Consulte Propriedades de autenticação.
Para obter um URL de conexão JDBC:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=0;Auth_AccessToken=<oauth-token>
Em código 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);
// ...
Federação de tokens com um provedor de identidade externo
Se você se autenticar com tokens de um provedor de identidade externo, como Okta, Microsoft Entra ID, Keycloak ou qualquer IdP compatível com OIDC, Databricks realizará a troca de tokens automaticamente. A configuração JDBC é a mesma que a de passagem de tokens. Passe os tokens IdP em Auth_AccessToken e o driver cuida do resto.
Antes de usar a federação de tokens, você deve:
- Crie uma política de federação em sua account Databricks que confie no IdP externo. Uma política de federação especifica o URL do emissor, os valores esperados do público-alvo e a declaração JWT usada para mapear um usuário do Databricks. Consulte Autenticar o acesso ao Databricks usando a federação de tokens OAuth.
- Verifique se existe um usuário correspondente no Databricks. O email do usuário ou outro identificador deve corresponder ao valor
subject_claimno JWT. - Verifique se o endpoint de descoberta OIDC do IdP está publicamente acessível para que Databricks possa obter a chave de assinatura e verificar os tokens.
Autenticação OAuth de usuário para máquina (U2M)
A autenticação OAuth U2M permite que você faça login no Databricks através de um navegador. O motorista abre uma janela do navegador, você se autentica e o motorista recebe um token OAuth . O driver usa o ID do cliente OAuth integrado databricks-sql-jdbc.
Este tipo de autenticação não possui pré-requisitos. Os tokens têm uma duração default de uma hora e refresh automaticamente quando expiram.
OAuth U2M funciona apenas com aplicativos executados localmente. Não funciona com aplicações baseadas em servidor ou cloud .
Nos exemplos a seguir, substitua os seguintes marcadores de posição:
<passphrase>com uma senha de sua escolha. O driver usa essa key para criptografia de tokens refresh .- Para obter os valores para
<server-hostname>e<http-path>, consulte Configurar uma conexão com o Databricks usando o driver JDBC do Databricks.
As propriedades necessárias são:
AuthMechdefinido como11(autenticação OAuth 2.0)Auth_Flowdefinido como2(modo baseado em navegador U2M)TokenCachePassPhraseDefina como a senha usada para criptografar suas credenciais OAuth U2M armazenadas em cache. Isso impede autenticações repetidas baseadas em navegador. Para desativar o cache de tokens, definaEnableTokenCachecomo0.
Consulte Propriedades de autenticação.
Em uma URL de conexão JDBC:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=2;TokenCachePassPhrase=<passphrase>;EnableTokenCache=0
Em código 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);
// ...
Autenticação OAuth de máquina para máquina (M2M)
O driver JDBC oferece suporte à autenticação OAuth máquina a máquina (M2M) usando uma entidade de serviço Databricks, também chamada de autenticação de credenciais de cliente OAuth 2.0. Consulte Autorizar o acesso da entidade de serviço ao Databricks com OAuth.
Para configurar a autenticação M2M:
- Crie uma entidade de serviço Databricks em seu workspace Databricks . Consulte Autorizar o acesso da entidade de serviço ao Databricks com OAuth.
- Crie um segredo OAuth para a entidade de serviço. Anote o UUID ou ID do aplicativo e o valor secreto .
- Conceda à entidade de serviço acesso ao seu cluster ou armazém. Consulte permissões de computação ou gerencie um SQL warehouse.
Nos exemplos a seguir, substitua os seguintes marcadores de posição:
<service-principal-application-id>com o UUID ou ID do aplicativo da entidade de serviço.<service-principal-oauth-secret>com o segredo OAuth da entidade de serviço.- Para obter os valores para
<server-hostname>e<http-path>, consulte Configurar uma conexão com o Databricks usando o driver JDBC do Databricks.
As propriedades necessárias são:
AuthMechdefinido como11(autenticação OAuth 2.0)Auth_Flowdefinido como1(modo de credenciais do cliente M2M)OAuth2ClientIDdefinido com o valor UUID ou ID do aplicativo da entidade de serviço.OAuth2Secretdefinido para o valor do Segredo OAuth da entidade de serviço
Consulte Propriedades de autenticação.
Em uma URL de conexão JDBC:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=11;Auth_Flow=1;OAuth2ClientId=<service-principal-application-id>;OAuth2Secret=<service-principal-oauth-secret>
Em código 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);
// ...
access tokenpessoalDatabricks
access tokens pessoal são os mais indicados para testar diferentes cenários. A Databricks recomenda tipos de autenticação mais seguros para cenários de produção.
Para criar um access token pessoal Databricks , siga os passos descritos em Criar access tokens pessoal para usuários workspace.
Nos exemplos a seguir, substitua os seguintes marcadores de posição:
<personal-access-token>com o access token pessoal Databricks para o usuário do seu workspace .- Para obter os valores para
<server-hostname>e<http-path>, consulte Configurar uma conexão com o Databricks usando o driver JDBC do Databricks.
As propriedades necessárias são:
AuthMechdefinido como3(autenticação por tokens)UIDdefinido para as strings literaistokenPWDoupassworddefinido para o valor do seu access token pessoal Databricks
Consulte Propriedades de autenticação.
Em uma URL de conexão JDBC:
jdbc:databricks://<server-hostname>:443;httpPath=<http-path>;AuthMech=3;UID=token;PWD=<personal-access-token>
Em código 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);
// ...