Use uma entidade de serviço do Microsoft Entra para autenticar o acesso às pastas Git do Azure Databricks

Saiba como configurar o acesso autenticado às pastas Git do Azure Databricks hospedadas pelo Azure DevOps (Azure Repos) com uma entidade de serviço do Microsoft Entra.

Se você tiver pastas Git do Databricks em seu projeto Databricks que são apoiadas por repositórios Git do Azure Repos e quiser gerenciá-las na sua automação, você pode usar as informações deste artigo para configurar a autenticação usando um entidade de serviço do Microsoft Entra e Azure DevOps. Depois de concluir essa tarefa, você terá uma credencial Git do Databricks autenticada que poderá ser usada na sua automação.

Por que usar o Microsoft Entra e não um PAT?

No passado, os Tokens de Acesso Pessoa (PATs) eram a forma preferida de autenticação ao chamar uma API que exige acesso e permissões específicos aos recursos. Esses tokens de portador representavam um nome de usuário e uma senha e exigiam rotação regular para minimizar o risco de segurança que apresentavam. Os tokens de acesso do Microsoft Entra ID resolvem essa preocupação ao gerenciar automaticamente a rotação desses tokens a cada hora, e o Databricks os recomenda como uma melhor prática ao trabalhar com recursos do Azure. Ao criar uma entidade de serviço do Microsoft Entra, você pode gerenciar as permissões concedidas no acesso a esses recursos sem usar uma conta de usuário do Microsoft Azure.

Requisitos

Você deve ter:

  • Acesso a um projeto Azure DevOps com um repositório Git do Azure Repos conectado a uma pasta Git do Databricks.
  • Permissões em sua conta do Azure para criar uma entidade de serviço do MS Entra.
  • A CLI do Azure instalada.
  • A CLI do Databricks instalada.

Etapa 1: Criar uma entidade de serviço do Microsoft Entra

Você pode ignorar essa etapa se já tiver uma entidade de serviço do Microsoft Entra configurada.

Para criar uma entidade de serviço do Microsoft Entra, siga as etapas na documentação do Microsoft Azure: Registrar um aplicativo do Microsoft Entra e criar uma entidade de serviço. Na seção "Configurar Autenticação" deste artigo, ignore as duas primeiras opções e siga as etapas na "Opção 3: Criar um segredo de cliente."

Depois de configurá-lo, você terá:

  • Um segredo do cliente. Ele se apresentará como uma longa cadeia de caracteres de aparência aleatória.
    • Uma ID de entidade de serviço. Esse é o nome exclusivo que você atribuiu à entidade de serviço do MS Entra. Como melhor prática, o nome também deve conter informações que indiquem como e quando ele deve ser usado (por exemplo, Databricks_CICD_SP).

(Você pode ignorar a interface de redirecionamento opcional no diálogo de configuração do MS Entra, pois ela não será usada nesta configuração.)

Copie essas informações em algum lugar, pois você as usará em etapas futuras. Depois de concluir com êxito o processo nesta documentação, proteja ou exclua essas informações.

Etapa 2: Configurar as permissões do Azure DevOps para a entidade de serviço do MS Entra

Primeiro, você deve conceder permissão à entidade de serviço do MS Entra para acessar seus recursos do Azure DevOps. Para fazer isso, você deve usar o portal do Azure DevOps.

  1. Faça logon na sua conta do Azure DevOps e navegue até seu projeto.

  2. Em Configurações do Projeto>Permissões, clique em Leitores.

    O conteúdo do painel Membros em Permissões nas Configurações do Projeto do Azure DevOps

  3. Clique na guia Membros, clique em Adicionar e adicione o nome da entidade de serviço do MS Entra que você criou.

  4. No console, volte ao nível da organização do Azure DevOps e clique em Configurações da organização na parte inferior do painel esquerdo.

  5. Clique em Usuários>Adicionar usuário e configure o acesso à sua entidade de serviço da seguinte forma:

    • Adicione a entidade de serviço do MS Entra usando a ID que você criou anteriormente.
    • Configure o acesso da entidade de serviço para o nível mínimo necessário para realizar operações no Azure Repos. Normalmente, as permissões de nível Básico são suficientes. Se não tiver certeza de qual nível usar, entre em contato com o administrador da sua organização no Azure DevOps.
    • Adicionar a entidade de serviço ao seu projeto do Azure DevOps.
    • Atribua a entidade de serviço ao grupo Colaboradores do Projeto.

    O conteúdo do painel Usuários nas Configurações da Organização do Azure DevOps

Etapa 3: Atribuir permissões à entidade de serviço no Azure Databricks

Você também deve atribuir permissões no Azure Databricks à sua entidade de serviço do Microsoft Entra.

  1. Faça logon no console de administração da conta do Azure Databricks para sua conta.
  2. Clique em Usuários e grupos.
  3. Clique na guia Entidades de serviço e depois em Adicionar entidade de serviço. A guia Entidades de Serviço em Usuários e grupos no console de administração da conta do Databricks
  4. Na página Adicionar entidade de serviço, clique em Microsoft Entra ID gerenciado e adicione a ID do aplicativo Microsoft Entra e o nome da entidade de serviço da "Etapa 1: Criar uma entidade de serviço do Microsoft Entra." Clique em Adicionar quando terminar. A caixa de diálogo Adicionar entidade de serviço no console de administração da conta do Databricks
  5. Clique na entidade de serviço do Microsoft Entra adicionada para ver a guia Informações da entidade de segurança.
  6. Clique em Gerar segredo no canto inferior esquerdo da página para gerar um segredo OAuth. Esse segredo permite autenticar as chamadas à API do Azure Databricks usando a CLI do Databricks.
  7. Copie a cadeia de caracteres do segredo e a ID do cliente e clique em Concluído. Você usará ambos na próxima etapa. Selecione Concluído. A caixa de diálogo Gerar segredo no console de administração da conta do Databricks
  8. Na barra lateral esquerda, clique em Espaços de trabalho, escolha o espaço de trabalho e clique na guia Permissões.
  9. Conceda permissões de "Usuário" á sua entidade de serviço e clique em Adicionar permissões.

Importante

Se a guia Permissões estiver acinzentada, seu Workspace do Azure Databricks não será atribuído a um metastore do Catálogo do Unity. Entre em contato com o administrador do Databricks.

Em seguida, crie sua credencial Git do Azure Databricks.

Etapa 4: Cria um token de acesso ao Microsoft Entra ID e armazená-lo como uma credencial Git do Azure Databricks.

Observação

Esta etapa requer o uso das CLIs do Azure e do Databricks.

Para se autenticar no Azure Databricks, você deve ter um perfil de configuração (.databrickscfg) configurado com o segredo do OAuth que você criou na etapa anterior. Para definir essa configuração, abra o arquivo .databrickscfg no editor e adicione o seguinte ao arquivo:

[DEFAULT]
host = https://<workspace-url>.azuredatabricks.net/
client_id = <service principal ID>
client_secret = <Databricks OAuth token value>

Onde host é a URL do seu Workspace do Databricks, client_id é a ID da entidade de serviço do Microsoft Entra e client_secret é o segredo do cliente OAuth que você criou na "Etapa 3: Atribuir permissões à entidade de serviço no Azure Databricks."

Agora você deve ter os seguintes valores para fornecer às chamadas à CLI nesse processo:

  • A ID do cliente da entidade de serviço das Etapas 1 ou 3, elas devem ser as mesmas. (sp_id nos exemplos da CLI a seguir.)
  • O nome da entidade de serviço da Etapa 1. (sp_name)
  • A cadeia de caracteres do segredo do cliente da entidade de serviço da Etapa 1. (sp_secret)
  • O nome da sua organização do Azure DevOps. (devops_org)
  • O nome de seu projeto do Azure DevOps. (devops_project)
  • Nome do seu repositório do Azure Repos. (devops_repo)

Além disso, você precisa da ID do locatário do Azure (tenant_id nos exemplos a seguir) para sua assinatura do Azure. Siga estas instruções para obtê-lo no portal do Azure.

Agora, você pode criar uma credencial Git a partir da CLI do Azure.

  1. Abra uma janela de linha de comando com acesso às CLIs do Azure e do Databricks.
  2. Execute o seguinte comando da CLI do Azure para fazer logon como a entidade de serviço do Microsoft Entra: az login --allow-no-subscriptions --service-principal -u $sp_id -p $sp_secret --tenant $tenant_id
  3. Como a entidade de serviço do Microsoft Entra, solicite um token de acesso do Microsoft Entra ID e atribua-o a uma variável: ENTRA_ID_TOKEN=$(az account get-access-token --resource "499b84ac-1321-427f-aa17-267ca6975798" --query "accessToken" --output tsv)
  4. Use o token de acesso para criar uma credencial Git para acesso ao Azure Databricks, usando os níveis de permissão que você configurou para ele: databricks git-credentials create azureDevOpsServices --personal-access-token $ENTRA_ID_TOKEN --git-username $sp_name
  5. Por fim, crie uma pasta Git usando a entidade de serviço do Microsoft Entra: databricks repos create \https://$sp_name@dev.azure.com/$devops_org/$devops_project/_git/$devops_repo

A pasta Git correspondente a este repositório do Azure DevOps agora está disponível no seu Workspace do Azure Databricks. Você pode fornecer a credencial Git para gerenciá-la a partir do seu código usando as APIs REST do Databricks Repos ou a CLI do Databricks.

Agora você aprendeu como gerar um token de acesso do Microsoft Entra ID com escopo para o Azure DevOps e armazená-lo como uma credencial Git do Databricks.

Práticas recomendadas

O token de acesso do Entra ID tem vida curta, portanto, seu pipeline deve atualizar a credencial Git do Databricks usando git-credentials update. Em seguida, você pode acionar uma pull request a partir dele usando databricks repos update.

Importante

Medidas de segurança adicionais são necessárias em um ambiente de produção. Em um ambiente de produção, você deve armazenar o segredo do cliente da entidade de serviço e o token OAuth do Databricks em um armazenamento seguro de segredos, como o Azure Key Vault.

Confira também