GitHub Actions için iş yükü kimlik federasyonu etkinleştirme

OpenID Connect (OIDC) olarak da bilinen Databricks OAuth belirteci federasyonu, Databricks dışında çalışan otomatik iş yüklerinizin Databricks gizli dizileri olmadan Databricks'e güvenli bir şekilde erişmesini sağlar. Bkz . OAuth belirteci federasyonu kullanarak Azure Databricks'e erişimin kimliğini doğrulama.

GitHub Actions için iş yükü kimlik federasyonu etkinleştirmek için:

  1. Federasyon ilkesi oluşturma
  2. GitHub Actions YAML dosyasını yapılandırma

İş yükü kimlik federasyonu etkinleştirildikten sonra Databricks SDK'ları ve Databricks CLI, GitHub'dan iş yükü kimlik belirteçlerini otomatik olarak getirir ve Bunları Databricks OAuth belirteçleri ile değiştirir.

Federasyon ilkesi oluşturma

İlk olarak bir iş yükü kimliği federasyon politikası oluşturun. Yönergeler için bkz. Hizmet sorumlusu federasyon ilkesi yapılandırma. GitHub için ilke için aşağıdaki değerleri ayarlayın:

  • Organizasyon: Github kuruluşunuzun adı. Örneğin, depo URL'niz https://github.com/databricks-inc/data-platform ise, kuruluş databricks-inc olacaktır.
  • Depo: İzin vermek için tek deponun adı, örneğin data-platform.
  • Varlık türü: Belirtecinizin (konu) talebinde temsil edilen sub GitHub varlığı türü. Varsayılan değer Branch'tir. Databricks, GitHub Actions YAML dosyanıza environment özniteliğini ayarlayarak Environment'i etkinleştirmenizi önerir. Bkz. Belirli bir ortama dağıtma.
  • Veren URL'si:https://token.actions.githubusercontent.com
  • Konu: GitHub Actions iş bağlamından değerleri birleştirerek oluşturulan bir dize.
  • Hedef Kitle: Databricks, bunu Azure Databricks hesap kimliğinize ayarlamanızı önerir. Atlanırsa, hesap kimliği varsayılan olarak kullanılır.
  • Konu talebi: (İsteğe bağlı) OIDC belirtecinden iş yükü kimliği (sub) değerini içeren JWT talebi. GitHub için alanı, iş akışını tetikleyen depoyu, dalı, etiketi, çekme/birleştirme isteğini veya ortamı kodlayan sub olarak bırakın. Çağrı deposu yerine yeniden kullanılabilir bir iş akışı olarak kimlik doğrulaması yapmak için bkz. Yeniden kullanılabilir bir iş akışı kullanarak kimlik doğrulaması.

Örneğin, aşağıdaki Databricks CLI komutu, bir kuruluş olan my-org ve bir Databricks hizmet sorumlusu sayısal kimliği olan 5581763342009999 için bir federasyon politikası oluşturur.

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"
  }
}'

GitHub Actions YAML dosyasını yapılandırma

Ardından GitHub Actions YAML dosyasını yapılandırın. Aşağıdaki ortam değişkenlerini ayarlayın:

  • DATABRICKS_AUTH_TYPE: github-oidc
  • DATABRICKS_HOST: Databricks çalışma alanı URL'niz
  • DATABRICKS_CLIENT_ID: Hizmet sorumlusu (uygulama) kimliği
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

Yeniden kullanılabilir bir iş akışı kullanarak kimlik doğrulayın

Varsayılan olarak, sub beyanı çağrı deposunu tanımlar. Çağrı deposu yerine yeniden kullanılabilir bir iş akışı olarak kimlik doğrulaması yapmak için federasyon ilkesinde subject_claim değerini job_workflow_ref olarak ayarlayın. Tüm ekipler yeniden kullanılabilir iş akışını çağırabilir, ancak yalnızca yeniden kullanılabilir iş akışının kendisi Databricks ile kimlik doğrulaması yapar.

Federasyon ilkesi oluşturma

job_workflow_ref'yi konu iddiası olarak kullanarak bir federasyon ilkesi oluşturun. Yeniden kullanılabilir iş akışı dosyanızın referansını subject olarak ayarlayın.

databricks account service-principal-federation-policy create 5581763342009999 --json '{
  "oidc_policy": {
    "issuer": "https://token.actions.githubusercontent.com",
    "audiences": [
      "a2222dd9-33f6-455z-8888-999fbbd77900"
    ],
    "subject": "my-github-org/shared-workflows/.github/workflows/deploy.yml@refs/heads/main",
    "subject_claim": "job_workflow_ref"
  }
}'

GITHUB ACTIONS YAML dosyalarını yapılandırma

Azure Databricks ile kimlik doğrulaması yapan yeniden kullanılabilir bir iş akışı ve herhangi bir depodaki iş akışını çağıran bir iş akışı oluşturun.

Aşağıdaki örnekte, yeniden kullanılabilir bir iş akışı dosyası gösterilmektedir (.github/workflows/deploy.yml paylaşılan iş akışları deposunda):

on:
  workflow_call:

jobs:
  deploy:
    runs-on: ubuntu-latest
    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

Aşağıdaki örnek, yeniden kullanılabilir iş akışını kullanan herhangi bir depoda iş akışının nasıl çağrıldığını gösterir.

on: workflow_dispatch

permissions:
  id-token: write
  contents: read

jobs:
  call-deploy:
    uses: my-github-org/shared-workflows/.github/workflows/deploy.yml@main

Note

permissions: id-token: write çağıran iş akışında ayarlayın, yeniden kullanılabilir iş akışında değil. GitHub yalnızca çağrı iş akışında id-token: write verildiğinde OIDC belirtecine job_workflow_ref talebini ekler.