Databricks OAuth 令牌聯邦,也稱為 OpenID Connect (OIDC),可讓您在 Databricks 外部執行的自動化工作負載安全地存取 Databricks,而無需使用 Databricks 憑證。 請參閱 使用 OAuth 令牌同盟驗證 Azure Databricks 的存取權。
若要啟用 GitLab CI/CD 的工作負載身分識別同盟:
啟用工作負載身分識別同盟之後,Databricks SDK 和 Databricks CLI 會自動從 GitLab CI/CD 擷取工作負載識別令牌,並將它們交換為 Databricks OAuth 令牌。
建立同盟原則
首先,建立工作負載身分識別聯合政策。 如需指示,請參閱 設定服務主體同盟原則。 針對 GitLab CI/CD,請設定下列值:
-
隊: 您的 GitLab 群組名稱。 例如,如果您的專案URL是
https://gitlab.com/databricks-inc/data-platform,則群組是databricks-inc。 -
發射: 要允許的單一 GitLab 專案名稱,例如
data-platform. -
參考類型: 權杖的 (主旨) 宣告中
sub所代表的 Git 參考類型。 這可以是 分支、 標籤或 合併請求。 - 發行人網址: 發出 OIDC 權杖的 GitLab 執行個體 URL。
- 題: 從工作內容取得的值串連。
-
受眾: OIDC 權杖中的預期
aud值。 在工作區塊id_tokens:中設定此設定。 Databricks 建議將它設定為您的 Azure Databricks 帳戶識別碼。 -
主體宣告: (選擇性) 包含來自 OIDC 權杖的工作負載身分識別 (
sub) 值的 JWT 宣告。 對於 GitLab,請將欄位保留為sub,以編碼觸發管線的專案、分支、標籤或合併請求。
例如,下列 Databricks CLI 命令會為 Databricks 服務主體數值識別碼 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:..."
}
}'
設定 GitLab YAML 檔案
接下來,修改 GitLab 組態檔。 變更 <databricks-account-id> 為您的 Azure Databricks 帳戶識別碼。
除了設定下列工作區環境變數之外,請將權杖儲存在 Azure Databricks 環境變數中 DATABRICKS_OIDC_TOKEN 。 或者,使用自訂環境變數並設定 DATABRICKS_OIDC_TOKEN_ENV。
-
DATABRICKS_AUTH_TYPE:env-oidc -
DATABRICKS_HOST:您的 Databricks 工作區 URL -
DATABRICKS_CLIENT_ID:服務主體 (應用程式) 識別碼
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