Compartir a través de


Habilitar federación de identidades de carga de trabajo para CI/CD de GitLab

La federación de tokens de OAuth de Databricks, también conocida como OpenID Connect (OIDC), permite que las cargas de trabajo automatizadas que se ejecutan fuera de Databricks accedan de forma segura a Databricks sin necesidad de secretos de Databricks. Consulte Autenticación del acceso a Azure Databricks mediante la federación de tokens de OAuth.

Para habilitar la federación de identidades de carga de trabajo para CI/CD de GitLab:

  1. Creación de una directiva de federación
  2. Configuración del archivo YAML de GitLab

Después de habilitar la federación de identidades de carga de trabajo, los SDK de Databricks y la CLI de Databricks capturan automáticamente los tokens de identidad de carga de trabajo de GitLab CI/CD y los intercambian para tokens de OAuth de Databricks.

Creación de una directiva de federación

En primer lugar, cree una directiva de federación de identidades de carga de trabajo. Para obtener instrucciones, consulte Configuración de una directiva de federación de entidad de servicio. Para CI/CD de GitLab, establezca los valores siguientes:

  • Grupo: Nombre del grupo de GitLab. Por ejemplo, si la dirección URL del proyecto es https://gitlab.com/databricks-inc/data-platform, el grupo es databricks-inc.
  • Proyecto: Nombre del único proyecto de GitLab que se va a permitir, como data-platform.
  • Tipo de referencia: Tipo de referencia de Git representada en la sub notificación (asunto) del token. Puede ser Solicitud de rama, etiqueta o combinación.
  • Dirección URL del emisor: Dirección URL de la instancia de GitLab que emite el token de OIDC.
  • Asunto: Concatenación de valores tomados del contexto del trabajo.
  • Audiencias: Valor esperado aud en el token de OIDC. Configure esto en el bloque del id_tokens: trabajo. Databricks recomienda establecerlo en el identificador de cuenta de Azure Databricks.
  • Notificación de asunto: (opcional) La notificación JWT que contiene el valor de identidad de carga de trabajo (sub) del token OIDC. Para GitLab, deje el campo como sub, que codifica el proyecto, la rama, la etiqueta o la solicitud de combinación que desencadenó la canalización.

Por ejemplo, el siguiente comando de la CLI de Databricks crea una directiva de federación para un identificador numérico numérico de la entidad de servicio de Databricks de 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:..."
  }
}'

Configuración del archivo YAML de GitLab

A continuación, modifique el archivo de configuración de GitLab. Cambie <databricks-account-id> al identificador de la cuenta de Azure Databricks.

Además de establecer las siguientes variables de entorno de área de trabajo, almacene el token en la DATABRICKS_OIDC_TOKEN variable de entorno de Azure Databricks. Como alternativa, use una variable de entorno personalizada y establezca DATABRICKS_OIDC_TOKEN_ENV.

  • DATABRICKS_AUTH_TYPE: env-oidc
  • DATABRICKS_HOST: dirección URL del área de trabajo de Databricks
  • DATABRICKS_CLIENT_ID: identificador de la entidad de servicio (aplicación)
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