Partilhar via


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

O controlador JDBC Databricks suporta múltiplos 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 ligação necessárias.

Para configurar a autenticação do Driver JDBC Databricks, utilize um dos seguintes métodos:

Passagem de token OAuth 2.0

O driver JDBC aceita tokens OAuth na propriedade Auth_AccessToken. Pode passar diretamente um token OAuth do Azure Databricks ou um JSON Web Token (JWT) de um fornecedor de identidade externo. Se passar um token IdP externo, o Azure Databricks troca-o automaticamente por um token Azure Databricks usando federação de tokens.

Nos exemplos seguintes, substitua os seguintes marcadores de posição:

As propriedades exigidas são:

  • AuthMech definido para 11 (autenticação OAuth 2.0)
  • Auth_Flow definir para 0 (modo de passagem de token)
  • Auth_AccessToken definir para um token Azure Databricks OAuth ou um IdP JWT externo

Ver Propriedades de autenticação.

Para uma URL de ligaçã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 fornecedor de identidade externo

Se autenticar com um token de um fornecedor de identidade externo como Okta, Microsoft Entra ID, Keycloak ou qualquer IdP compatível com OIDC, o Azure Databricks realiza automaticamente a troca de tokens. A configuração JDBC é igual à passagem de tokens. Passe o token IdP em Auth_AccessToken e o driver trata do resto.

Antes de usar a federação de tokens, deverá:

  1. Crie uma política de federação na sua conta Azure Databricks que confie no IdP externo. Uma política de federação especifica a URL do emissor, os valores esperados dos destinatários e a reivindicação JWT usada para mapear para um utilizador do Azure Databricks. Consulte Autenticar o acesso ao Azure Databricks usando a federação de tokens OAuth.
  2. Verifique se existe um utilizador correspondente do Azure Databricks. O email do utilizador ou outro identificador deve corresponder ao subject_claim valor no JWT.
  3. Verifique se o endpoint de descoberta OIDC do IdP é acessível publicamente para que o Azure Databricks possa obter chaves de assinatura para verificar o token.

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

A autenticação OAuth U2M permite-lhe iniciar sessão no Azure Databricks através de um navegador. O driver abre uma janela do navegador, tu autenticas-te e o driver recebe um token OAuth. O driver utiliza o ID de cliente OAuth incorporado databricks-sql-jdbc.

Este tipo de autenticação não tem pré-requisitos. Os tokens têm uma vida útil padrão de uma hora e atualizam-se automaticamente quando expiram.

Observação

O OAuth U2M funciona apenas com aplicações executadas localmente. Ele não funciona com aplicativos baseados em servidor ou em nuvem.

Nos exemplos seguintes, substitua os seguintes placeholders:

As propriedades exigidas são:

  • AuthMech definido para 11 (autenticação OAuth 2.0)
  • Auth_Flow definido para 2 (modo baseado em navegador U2M)
  • TokenCachePassPhrase definido como a frase de acesso utilizada para encriptar as suas credenciais OAuth U2M armazenadas em cache. Isso evita autenticações repetidas baseadas em navegador. Para desativar o cache de tokens, defina EnableTokenCache como 0.

Ver Propriedades de autenticação.

Numa URL de ligaçã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 entre máquinas (M2M)

O driver JDBC suporta autenticação OAuth máquina-a-máquina (M2M) usando um dos seguintes princípios ou identidade. Consulte Autorizar o acesso da entidade de serviço ao Azure Databricks com OAuth.

M2M usando o principal de serviço gerido Databricks

Para configurar a autenticação usando um principal de serviço gerido pelo Databricks:

  1. Crie um principal de serviço gerido do Databricks e atribua-o a contas e áreas de trabalho do Databricks.

  2. Crie um segredo OAuth do Databricks para a entidade principal de serviço. Ver Gerar manualmente tokens de acesso OAuth M2M.

  3. Conceda permissões de acesso a clusters e armazéns SQL.

  4. Adicione as seguintes propriedades ao URL da conexão JDBC existente ou ao objeto java.util.Properties:

    • AuthMech definido para 11 (autenticação OAuth 2.0)
    • Auth_Flow definido para 1 (modo credenciais de cliente M2M)
    • OAuth2ClientID definido para o valor do ID do cliente (aplicação) do principal de serviço
    • OAuth2Secret definido para o secreto Databricks OAuth do principal de serviço

    Ver Propriedades de autenticação.

M2M usando o serviço gerido do Azure

Para configurar a autenticação usando um principal de serviço gerido do Azure:

  1. Crie um segredo OAuth do Databricks para a entidade principal de serviço. Ver Gerar manualmente tokens de acesso OAuth M2M.

  2. Conceda permissões de acesso a clusters e armazéns SQL.

  3. Adicione as seguintes propriedades ao URL da conexão JDBC existente ou ao objeto java.util.Properties:

    • AuthMech definido para 11 (autenticação OAuth 2.0)
    • Auth_Flow definido para 1 (modo credenciais de cliente M2M)
    • OAuth2ClientID definido para o valor ID de Aplicação (cliente) do principal de serviço
    • AzureTenantID definido para o Azure tenant ID encontrado no Azure Active Directory
    • OAuth2Secret definido para o secreto Databricks OAuth do principal de serviço

    Ver Propriedades de autenticação.

M2M usando identidades gerenciadas do Azure

Para configurar a autenticação usando identidades gerenciadas do Azure:

  1. Configure identidades gerenciadas para seus recursos do Azure.

  2. Conceda permissões de acesso a clusters e armazéns SQL.

  3. Adicione as seguintes propriedades ao URL da conexão JDBC existente ou ao objeto java.util.Properties:

    • AuthMech definido para 11 (autenticação OAuth 2.0)
    • Auth_Flow configurado para 3 (modo de identidade gerida)
    • OAuth2ClientID definido para o ID do Cliente da identidade gerida. Isto só é necessário se estiver a usar uma identidade gerida atribuída pelo utilizador.
    • Azure_workspace_resource_id defina para o ID de recurso do Azure do seu espaço de trabalho do Databricks

    Ver Propriedades de autenticação.

Token de acesso pessoal Databricks

Observação

Os tokens de acesso pessoal são melhores para testar cenários. O Azure Databricks recomenda tipos de autenticação mais seguros para cenários de produção.

Para criar um token de acesso pessoal Databricks, siga os passos em Criar tokens de acesso pessoal para utilizadores de espaços de trabalho.

Nos exemplos seguintes, substitua os seguintes placeholders:

As propriedades exigidas são:

  • AuthMech definir para 3 (autenticação de token)
  • UID definido para a cadeia literal token
  • PWD ou password definido para o valor do token de acesso pessoal do seu Databricks

Ver Propriedades de autenticação.

Numa URL de ligaçã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);
// ...