Compartilhar via


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

O Driver JDBC do Databricks dá suporte a vários métodos de autenticação, dependendo do 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 para o Driver JDBC do Databricks, use um dos seguintes métodos:

Passagem de token OAuth 2.0

O driver JDBC aceita tokens OAuth na propriedade Auth_AccessToken. Você pode passar um token OAuth do Azure Databricks diretamente ou um JWT (Token Web JSON) de um provedor de identidade externo. Se você passar um token IdP externo, o Azure Databricks o trocará automaticamente por um token do Azure Databricks usando a federação de token.

Nos exemplos abaixo, substitua as seguintes variáveis:

As propriedades necessárias são:

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

Consulte as propriedades de Autenticação.

Para uma URL de conexão JDBC:

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

No 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 token com um provedor de identidade externo

Se você autenticar com um token de um provedor de identidade externo, como Okta, ID do Microsoft Entra, Keycloak ou qualquer IdP compatível com OIDC, o Azure Databricks executará a troca de tokens automaticamente. A configuração JDBC é a mesma que a passagem de token. Passe o token IdP em Auth_AccessToken e o driver gerencia o restante.

Antes de usar a federação de token, você deve:

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

Autenticação U2M (usuário para computador) do OAuth

A autenticação OAuth U2M permite que você entre no Azure Databricks por meio de um navegador. O driver abre uma janela do navegador, você se autentica e o driver recebe um token OAuth. O driver usa o ID de cliente OAuth integrado databricks-sql-jdbc.

Esse tipo de autenticação não tem pré-requisitos. Os tokens têm um tempo de vida padrão de uma hora e são atualizados automaticamente quando expiram.

Observação

O OAuth U2M funciona apenas com aplicativos executados localmente. Ele não funciona com aplicativos baseados em servidor ou na nuvem.

Nos exemplos a seguir, substitua os seguintes espaços reservados:

As propriedades necessárias são:

  • AuthMech definido como 11 (autenticação OAuth 2.0)
  • Auth_Flow definido como 2 (modo baseado em navegador U2M)
  • TokenCachePassPhrase definido como a frase secreta usada para criptografar suas credenciais OAuth U2M armazenadas em cache. Isso impede autenticações repetidas baseadas em navegador. Para recusar o cache de token, defina EnableTokenCache como 0.

Consulte as 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

No 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 M2M (de computador para computador) do OAuth

O driver JDBC dá suporte à autenticação M2M (máquina a máquina) do OAuth usando uma das principais ou identidade a seguir. Consulte como autorizar o acesso de uma entidade de serviço ao Azure Databricks com OAuth.

M2M usando entidade de serviço gerenciada pelo Databricks

Para configurar a autenticação usando uma entidade de serviço gerenciada pelo Databricks:

  1. Crie uma entidade de serviço gerenciada pelo Databricks e atribua-a a contas e workspaces do Databricks.

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

  3. Conceda permissões de acesso a clusters e sql warehouses.

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

    • AuthMech definido como 11 (autenticação OAuth 2.0)
    • Auth_Flow definido como 1 (modo de credenciais do cliente M2M)
    • OAuth2ClientID definido como o valor da ID do aplicativo (cliente) da entidade de serviço
    • OAuth2Secret definido como o segredo do Databricks OAuth da entidade de serviço

    Consulte as propriedades de Autenticação.

M2M usando a entidade de serviço gerenciada do Azure

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

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

  2. Conceda permissões de acesso a clusters e sql warehouses.

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

    • AuthMech definido como 11 (autenticação OAuth 2.0)
    • Auth_Flow definido como 1 (modo de credenciais do cliente M2M)
    • OAuth2ClientID definido para o valor de ID do Aplicativo (cliente) do principal de serviço
    • AzureTenantID definido como a ID de locatário do Azure encontrada no Azure Active Directory
    • OAuth2Secret definido como o segredo do Databricks OAuth da entidade de serviço

    Consulte as 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 sql warehouses.

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

    • AuthMech definido como 11 (autenticação OAuth 2.0)
    • Auth_Flow definido como 3 (modo de identidade gerenciada)
    • OAuth2ClientID definido como a ID do cliente da identidade gerenciada. Isso é necessário somente se você estiver usando uma identidade gerenciada atribuída pelo usuário.
    • Azure_workspace_resource_id definido como a ID de Recurso do Azure do workspace do Databricks

    Consulte as propriedades de Autenticação.

Token de acesso pessoal do Databricks

Observação

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

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

Nos exemplos a seguir, substitua os seguintes espaços reservados:

As propriedades necessárias são:

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

Consulte as 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>

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