Dela via


Aktivera arbetsbelastningsidentitetsfederation för GitLab CI/CD

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 GitLab CI/CD:

  1. Skapa en federationsprincip
  2. Konfigurera GitLab YAML-filen

När du har aktiverat arbetsbelastningsidentitetsfederation hämtar Databricks SDK:er och Databricks CLI automatiskt arbetsbelastningsidentitetstoken från GitLab CI/CD och utbyter dem mot Databricks OAuth-token.

Skapa en federationsprincip

Skapa först en princip för arbetsbelastningsidentitetsfederation. Anvisningar finns i Konfigurera en federationsprincip för tjänstens huvudnamn. För GitLab CI/CD anger du följande värden:

  • Grupp: Namnet på din GitLab-grupp. Om din projekt-URL till exempel är https://gitlab.com/databricks-inc/data-platformär databricks-incgruppen .
  • Projekt: Namnet på det enda GitLab-projekt som ska tillåtas, till exempel data-platform.
  • Referenstyp: Den typ av Git-referens som representeras i anspråket sub (ämne) för din token. Det kan vara en förgrenings-, tagg- eller sammanslagningsbegäran.
  • Utfärdar-URL: Url:en för GitLab-instansen som utfärdar OIDC-token.
  • Subjekt: En sammanlänkning av värden som hämtats från jobbkontexten.
  • Publik: Det förväntade aud värdet i OIDC-token. Konfigurera detta i jobbets id_tokens: block. Databricks rekommenderar att du anger det till ditt Azure Databricks-konto-ID.
  • Ämnesanspråk: (valfritt) JWT-anspråket som innehåller värdet för arbetsbelastningsidentiteten (sub) från OIDC-token. För GitLab lämnar du fältet som sub, som kodar den projekt-, gren-, tagg- eller sammanslagningsbegäran som utlöste pipelinen.

Följande Databricks CLI-kommando skapar till exempel en federationsprincip för ett numeriskt ID 5581763342009999för Databricks-tjänstens huvudnamn för :

databricks account service-principal-federation-policy create 5581763342009999 --json '{
  "oidc_policy": {
	"issuer": "https://gitlab.com/example-group",
	"audiences": [
  	  "https://gitlab.com/example-group"
	],
	"subject": "project_path:my-group/my-project:..."
  }
}'

Konfigurera GitLab YAML-filen

Ändra sedan GitLab-konfigurationsfilen. Ändra <databricks-account-id> till ditt Azure Databricks-konto-ID.

Förutom att ange följande miljövariabler för arbetsytor lagrar du token i DATABRICKS_OIDC_TOKEN miljövariabeln Azure Databricks. Du kan också använda en anpassad miljövariabel och ange DATABRICKS_OIDC_TOKEN_ENV.

  • DATABRICKS_AUTH_TYPE: env-oidc
  • DATABRICKS_HOST: Url för Din Databricks-arbetsyta
  • DATABRICKS_CLIENT_ID: Tjänstens huvudnamn (program)-ID
spec:
  inputs:
    # Specify your Databricks account ID, workspace hostname, and service principal OAuth client ID.
    databricks-account-id:
    databricks-host:
    databricks-client-id:
    # See https://docs.gitlab.com/ci/inputs/#define-input-parameters-with-specinputs for more on pipeline input variables.
---
stages:
  - my_script_using_wif

variables:
  DATABRICKS_AUTH_TYPE: env-oidc
  DATABRICKS_HOST: $[[ inputs.databricks-host ]]
  DATABRICKS_CLIENT_ID: $[[ inputs.databricks-client-id ]]

my_script_using_wif:
  id_tokens:
    DATABRICKS_OIDC_TOKEN:
      aud: $[[ inputs.databricks-account-id ]]
  stage: my_script_using_wif
  image: ubuntu:latest
  before_script:
    - apt-get update -y
    - apt-get install -y curl unzip
    - curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
  script:
    - databricks current-user me