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": [
"a2222dd9-33f6-455z-8888-999fbbd77900"
],
"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