Delen via


Schakel workload-identiteitsfederatie in voor GitLab CI/CD

Met Databricks OAuth-tokenfederatie, ook wel bekend als OpenID Connect (OIDC), kunnen uw geautomatiseerde workloads die buiten Databricks worden uitgevoerd, veilig toegang krijgen tot Databricks zonder dat Databricks-geheimen nodig zijn. Zie Verificatietoegang tot Azure Databricks met behulp van OAuth-tokenfederatie.

Workload-identiteitsfederatie inschakelen voor GitLab CI/CD:

  1. Een federatiebeleid maken
  2. Het YAML-bestand van GitLab configureren

Nadat u workloadidentiteitsfederatie hebt ingeschakeld, halen de Databricks SDK's en de Databricks CLI automatisch workloadidentiteitstokens op uit GitLab CI/CD en wisselen ze uit voor Databricks OAuth-tokens.

Een federatiebeleid maken

Maak eerst een federatiebeleid voor workloadidentiteiten. Zie Een federatiebeleid voor de service-principal configureren voor instructies. Stel voor GitLab CI/CD de volgende waarden in:

  • Groep: De naam van uw GitLab-groep. Als uw project-URL bijvoorbeeld is, is https://gitlab.com/databricks-inc/data-platformdatabricks-incde groep .
  • Project: De naam van het enkele GitLab-project dat moet worden toegestaan, zoals data-platform.
  • Verwijzingstype: Het type Git-verwijzing dat wordt weergegeven in de sub claim (onderwerp) van uw token. Dit kan een vertakkings-, tag- of samenvoegaanvraag zijn.
  • URL van verlener: De URL van het GitLab-exemplaar waarmee het OIDC-token wordt opgegeven.
  • Onderwerp: Een samenvoeging van waarden uit de taakcontext.
  • Publiek: De verwachte aud waarde in het OIDC-token. Configureer dit in het blok van id_tokens: uw taak. Databricks raadt u aan deze in te stellen op uw Azure Databricks-account-id.
  • Onderwerpclaim: (Optioneel) De JWT-claim die de waarde van de workloadidentiteit (sub) van het OIDC-token bevat. Laat voor GitLab het veld staan, subwaarmee het project, de vertakking, tag of samenvoegingsaanvraag die de pijplijn heeft geactiveerd, worden gecodeerd.

Met de volgende Databricks CLI-opdracht maakt u bijvoorbeeld een federatiebeleid voor een numerieke id van een Databricks-service-principal van 5581763342009999:

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

Het YAML-bestand van GitLab configureren

Wijzig vervolgens het GitLab-configuratiebestand. Ga naar <databricks-account-id> uw Azure Databricks-account-id.

Sla naast het instellen van de volgende omgevingsvariabelen voor de werkruimte het token op in de DATABRICKS_OIDC_TOKEN Omgevingsvariabele van Azure Databricks. U kunt ook een aangepaste omgevingsvariabele gebruiken en instellen DATABRICKS_OIDC_TOKEN_ENV.

  • DATABRICKS_AUTH_TYPE: env-oidc
  • DATABRICKS_HOST: De URL van uw Databricks-werkruimte
  • DATABRICKS_CLIENT_ID: De id van de service-principal (toepassing)
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