Управление папками Azure Databricks Git с помощью Terraform

Управление папками Azure Databricks Git в полностью автоматизированной среде с помощью Terraform и поставщика Databricks Terraform.

В этом разделе рассматриваются два подхода к проверке подлинности:

  • Проверка подлинности личного маркера доступа (PAT): Использует Личные маркеры доступа Git для доступа к репозиторию
  • Служебный принципал с федеративными учетными данными: Использует служебные принципалы Azure с токенами OpenID Connect (OIDC) для безопасной аутентификации без использования токенов в репозиториях Azure DevOps.

Проверка подлинности с помощью личных токенов доступа

Этот подход использует персональные токены доступа Git для аутентификации репозитория с сервисным принципалом.

Terraform оценивает конфигурации провайдера перед созданием любых ресурсов, поэтому вы не можете ссылаться на значение ресурса, например токен от имени (OBO), в блоке провайдера в той же конфигурации Terraform. Чтобы обойти это ограничение, разбейте настройку на две отдельные конфигурации.

  • Часть 1. Создание субъекта-службы: создает субъект-службу и создает маркер OBO.
  • Часть 2. Настройка учетных данных Git. Использует маркер OBO для проверки подлинности в качестве субъекта-службы, а затем настраивает учетные данные Git и создает папку Git.

Часть 1. Создание субъекта-службы

setup/ Создайте каталог с файломmain.tf.

Шаг 1. Объявление поставщика и переменных

terraform {
  required_providers {
    databricks = {
      source = "databricks/databricks"
    }
  }
}

variable "databricks_host" {}

variable "databricks_admin_token" {
  sensitive = true
}

variable "service_principal_name" {}

provider "databricks" {
  host  = var.databricks_host
  token = var.databricks_admin_token
}

Шаг 2. Создание субъекта-службы

Выберите отображаемое имя субъекта-службы. Terraform создаёт объект с этим именем.

resource "databricks_service_principal" "sp" {
  display_name = var.service_principal_name
}

Шаг 3. Создание и экспорт маркера авторизации

Создайте токен OBO для пользователя службы и экспортируйте его для использования в следующей конфигурации.

resource "databricks_obo_token" "this" {
  application_id   = databricks_service_principal.sp.application_id
  comment          = "PAT on behalf of ${databricks_service_principal.sp.display_name}"
  lifetime_seconds = 3600
}

output "obo_token_value" {
  value     = databricks_obo_token.this.token_value
  sensitive = true
}

Шаг 4. Применение конфигурации

Из каталога setup/ инициализируйте, примените и получите токен:

terraform init
terraform apply
terraform output -raw obo_token_value

Шаг 5. Подготовка переменных для части 2

Создайте файл в каталоге terraform.tfvarsgit-credentials/ с маркером OBO и другими необходимыми значениями:

databricks_host           = "https://<your-workspace>.cloud.databricks.com"
obo_token_value           = "<token from previous step>"
git_username              = "<your-git-username>"
git_provider              = "<gitHub|gitLab|azureDevOpsServices|...>"
git_personal_access_token = "<your-git-PAT>"
repo_url                  = "https://github.com/<your-org>/<your-repo>.git"

Note

Добавьте terraform.tfvars в .gitignore файл, чтобы избежать фиксации конфиденциальных значений в элементе управления версиями. Terraform автоматически считывает этот файл при запуске terraform apply.

Часть 2. Настройка учетных данных Git

Создайте отдельный git-credentials/ каталог с собственным main.tf файлом.

Шаг 1. Объявление поставщика и переменных

Передайте маркер OBO из выходных setup/ данных конфигурации как obo_token_value чтобы пройти проверку подлинности в качестве учетной записи службы.

terraform {
  required_providers {
    databricks = {
      source = "databricks/databricks"
    }
  }
}

variable "databricks_host" {}

variable "obo_token_value" {
  sensitive = true
}

variable "git_username" {}
variable "git_provider" {}

variable "git_personal_access_token" {
  sensitive = true
}

variable "repo_url" {}

provider "databricks" {
  alias = "sp"
  host  = var.databricks_host
  token = var.obo_token_value
}

Шаг 2. Настройка учетных данных Git

Задайте учетные данные Git, которые субъект-служба будет использовать для доступа к репозиторию Git.

resource "databricks_git_credential" "sp" {
  provider              = databricks.sp
  git_username          = var.git_username
  git_provider          = var.git_provider
  personal_access_token = var.git_personal_access_token
}

Шаг 3. Создание папки Git

resource "databricks_repo" "this" {
  provider   = databricks.sp
  url        = var.repo_url
  depends_on = [databricks_git_credential.sp]
}

Шаг 4. Применение конфигурации учетных данных Git

Из каталога git-credentials/ выполните инициализацию и применение.

terraform init
terraform apply

Аутентификация с помощью служебного принципала и федеративных учетных записей

Федеративные учетные данные для репозиториев Azure DevOps позволяют проходить проверку подлинности без хранения долго хранимых секретов. Этот подход использует служебный принципал с токеном OIDC, выданным конвейерами Azure DevOps, что устраняет необходимость в личных токенах доступа.

Предпосылки

Перед настройкой федеративной идентификации для папок Git Azure Databricks настройте следующие компоненты:

Шаг 1. Настройка переменных

Укажите значения для следующих переменных в terraform.tfvars файле:

  • databricks_host: URL-адрес рабочей области Azure Databricks, например https://adb-123417477717.17.azuredatabricks.net
  • entra_client_id: идентификатор клиента субъекта-службы Azure
  • entra_client_secret: секрет клиента для субъекта-службы Azure
  • entra_tenant_id: идентификатор Microsoft Entra, в котором зарегистрирован субъект-служба
  • ado_repo_url: URL-адрес HTTPS репозитория Git в Azure DevOps

Step 2. Настройка поставщика Azure Databricks

В конфигурации Terraform используйте официальный databricks провайдер. Проверка подлинности для поставщика может использовать стандартный метод вашей организации, например переменные среды в непрерывной интеграции (CI) или субъект-службу при запуске Terraform с безопасной рабочей станции.

terraform {
  required_providers {
    databricks = {
      source = "databricks/databricks"
    }
  }
}

provider "databricks" {
  host                = var.databricks_host
  azure_client_id     = var.entra_client_id
  azure_client_secret = var.entra_client_secret
  azure_tenant_id     = var.entra_tenant_id
}

Step 3. Создание федеративных учетных данных Git для Azure DevOps

Эти учетные данные доступа указывают Azure Databricks использовать федерацию, поддерживаемую Microsoft Entra ID, для Azure DevOps.

resource "databricks_git_credential" "sp_ado" {
  git_provider            = "azureDevOpsServicesAad"
  is_default_for_provider = true
}

Step 4. Укажите папку Git в репозитории Azure DevOps

Создайте или обновите папку Git, чтобы использовать URL-адрес репозитория Azure DevOps.

resource "databricks_repo" "this" {
  url        = var.ado_repo_url
  depends_on = [databricks_git_credential.sp_ado]
}