为 GitLab CI/CD 启用工作负荷标识联合

重要

Databricks OAuth 令牌联合身份验证处于 公共预览版

Databricks OAuth 令牌联合(也称为 OpenID Connect(OIDC))允许在 Databricks 外部运行的自动化工作负荷以安全的方式访问 Databricks,而无需 Databricks 密钥。 请参阅使用 OAuth 令牌联合身份验证对 Azure Databricks 进行身份验证。

若要为 GitLab CI/CD 启用负载身份联合:

  1. 创建联合策略
  2. 配置 GitLab YAML 文件

启用工作负荷标识联合后,Databricks SDK 和 Databricks CLI 会自动从 GitLab CI/CD 提取工作负载标识令牌,并将其交换为 Databricks OAuth 令牌。

创建联合策略

首先,使用 Databricks CLI 创建 工作负荷标识联合策略。 对于 GitLab CI/CD,请设置以下值:

  • issuer:GitLab 组织的网址
  • audiences:GitLab 的组织 URL
  • subject:从作业上下文中获取的值的串联

例如,给定一个 GitLab URLhttps://gitlab.com/example-group 和一个 Databricks 服务主体数字 ID5581763342009999,请使用以下 Databricks CLI 命令创建联合策略:

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

配置 GitLab YAML 文件

接下来,修改 GitLab 配置文件。 除了设置以下工作区环境变量,请将令牌存储在 Databricks 环境变量中 DATABRICKS_OIDC_TOKEN 。 或者,使用自定义环境变量并设置 DATABRICKS_OIDC_TOKEN_ENV

  • DATABRICKS_AUTH_TYPE: env-oidc
  • DATABRICKS_HOST:你的 Databricks 工作区网址
  • DATABRICKS_CLIENT_ID:服务主体(应用程序)ID
stages:
  - my_script_using_wif

variables:
  DATABRICKS_AUTH_TYPE: env-oidc
  DATABRICKS_HOST: https://my-workspace.cloud.databricks.com/
  DATABRICKS_CLIENT_ID: a1b2c3d4-ee42-1eet-1337-f00b44r

my_script_using_wif:
  id_tokens:
    DATABRICKS_OIDC_TOKEN:
      aud: https://gitlab.com/example-group
  stage: explore
  image: ubuntu:latest
  before_script:
    - curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
  script:
    - databricks current-user me