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


Включение федерации удостоверений рабочей нагрузки для GitHub Actions

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

Чтобы включить федерацию удостоверений рабочей нагрузки для GitHub Actions:

  1. Создание политики федерации
  2. Настройка YAML-файла GitHub Actions

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

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

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

  • Организация: Имя организации Github. Например, если url-адрес репозитория имеетсяhttps://github.com/databricks-inc/data-platform, то организация .databricks-inc
  • Хранилище: Имя одного репозитория, разрешающего, например data-platform.
  • Тип сущности: Тип сущности GitHub, представленной в sub утверждении (субъект) маркера. Значение по умолчанию — Branch. Databricks рекомендует использовать среду, которую можно включить, задав environment атрибут в файле YAML GitHub Actions. См. статью "Развертывание в определенной среде".
  • URL-адрес издателя:https://token.actions.githubusercontent.com
  • Тема: Строка, сформированная путем объединения значений из контекста задания GitHub Actions.
  • Аудитории: Databricks рекомендует задать этот параметр для идентификатора учетной записи Azure Databricks. Если опущено, идентификатор учетной записи используется по умолчанию.
  • Утверждение субъекта: (необязательно) Утверждение JWT, содержащее значение удостоверения рабочей нагрузки (sub) из токена OIDC. Для GitHub оставьте поле как subкодирование репозитория, ветви, тега, запроса на вытягивание или слияние или среды, активировавшей рабочий процесс.

Например, следующая команда Cli Databricks создает политику федерации для организации с именем my-org и числовым идентификатором 5581763342009999субъекта-службы Databricks:

databricks account service-principal-federation-policy create 5581763342009999 --json '{
  "oidc_policy": {
	"issuer": "https://token.actions.githubusercontent.com",
	"audiences": [
  	  "a2222dd9-33f6-455z-8888-999fbbd77900"
	],
	"subject": "repo:my-github-org/my-repo:environment:prod"
  }
}'

Настройка YAML-файла GitHub Actions

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

  • DATABRICKS_AUTH_TYPE: github-oidc
  • DATABRICKS_HOST: URL-адрес рабочей области Databricks
  • DATABRICKS_CLIENT_ID: идентификатор субъекта-службы (приложения)
name: GitHub Actions Demo
run-name: ${{ github.actor }} is testing out GitHub Actions 🚀
on: workflow_dispatch

permissions:
  id-token: write
  contents: read

jobs:
  my_script_using_wif:
    runs-on: ubuntu-latest
    environment: prod
    env:
      DATABRICKS_AUTH_TYPE: github-oidc
      DATABRICKS_HOST: https://my-workspace.cloud.databricks.com/
      DATABRICKS_CLIENT_ID: a1b2c3d4-ee42-1eet-1337-f00b44r

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Install Databricks CLI
        uses: databricks/setup-cli@main

      - name: Run Databricks CLI commands
        run: databricks current-user me