Проверка подлинности с помощью Azure DevOps в Azure Databricks

На этой странице объясняется, как настроить конвейеры Azure DevOps для проверки подлинности интерфейса командной строки Databricks и выполнения вызовов API в Azure Databricks.

Перед тем как начать

Выполните следующие действия, прежде чем настроить проверку подлинности Azure DevOps:

  1. Создайте учетную запись службы в Azure и добавьте её в рабочую область Azure Databricks с соответствующими разрешениями. Без этого шага проверка подлинности завершается ошибкой, даже если конвейер настроен правильно.

    Для управляемых принципалов службы Microsoft Entra ID создайте приложение Microsoft Entra ID в Azure, а затем добавьте его в рабочую область. См. раздел "Субъекты-службы " и "Управление субъектами-службами".

  2. Добавьте шаг в конвейер, чтобы установить интерфейс командной строки Databricks на агенте:

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

    Подсказка

    Чтобы закрепить установку ИНТЕРФЕЙСА командной строки на определенную версию вместо использования последней версии, замените main тегом версии (например, v0.224.0).

Выбор метода проверки подлинности

Azure DevOps управляет проверкой подлинности с помощью подключений к службам. Доступ к ним на портале Azure DevOps в разделе Параметры проекта>Подключения службы.

выберите подключения службы в разделе

Для проверки подлинности интерфейса командной строки Databricks используйте тип подключения службы Azure Resource Manager с одним из следующих методов:

Метод Description Лучше всего подходит для
Федерация удостоверений рабочей нагрузки (рекомендуется) Использует OpenID Connect (OIDC) для получения токенов. Требуется настроить созданные в Azure DevOps издателя и идентификатор субъекта с использованием основной службы. Безопасная, без секретов проверка подлинности
Учетная запись службы с секретом клиента Использует идентификатор клиента и секрет для создания краткосрочных токенов OAuth. Требуется создать секрет для учетной записи службы. Сценарии, требующие общих учетных данных в задачах
Управляемая идентичность Использует удостоверение, назначенное виртуальной машине или контейнеру, на котором выполняется конвейер. Применимо только для локальных runners. См. документацию по Azure. Агенты с размещением на собственных серверах с назначенными идентичностями

Замечание

Используйте федерацию удостоверений рабочей нагрузки, когда это возможно. Он не полагается на секреты, поэтому он более безопасный, чем другие методы. Это работает автоматически с задачей AzureCLI@2 без ручной настройки. См Создание подключения службы, которое использует федерацию удостоверений рабочей нагрузки.

Настройка проверки подлинности Azure CLI

Интерфейс командной строки Databricks использует Azure CLI для проверки подлинности по умолчанию. Все команды CLI Databricks должны выполняться внутри AzureCLI@2 задачи, что означает, что каждая задача проходит проверку подлинности независимо. Это представляет некоторую задержку, но требует минимальной конфигурации.

- 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

Обновите следующие значения:

  • azureSubscription: имя подключения службы Azure Resource Manager.
  • useGlobalConfig:Обязательно. Гарантирует, что вложенные процессы, созданные командами databricks bundle, могут получить доступ к аутентифицированному сеансу.
  • DATABRICKS_HOST: задайте этот параметр, если он еще не определен в конфигурации пакета или предыдущем шаге.

Настройка проверки подлинности секрета клиента

Используйте секрет клиента, если необходимо совместно использовать учетные данные для нескольких задач или когда проверка подлинности Azure CLI добавляет слишком много задержки.

Этот подход извлекает сведения о проверке подлинности из подключения к службе в одной задаче, а затем экспортирует их в виде переменных среды с областью задания для последующих задач.

- 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

Заметка:

  • Ключ addSpnToEnvironment предоставляет доступ к servicePrincipalId, servicePrincipalKey и tenantId встроенному скрипту.
  • Команды ##vso преобразуют переменные из области задачи в область задания, которые интерфейс командной строки Databricks распознает автоматически.
  • По умолчанию ARM_CLIENT_SECRET доступен для всех последующих шагов. Чтобы ограничить доступ, добавьте issecret=true его в определение переменной, а затем явно передайте его каждому шагу, которому он нужен. Секрет маскируется в журналах независимо от этого параметра.

Полный пример см. в статье Авторизация основного объекта службы Microsoft Entra для доступа к папкам Git.

Настройка проверки подлинности управляемого удостоверения

Проверка подлинности управляемого удостоверения зависит от конфигурации виртуальной машины или контейнера, а не задач конвейера. Этот метод не требует AzureCLI@2 задачи.

- 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

Обновите следующие значения:

  • DATABRICKS_AZURE_RESOURCE_ID: найдите это значение в разделе "Свойства " рабочей области на портале Azure.
  • ARM_CLIENT_ID: идентификатор клиента для управляемой идентификации.
  • DATABRICKS_HOST: необязательно. Если значение не задано, оно выводится из DATABRICKS_AZURE_RESOURCE_ID.

Управляемое удостоверение должно иметь роль Участника в рабочей области Azure Databricks.

Дополнительные ресурсы