Pular para o conteúdo principal

Habilitar a federação de identidade de carga de trabalho para GitLab CI/CD

A federação de tokens OAuth do Databricks, também conhecida como OpenID Connect (OIDC), permite que suas cargas de trabalho automatizadas executadas fora do Databricks acessem o Databricks com segurança sem a necessidade de segredos do Databricks. Consulte Autenticar o acesso ao Databricks usando a federação de tokens OAuth.

Para habilitar a federação de identidade de carga de trabalho para GitLab CI/CD:

  1. Crie uma política de federação
  2. Configurar o arquivo YAML do GitLab

Depois que o senhor ativar a federação de identidade da carga de trabalho, os SDKs do Databricks e a CLI do Databricks buscarão automaticamente os tokens de identidade da carga de trabalho do GitLab CI/CD e os trocarão por tokens OAuth do Databricks.

Crie uma política de federação

Primeiro, crie uma política de federação de identidades de carga de trabalho. Para obter instruções, consulte Configurar uma política de federação de entidade de serviço. Para o GitLab CI/CD, defina os seguintes valores:

  • Group (Grupo): O nome do seu grupo GitLab. Por exemplo, se a URL do seu projeto for https://gitlab.com/databricks-inc/data-platform, o grupo será databricks-inc.
  • Project (Projeto): O nome do projeto único do GitLab a ser permitido, como data-platform.
  • Tipo de referência: O tipo de referência Git representado na declaração sub (assunto) de seus tokens. Isso pode ser uma solicitação de ramificação , tag ou mesclagem .
  • URL do emissor: O URL da instância GitLab que emite os tokens OIDC.
  • Assunto: Uma concatenação de valores extraídos do contexto do trabalho.
  • Audiências: O valor esperado de aud nos tokens OIDC. Configure isso no bloco id_tokens: do seu trabalho. Databricks recomenda que o senhor o defina como seu Databricks account ID.
  • Subject claim: (Opcional) A reivindicação JWT que contém o valor da identidade da carga de trabalho (sub) dos tokens OIDC. Para GitLab, deixe o campo como sub, que codifica o projeto, a filial, a solicitação tag ou merge que acionou o pipeline.

Por exemplo, o seguinte Databricks CLI comando cria uma política de federação para uma Databricks entidade de serviço ID numérico de 5581763342009999:

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

Configurar o arquivo YAML do GitLab

Em seguida, modifique o arquivo de configuração do GitLab. Altere <databricks-account-id> para sua ID Databricks account .

Além de definir o seguinte workspace variável de ambiente, armazene os tokens no DATABRICKS_OIDC_TOKEN Databricks variável de ambiente. Como alternativa, use uma variável de ambiente personalizada e defina DATABRICKS_OIDC_TOKEN_ENV.

  • DATABRICKS_AUTH_TYPE: env-oidc
  • DATABRICKS_HOST: Seu URL Databricks workspace
  • DATABRICKS_CLIENT_ID: A ID da entidade de serviço (aplicativo)
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