为 GitHub Actions 启用工作负载身份联合

重要

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

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

若要为 GitHub Actions 启用工作负荷标识联合身份验证,请执行以下操作:

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

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

创建联合策略

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

  • issuer: https://token.actions.githubusercontent.com
  • audiences:存储库 URL。 或者可以省略此字段,而是使用 Databricks 帐户 ID。
  • subject:从 GitHub Actions 作业上下文中获取的值的串联

注释

为了确保 Github Actions 主题一致,Databricks 建议指定环境。 请参阅用于部署的环境筛选特定环境

例如,给定一个名为 my-repo 属于名为 my-orgGitHub 组织的 GitHub 存储库,其 Databricks 服务主体数字 ID 为 5581763342009999,请使用以下 Databricks CLI 命令创建联合策略:

databricks account service-principal-federation-policy create 5581763342009999 --json '{
  "oidc_policy": {
	"issuer": "https://token.actions.githubusercontent.com",
	"audiences": [
  	  "https://github.com/my-org"
	],
	"subject": "repo:my-github-org/my-repo:environment:prod"
  }
}'

配置 GitHub Actions YAML 文件

接下来,配置 GitHub Actions YAML 文件。 设置以下环境变量:

  • DATABRICKS_AUTH_TYPE: github-oidc
  • DATABRICKS_HOST:你的 Databricks 工作区网址
  • DATABRICKS_CLIENT_ID:服务主体(应用程序)ID
name: GitHub Actions Demo
run-name: ${{ github.actor }} is testing out GitHub Actions 🚀
on: workflow_dispatch

permissions:
  id-token: write
  contents: read

jobs:
  my_script_using_wif:
    runs-on: ubuntu-latest
    environment: prod
    env:
      DATABRICKS_AUTH_TYPE: github-oidc
      DATABRICKS_HOST: https://my-workspace.cloud.databricks.com/
      DATABRICKS_CLIENT_ID: a1b2c3d4-ee42-1eet-1337-f00b44r

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Install Databricks CLI
        uses: databricks/setup-cli@main

      - name: Run Databricks CLI commands
        run: databricks current-user me