Condividi tramite


Abilitare la federazione delle identità del carico di lavoro per GitHub Actions

La federazione dei token OAuth di Databricks, nota anche come OpenID Connect (OIDC), consente ai carichi di lavoro automatizzati in esecuzione all'esterno di Databricks di accedere in modo sicuro a Databricks senza la necessità di segreti di Databricks. Vedere Autenticare l'accesso ad Azure Databricks usando la federazione dei token OAuth.

Per abilitare la federazione delle identità del carico di lavoro per GitHub Actions:

  1. Creare un criterio federativo
  2. Configurare il file YAML di GitHub Actions

Dopo aver abilitato la federazione dell'identità del carico di lavoro, gli SDK di Databricks e l'interfaccia della riga di comando di Databricks recuperano automaticamente i token di identità del carico di lavoro da GitHub e li scambiano per i token OAuth di Databricks.

Creare una politica di federazione

Creare prima di tutto un criterio di federazione dell'identità del carico di lavoro. Per istruzioni, vedere Configurare un criterio di federazione dell'entità servizio. Per GitHub, impostare i valori seguenti per i criteri:

  • Organizzazione: Nome dell'organizzazione Github. Ad esempio, se l'URL del repository è https://github.com/databricks-inc/data-platform, l'organizzazione è databricks-inc.
  • Deposito: Nome del singolo repository da consentire, ad esempio data-platform.
  • Tipo di entità: Tipo di entità GitHub rappresentata nell'attestazione sub (oggetto) del token. Il valore predefinito è Branch. Databricks consiglia di usare Environment, che è possibile abilitare impostando l'attributo environment nel file YAML di GitHub Actions. Vedere Distribuzione in un ambiente specifico.
  • URL autorità di certificazione:https://token.actions.githubusercontent.com
  • Oggetto: Stringa formata dalla concatenazione di valori dal contesto del processo gitHub Actions.
  • Pubblico: Databricks consiglia di impostare questa opzione sull'ID dell'account Azure Databricks. Se omesso, l'ID account viene usato per impostazione predefinita.
  • Attestazione del soggetto: (facoltativo) Attestazione JWT che contiene il valore dell'identità del carico di lavoro (sub) dal token OIDC. Per GitHub lasciare il campo come sub, che codifica il repository, il ramo, il tag, la richiesta pull/merge o l'ambiente che ha attivato il flusso di lavoro.

Ad esempio, il comando dell'interfaccia della riga di comando di Databricks seguente crea criteri di federazione per un'organizzazione denominata my-org e un ID numerico dell'entità servizio Databricks di 5581763342009999:

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

Configurare il file YAML di GitHub Actions

Configurare quindi il file YAML di GitHub Actions. Impostare le seguenti variabili di ambiente:

  • DATABRICKS_AUTH_TYPE: github-oidc
  • DATABRICKS_HOST: URL dell'area di lavoro di Databricks
  • DATABRICKS_CLIENT_ID: ID dell'entità servizio (applicazione)
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