Поделиться через


Включение федерации идентификации для Azure DevOps Pipelines

Федерация токенов OAuth Databricks, также известная как OpenID Connect (OIDC), позволяет автоматизированным рабочим процессам, выполняющимся за пределами Databricks, безопасно обращаться к Databricks без необходимости хранения секретов Databricks. См. сведения о проверке подлинности доступа к Azure Databricks с помощью федерации токенов OAuth.

Чтобы включить федерацию удостоверений рабочей нагрузки для Azure DevOps Pipelines, выполните следующие шаги.

  1. Создание политики федерации
  2. Настройка YAML конвейера Azure DevOps

После включения федерации удостоверений рабочей нагрузки пакеты SDK Databricks и интерфейс командной строки Databricks автоматически извлекают токены удостоверения рабочей нагрузки из Azure DevOps Pipelines и обменивают их на токены OAuth Databricks.

Создание политики федерации

Сначала создайте настраиваемую политику федерации идентичности нагрузки. Инструкции см. в разделе "Настройка политики федерации субъекта-службы". Для Azure DevOps задайте следующие значения для политики:

  • URL-адрес издателя:https://vstoken.dev.azure.com/<org_id>, где <org-id> — это GUID вашей организации Azure DevOps
  • Аудитории:api://AzureADTokenExchange
  • Тема:p://<org-name>/<project-name>/<pipeline-name> где <org-name> имя вашей организации Azure DevOps— <project-name> это имя проекта Azure DevOps и <pipeline-name> имя конвейера Azure DevOps.

Например, следующая команда CLI Databricks создает политику федерации для идентификатора организации 7f1078d6-b20d-4a20-9d88-05a2f0d645a3 и числового идентификатора субъекта-службы Databricks 5581763342009999.

databricks account service-principal-federation-policy create 5581763342009999 --json '{
  "oidc_policy": {
	"issuer": "https://vstoken.dev.azure.com/7f1078d6-b20d-4a20-9d88-05a2f0d645a3",
	"audiences": [
  	    "api://AzureADTokenExchange"
	],
	"subject": "p://my-org/my-project/my-pipeline"
  }
}
'

Настройка YAML конвейера Azure DevOps

Затем настройте YAML-файл Azure DevOps Pipeline. Задайте следующие переменные среды:

  • DATABRICKS_AUTH_TYPE: azure-devops-oidc
  • DATABRICKS_HOST: URL-адрес рабочей области Databricks
  • DATABRICKS_CLIENT_ID: идентификатор субъекта-службы (приложения)
  • SYSTEM_ACCESSTOKEN: сопоставьте переменную конвейера $(System.AccessToken) с этой переменной среды
trigger: none
pool: test # my self-hosted pool name

variables:
  DATABRICKS_HOST: https://my-workspace.cloud.databricks.com/
  DATABRICKS_AUTH_TYPE: azure-devops-oidc
  DATABRICKS_CLIENT_ID: a1b2c3d4-ee42-1eet-1337-f00b44r

steps:
  - script: |
      databricks current-user me
    displayName: 'Display Databricks current user information'
    env:
      SYSTEM_ACCESSTOKEN: $(System.AccessToken)