Compartir a través de

在 CircleCI 上启用工作负荷身份联合

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

若要为 CircleCI 启用工作负载身份联合,

  1. 创建联合策略

  2. 配置 CircleCI YAML

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

创建联合策略

首先,创建自定义工作负荷标识联合策略。 有关说明,请参阅 配置服务主体联合策略。 对于 CircleCI,请为策略设置以下值:

  • 颁发者 URL:https://oidc.circleci.com/org/<org_id>组织 ID 所在的位置<org-id>
  • 观众: CircleCI 组织 ID
  • 主题: CircleCI 项目 ID
  • 使用者声明:oidc.circleci.com/project-id

例如,以下 Databricks CLI 命令为组织 ID 1234 和 Databricks 服务主体数字 ID 5581763342009999创建联合策略:

databricks account service-principal-federation-policy create 5581763342009999 --json '{
  "oidc_policy": {
	"issuer": "https://oidc.circleci.com/org/1234",
	"audiences": [
  	  "1234"
	],
	"subject": "5678",
  "subject_claim": "oidc.circleci.com/project-id"
  }
}'

配置 CircleCI YAML

接下来,修改 CircleCI 配置文件。 除了以下变量之外,还请在 CircleCI DATABRICKS_OIDC_TOKEN_ENV 文件中设置config.yml,以便指示 Databricks SDK 或 CLI 在CIRCLE_OIDC_TOKEN_V2中搜索令牌。 (也可以使用较旧的 CIRCLE_OIDC_TOKEN 环境变量。

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

jobs:
  build:
    docker:
  	  - image: cimg/base:current
    environment:
      DATABRICKS_HOST: https://my-workspace.cloud.databricks.com/
      DATABRICKS_CLIENT_ID: a1b2c3d4-ee42-1eet-1337-f00b44r
      DATABRICKS_OIDC_TOKEN_ENV: CIRCLE_OIDC_TOKEN
      DATABRICKS_AUTH_TYPE: env-oidc
    steps:
      - checkout
      - run:
          name: Install Databricks CLI
          command: |
            curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sudo sh
            databricks --version
      - run:
          name: Run Databricks CLI commands
          command: databricks current-user me