Partilhar via


Autenticar com o Azure DevOps no Azure Databricks

Esta página explica como configurar os seus pipelines Azure DevOps para autenticar a CLI Databricks e fazer chamadas API para Azure Databricks.

Antes de começar

Complete estes passos antes de configurar a autenticação Azure DevOps:

  1. Crie o principal de serviço no Azure e adicione-o ao seu espaço de trabalho Azure Databricks com as permissões apropriadas. Sem este passo, a autenticação falha mesmo que o seu pipeline esteja configurado corretamente.

    Para os principais serviços geridos do Microsoft Entra ID, crie uma aplicação Microsoft Entra ID no Azure e adicione-a ao seu espaço de trabalho. Consulte os principais de serviço e Gerir os principais de serviço.

  2. Adicione uma etapa ao seu pipeline para instalar a CLI Databricks no agente:

    - script: |
        curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
      displayName: 'Install Databricks CLI'
    

    Sugestão

    Para fixar a instalação da CLI a uma versão específica em vez de usar a mais recente, substitua main por uma etiqueta de versão (por exemplo, v0.224.0).

Escolha um método de autenticação

O Azure DevOps gere a autenticação através de ligações de serviço. Acede-os no portal Azure DevOps, em Definições>do Projeto, Ligações de Serviço.

Selecione Conexões de serviço em Configurações do projeto no Azure DevOps

Para autenticar a CLI do Databricks, utilize o tipo de ligação de serviço Azure Resource Manager com um destes métodos:

Método Description Melhor para
Federação de identidade de carga de trabalho (recomendada) Utiliza OpenID Connect (OIDC) para adquirir tokens. Requer configurar o emissor gerado por Azure DevOps e o identificador de assunto com o seu principal de serviço. Autenticação segura e sem segredos
Principal de serviço com segredo do cliente Utiliza um ID de cliente e um segredo para gerar tokens OAuth de curta duração. Requer gerar um segredo para o principal do serviço. Cenários que requerem credenciais partilhadas entre tarefas
Identidade gerenciada Utiliza a identidade atribuída à VM ou contentor que executa o pipeline. Só aplicável a corredores auto-hospedados. Consulte a documentação do Azure. Corredores auto-hospedados com identidades atribuídas

Observação

Use a federação de identidades de carga de trabalho sempre que possível. Não depende de segredos, por isso é mais seguro do que outros métodos. Funciona automaticamente com a AzureCLI@2 tarefa, sem configuração manual. Veja Criar uma ligação de serviço que utilize a federação da identidade da carga de trabalho.

Configurar autenticação Azure CLI

A CLI Databricks utiliza por defeito Azure CLI para autenticação. Todos os comandos CLI do Databricks devem ser executados dentro de uma AzureCLI@2 tarefa, o que significa que cada tarefa se autentica de forma independente. Isto introduz alguma latência, mas requer configuração mínima.

- task: AzureCLI@2
  inputs:
    azureSubscription: <your-service-connection-name>
    useGlobalConfig: true
    scriptType: bash
    scriptLocation: inlineScript
    inlineScript: |
      export DATABRICKS_HOST=https://adb-<workspace-id>.<region>.azuredatabricks.net
      databricks bundle deploy

Atualize estes valores:

  • azureSubscription: O nome da sua ligação ao serviço Azure Resource Manager.
  • useGlobalConfig:Necessário. Garante que os subprocessos gerados por databricks bundle comandos possam aceder à sessão autenticada.
  • DATABRICKS_HOST: Defina isto se ainda não estiver definido na sua configuração de bundle ou num passo anterior.

Configurar autenticação de segredos do cliente

Utilize um segredo de cliente quando precisar partilhar credenciais entre várias tarefas ou quando a autenticação do Azure CLI adicionar demasiada latência.

Esta abordagem recupera detalhes de autenticação da ligação de serviço numa tarefa e exporta-os como variáveis de ambiente com âmbito de trabalho para tarefas subsequentes.

- task: AzureCLI@2
  inputs:
    azureSubscription: <your-service-connection-name>
    addSpnToEnvironment: true
    scriptType: bash
    scriptLocation: inlineScript
    inlineScript: |
      echo "##vso[task.setvariable variable=ARM_CLIENT_ID]${servicePrincipalId}"
      echo "##vso[task.setvariable variable=ARM_CLIENT_SECRET]${servicePrincipalKey}"
      echo "##vso[task.setvariable variable=ARM_TENANT_ID]${tenantId}"

- script: |
    export DATABRICKS_HOST=https://adb-<workspace-id>.<region>.azuredatabricks.net
    databricks bundle deploy

Observação:

  • A addSpnToEnvironment chave expõe servicePrincipalId, servicePrincipalKey, e tenantId ao script inline.
  • Os ##vso comandos promovem variáveis com escopo de tarefa para variáveis com escopo de trabalho que a CLI Databricks reconhece automaticamente.
  • Por padrão, ARM_CLIENT_SECRET está acessível a todos os passos subsequentes. Para restringir o acesso, adiciona issecret=true à definição da variável e depois passa-a explicitamente a cada etapa que a necessite. O segredo está mascarado nos logs, independentemente desta configuração.

Para um exemplo completo, consulte Autorizar um principal de serviço Microsoft Entra para aceder a pastas Git.

Configurar autenticação de identidade gerida

A autenticação de identidade gerida baseia-se na configuração da VM ou do contentor em vez de tarefas de pipeline. Este método não requer essa AzureCLI@2 tarefa.

- script: |
    export DATABRICKS_AZURE_RESOURCE_ID=/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Databricks/workspaces/<workspace-name>
    export ARM_CLIENT_ID=<managed-identity-client-id>
    export ARM_USE_MSI=true
    export DATABRICKS_HOST=https://adb-<workspace-id>.<region>.azuredatabricks.net
    databricks current-user me

Atualize estes valores:

  • DATABRICKS_AZURE_RESOURCE_ID: Encontre este valor em Propriedades para o seu espaço de trabalho no portal Azure.
  • ARM_CLIENT_ID: O ID do cliente da identidade gerida.
  • DATABRICKS_HOST: Opcional. Se não for definido, o valor é inferido a partir de DATABRICKS_AZURE_RESOURCE_ID.

A identidade gerida deve ter o papel de Contribuidor no workspace Azure Databricks.

Ver também