Dela via


Aktivera identitetsfederation för arbetsflöde i Azure DevOps-pipelines

Databricks OAuth-tokenfederation, även kallat OpenID Connect (OIDC), gör att dina automatiserade arbetsbelastningar som körs utanför Databricks på ett säkert sätt kan komma åt Databricks utan att databricks-hemligheter behövs. Se Autentisera åtkomst till Azure Databricks med hjälp av OAuth-tokenfederation.

Så här aktiverar du arbetsbelastningsidentitetsfederation för Azure DevOps-pipelines:

  1. Skapa en federationsprincip
  2. Konfigurera Azure DevOps Pipeline YAML

När du har aktiverat arbetsbelastningsidentitetsfederation hämtar Databricks SDK:er och Databricks CLI automatiskt arbetsbelastningsidentitetstoken från Azure DevOps-pipelines och utbyter dem mot Databricks OAuth-token.

Skapa en federationsprincip

Skapa först en anpassad identitetsfederationsprincip för arbetsbelastning. Anvisningar finns i Konfigurera en federationsprincip för tjänstens huvudnamn. För Azure DevOps anger du följande värden för principen:

  • Utfärdar-URL:https://vstoken.dev.azure.com/<org_id>, där <org-id> är GUID för din Azure DevOps-organisation
  • Publik:api://AzureADTokenExchange
  • Subjekt:p://<org-name>/<project-name>/<pipeline-name> var <org-name> är ditt Azure DevOps-organisationsnamn, <project-name> är ditt Azure DevOps-projektnamn och <pipeline-name> är namnet på din Azure DevOps-pipeline

Följande Databricks CLI-kommando skapar till exempel en federationsprincip för ett organisations-ID 7f1078d6-b20d-4a20-9d88-05a2f0d645a3 och ett numeriskt ID för Databricks-tjänstens huvudnamn för 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"
  }
}
'

Konfigurera Azure DevOps Pipeline YAML

Konfigurera sedan YAML-filen för Azure DevOps-pipelinen. Ange följande miljövariabler:

  • DATABRICKS_AUTH_TYPE: azure-devops-oidc
  • DATABRICKS_HOST: Url för Din Databricks-arbetsyta
  • DATABRICKS_CLIENT_ID: Tjänstens huvudnamn (program)-ID
  • SYSTEM_ACCESSTOKEN: Mappa $(System.AccessToken) pipelinevariabeln till den här miljövariabeln
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)