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

2 1 1 1

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

Billboard image

Imagine monitoring that's actually built for developers

Join Vercel, CrowdStrike, and thousands of other teams that trust Checkly to streamline monitor creation and configuration with Monitoring as Code.

Start Monitoring

Top comments (0)

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay