Compartilhar via


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

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

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

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

Depois de habilitar a federação de identidade de carga de trabalho, os SDKs do Databricks e a CLI do Databricks buscam automaticamente tokens de identidade de carga de trabalho do GitLab CI/CD e os trocam por tokens OAuth do Databricks.

Criar uma política de federação

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

  • Grupo: O nome do grupo do GitLab. Por exemplo, se a URL do projeto for https://gitlab.com/databricks-inc/data-platform, então o grupo é databricks-inc.
  • Projeto: O nome do único projeto do GitLab a ser permitido, como data-platform.
  • Tipo de ref: O tipo de referência Git representada na declaração sub (assunto) do token. Isso pode ser Branch, Tag ou Merge request.
  • URL do emissor: A URL da instância do GitLab que emite o token OIDC.
  • Assunto: Uma concatenação de valores obtidos do contexto do trabalho.
  • Destinatários: O valor esperado aud no token OIDC. Configure isso no id_tokens: bloco do seu trabalho. O Databricks recomenda defini-lo para sua ID de conta do Azure Databricks.
  • Declaração do assunto: (Opcional) A declaração JWT que contém o valor da identidade da carga de trabalho (sub) do token OIDC. Para o GitLab, deixe o campo como sub, que codifica o projeto, branch, tag ou merge request que acionou o pipeline.

Por exemplo, o seguinte comando CLI do Databricks cria uma política de federação para uma ID numérica da entidade de serviço 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:..."
  }
}'

Configurar o arquivo YAML do GitLab

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

Além de configurar as variáveis de ambiente do workspace listadas a seguir, armazene o token na variável de ambiente do DATABRICKS_OIDC_TOKEN Azure Databricks. Como alternativa, use uma variável de ambiente personalizada e defina DATABRICKS_OIDC_TOKEN_ENV.

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