DEV Community

Cover image for Criando um Service Principal para acesso ao SQL Warehouses Databricks via DBeaver
Airton Lira junior
Airton Lira junior

Posted on

Criando um Service Principal para acesso ao SQL Warehouses Databricks via DBeaver

Neste artigo vou ensinar como se conectar a um cluster serverless do SQL Warehouse do Databricks utilizando as credenciais de um SP - Service Principal do Databricks. Atualmente, não encontrei nenhum tutorial fácil de como fazer isso e tive que fazer um descompile do arquivo JAR do driver de conexão do Databricks para entender se é possível ou não, visto que, na documentação oficial do Databricks, não fica claro se utilizando o clientId, clientSecret e token é possível se conectar pelo DBeaver. O caminho mais direto e fácil foi via PAT - Personal Access Token. Portanto, agora vou demonstrar como realizar a conexão:

Antes de tudo você vai precisar:

  • Dbeaver mais atualizado possivel.
  • Ter feito o download do driver databricksJDBC.
  • Acesso de administrador ao workspace.

Criando um Service Principal e obtendo as credenciais

Acesse sua conta Databricks e o workspace desejado onde deseja criar o seu cluster warehouse. Após isso, selecione a parte de "Settings" no canto superior direito e depois clique em "Identity and Access" e "Manage" em Service Principals:

Image description

Após isso, crie um SP com nome de sua preferência e, em seguida, clique no mesmo que foi criado e adicione, na parte de "Configurations", as seguintes opções:

  • Databricks SQL access
  • Workspace access

Obtenha também as "Secrets" na aba de Secrets.

Atribuindo o SP ao cluster SQL Warehouses

Na tela do "SQL Warehouses", selecione o cluster que deseja e siga para a aba "Connection details". Esta parte é muito importante, por isso, copie as seguintes informações fornecidas:

  • Server hostname.
  • HTTP path.
  • OAuth URL.

O JDBC URL que ele fornece não vai funcionar para o Databricks, portanto, ignore-o e copie apenas as informações citadas acima.
O JDBC URL que ele fornece não vai funcionar para o databricks por tanto ignore, apenas copie as informações citadas acima.

Montando a conexão no DBeaver diretamente para o SQL Warehouses

Abra seu DBeaver e vamos agora configurar seu driver de conexão, que será o arquivo .JAR baixado no site do Databricks conforme mencionado no início:

Image description

Clique na opção "Novo" e informe na primeira parte as seguintes informações:

Image description

Agora, na segunda aba de "Bibliotecas", clique em "Adicionar arquivo" e navegue até o diretório onde se encontra seu arquivo .JAR e anexe-o. Após isso, clique em "OK" (não é necessário alterar ou adicionar nenhum parâmetro no driver).

Após criar o novo tipo de conexão, vamos à parte mais importante, que é a criação da conexão para acessar o cluster. Clique em:

Image description

Na tela seguinte, digite "databricks" e depois clique em "Next". Na tela seguinte, marque a opção "Salvar senha" e deixe em branco tanto o usuário como a senha. A URL JDBC deve ser montada da seguinte forma:

jdbc:databricks:<seu hostname>:443;httpPath=<HTTP path do Cluster>;AuthMech=11;Auth_Flow=1;httpPath=<HTTP path do Cluster>;AuthMech=11;Auth_Flow=1;OAuth2ClientId=<Chave clientId>;OAuth2Secret=<Chave Client secret;OAuth2TokenEndpoint=<OAuth URL fornecido no connection details do cluster e adicione no final o path /v1/token>

Um exemplo fictícios:

jdbc:databricks:abc-123.cloud.databricks.com:443;httpPath=/sql/protocolv1/o/1234567890123456/0123-456789-abcd123;AuthMech=11;Auth_Flow=1;OAuth2ClientId=abcde12345;OAuth2Secret=secretKey12345;OAuth2TokenEndpoint=https://abc-123.cloud.databricks.com/oauth2/v1/token

Todas as informações acima você consegue conforme dito anteriormente, na criação do seu SP e na parte do "Connection details", sendo o único detalhe que o OAuth URL deve ficar com um path adicional não especificado na tela do Databricks, que é /v1/token. Por ultimo vai nas propriedades do driver e clique em um botão de + logo abaixo e adicione o parametro SSL com valor 1 SSL=1.

Após isso, basta clicar em "Testar conexão" e será mostrada uma imagem conforme abaixo

Image description

Se tudo estiver certo, clique em "OK". Agora, você pode executar uma query para validar, além da permissão de conexão, a permissão de consulta, por exemplo, um SHOW TABLES;.

É isso, pessoal! Espero ter ajudado quem vai ter essa necessidade e encontre esse artigo bem direto e fácil para configurar.

Meu LinkedIn para networking e dúvidas: https://www.linkedin.com/in/airton-lira-junior-6b81a661/

databricks #dbeaver #databrickdbeaver #sqlwarehouse #jdbcdatabricks #databricksdriver #databricks #spark

Top comments (0)