本頁說明如何配置 Azure DevOps 管道以驗證 Databricks CLI 並向 Azure Databricks 發送 API 請求。
開始之前
在設定 Azure DevOps 驗證前,請先完成以下步驟:
在 Azure 建立服務主體,並以適當的權限將其加入你的 Azure Databricks 工作空間。 如果沒有這個步驟,即使管線設定正確,認證也會失敗。
對於 Microsoft Entra ID 的管理服務主體,請在 Azure 建立一個 Microsoft Entra ID 應用程式,然後將其加入你的工作空間。 請參閱 服務主體 與 管理服務主體。
在你的管線中新增一個步驟,在代理上安裝 Databricks CLI:
- script: | curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh displayName: 'Install Databricks CLI'小提示
若要將 CLI 安裝釘選到特定版本而非使用最新版本,請以版本標籤取代
main(例如,v0.224.0)。
選擇一種認證方法
Azure DevOps 透過 服務連線來管理認證。 在 Azure DevOps 入口網站的專案設定>中存取它們:服務連線。
要驗證 Databricks CLI,請使用以下方法之一的 Azure Resource Manager 服務連線類型:
| 方法 | Description | 適用對象 |
|---|---|---|
| 工作負載身份聯盟 (推薦) | 使用 OpenID Connect(OIDC)來取得代幣。 需要用你的服務主體帳戶設定 Azure DevOps 產生的發行者和主體識別碼。 | 安全且無秘密的認證 |
| 服務主體與客戶端秘密 | 使用用戶端 ID 和秘密來產生短壽命的 OAuth 標記。 需要為服務主體產生一個金鑰。 | 需要跨任務共享憑證的情境 |
| 受控識別 | 使用分配給運行管線的虛擬機或容器的身份。 僅適用於自架跑者。 請參閱 Azure 文件。 | 自架運行者,並有指定身份 |
備註
盡可能使用工作負載身份聯盟。 它不依賴秘密,因此比其他方法更安全。 它會自動執行 AzureCLI@2 任務,無需手動設定。 參見 建立使用工作負載身份聯邦的服務連接。
配置 Azure CLI 認證
Databricks CLI 預設使用 Azure CLI 進行認證。 所有 Databricks 的 CLI 指令都必須在任務 AzureCLI@2 中執行,這表示每個任務獨立認證。 這會帶來一些延遲,但所需的設定非常簡單。
- task: AzureCLI@2
inputs:
azureSubscription: <your-service-connection-name>
useGlobalConfig: true
scriptType: bash
scriptLocation: inlineScript
inlineScript: |
export DATABRICKS_HOST=https://adb-<workspace-id>.<region>.azuredatabricks.net
databricks bundle deploy
更新這些數值:
-
azureSubscription: 你的 Azure Resource Manager 服務連線名稱。 -
useGlobalConfig:必填。 確保由databricks bundle指令產生的子程序能存取已認證的會話。 -
DATABRICKS_HOST:如果你的組合組或前一個步驟還沒定義,請設定這個。
設定用戶端秘密認證
當你需要在多個任務間共享憑證,或 Azure CLI 認證增加延遲時,可以使用用戶端秘密。
此方法在一個任務中從服務連線取得認證細節,然後匯出為後續任務的作業範圍環境變數。
- task: AzureCLI@2
inputs:
azureSubscription: <your-service-connection-name>
addSpnToEnvironment: true
scriptType: bash
scriptLocation: inlineScript
inlineScript: |
echo "##vso[task.setvariable variable=ARM_CLIENT_ID]${servicePrincipalId}"
echo "##vso[task.setvariable variable=ARM_CLIENT_SECRET]${servicePrincipalKey}"
echo "##vso[task.setvariable variable=ARM_TENANT_ID]${tenantId}"
- script: |
export DATABRICKS_HOST=https://adb-<workspace-id>.<region>.azuredatabricks.net
databricks bundle deploy
注意:
- 該
addSpnToEnvironment鍵使servicePrincipalId、servicePrincipalKey和tenantId能夠在內嵌腳本中被使用。 - 指令將
##vso任務範圍變數升格為工作範圍變數,Databricks CLI 會自動辨識。 - 在預設狀態下,
ARM_CLIENT_SECRET可被所有後續步驟存取。 若要限制存取權限,請在變數定義中加入issecret=true,然後明確傳給每個需要的步驟。 無論如何設定,秘密都會被日誌遮蔽。
完整範例請參見 授權 Microsoft Entra 服務主體存取 Git 資料夾。
設定管理身份驗證
管理身份驗證依賴虛擬機或容器設定,而非管線任務。 這種方法不需要完成這個 AzureCLI@2 任務。
- script: |
export DATABRICKS_AZURE_RESOURCE_ID=/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Databricks/workspaces/<workspace-name>
export ARM_CLIENT_ID=<managed-identity-client-id>
export ARM_USE_MSI=true
export DATABRICKS_HOST=https://adb-<workspace-id>.<region>.azuredatabricks.net
databricks current-user me
更新這些數值:
-
DATABRICKS_AZURE_RESOURCE_ID: 在 Azure 入口網站的 Workspace 屬性 中找到這個值。 -
ARM_CLIENT_ID:管理身份的用戶端 ID。 -
DATABRICKS_HOST:選擇性。 若未設定,則該值從DATABRICKS_AZURE_RESOURCE_ID推斷出。
管理身份必須在 Azure Databricks 工作空間中扮演 貢獻者 角色。
另請參閱
- 使用 Azure CLI 進行驗證
- 使用 Microsoft Entra 服務主體進行認證
- 授權 Microsoft Entra 服務主體存取 Git 資料夾