Aller au contenu principal

Activer la fédération d'identité de charge de travail pour GitLab CI/CD

La fédération de jetons OAuth Databricks, également connue sous le nom d'OpenID Connect (OIDC), permet à vos workloads automatisés exécutés en dehors de Databricks d'accéder en toute sécurité à Databricks sans nécessiter de secrets Databricks. Voir Authentifier l'accès à Databricks à l'aide de la fédération de jetons OAuth.

Pour activer la fédération d'identité de charge de travail pour GitLab CI/CD :

  1. Créer une politique de fédération
  2. Configurez le fichier YAML GitLab

Après avoir activé la fédération d'identité de workload, les SDK Databricks et la CLI Databricks récupèrent automatiquement les jetons d'identité de workload depuis GitLab CI/CD et les échangent contre des jetons OAuth Databricks.

Créer une politique de fédération

Tout d'abord, créez une politique de fédération d'identités de charge de travail. Pour obtenir des instructions, consultez Configurer une stratégie de fédération de Service Principal. Pour GitLab CI/CD, définissez les valeurs suivantes :

  • Groupe : Le nom de votre groupe GitLab. Par exemple, si l’URL de votre projet est https://gitlab.com/databricks-inc/data-platform, le groupe est databricks-inc.
  • Projet : Nom du projet GitLab unique à autoriser, tel que data-platform.
  • Type de réf. : Le type de référence Git représenté dans la revendication sub (sujet) de votre jeton. Il peut s'agir de Branch , de Tag ou de demande de Merge .
  • URL de l'émetteur : l'URL de l'instance GitLab qui émet le jeton OIDC.
  • Objet : une concaténation de valeurs tirées du contexte du Job.
  • Audiences : la valeur aud attendue dans le jeton OIDC. Configurez-le dans le bloc id_tokens: de votre job. Databricks recommande de le définir sur l'ID de votre compte Databricks.
  • Revendication de sujet : (Facultatif) La revendication JWT qui contient la valeur de l'identité de charge de travail (sub) du jeton OIDC. Pour GitLab, laissez le champ tel quel sub, qui encode le project, la Branch, le tag ou la demande de Merge qui a Trigger le pipeline.

Par exemple, la commande CLI Databricks suivante crée une stratégie de fédération pour un ID numérique de Service Principal Databricks de 5581763342009999:

Bash
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:..."
}
}'

Configurez le fichier YAML GitLab

Ensuite, modifiez le fichier de configuration GitLab. Remplacez <databricks-account-id> par votre ID de compte Databricks.

En plus de définir les variables d'environnement Workspace suivantes, stockez le jeton dans la variable d'environnement Databricks DATABRICKS_OIDC_TOKEN. Vous pouvez également utiliser une variable d'environnement personnalisée et définir DATABRICKS_OIDC_TOKEN_ENV.

  • DATABRICKS_AUTH_TYPE: env-oidc
  • DATABRICKS_HOST: Votre URL de workspace Databricks
  • DATABRICKS_CLIENT_ID: L’ID de l’application du service principal
YAML
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