瞭解如何設定 Azure DevOps 管線,為自動化中的 Databricks CLI 命令和 API 呼叫提供驗證。
Azure DevOps 驗證
在 Azure DevOps 中管理驗證(第一方和第三方)是使用 服務連線來完成。 在 Azure DevOps 入口網站中,您可以在 [項目設定] 底下的任何項目頁面上存取服務連線,。
若要驗證和授權 Azure DevOps 資源的 Azure Databricks CLI 存取權,請使用 azure Resource Manager 服務連線類型。 針對此類型,請選擇下列其中一個驗證方法:
- Microsoft Entra 工作負載身分識別同盟
- 使用 OpenID Connect (OIDC) 通訊協定代表服務主體取得令牌。
- 需要您將您想要使用的服務主體與 Azure DevOps 生成的問題和主體識別碼一起設定。
- 適用的驗證機制:Azure CLI。
- Microsoft Entra 服務主體
- 使用用戶端識別碼和 MS Entra 用戶端密碼來產生短期的 OAuth 令牌。
- 您需要為打算用於服務連線的服務主體生成一個密鑰。
- 適用的驗證機制:Azure CLI,Microsoft Entra 客戶端密碼。
- Microsoft Entra ID 受控識別
- 使用指派給執行 CLI 的資源(例如運算)的身分識別。 在 Azure DevOps 的情境下,只有在您使用自行架設的執行器時,才相關。 請參閱 建立 Azure Resource Manager 服務連線,連接至使用受控身分識別的 VM。
- 適用的驗證機制:Azure CLI、Microsoft Entra 受控識別(先前稱為「MSI」)。
選擇最符合您專案需求的驗證機制之後,您必須在 Azure DevOps 管線定義中設定它,pipeline.yml才能使用 Azure Databricks CLI。
設定 Azure DevOps 管線以使用 Azure CLI 進行驗證
根據預設,Azure Databricks CLI 會使用 Azure CLI 作為向 Azure Databricks 進行驗證的機制。
請注意,使用 Azure CLI 進行驗證時,必須在 中 AzureCLI@2 task呼叫 Azure Databricks CLI,這表示在後續工作中無法共用已驗證的會話。 每個工作都會獨立驗證,這會在執行時引入延遲。
下列 Azure Pipelines 範例組態會使用 Azure CLI 來驗證和執行 Azure Databricks CLI bundle deploy 命令:
- task: AzureCLI@2
inputs:
azureSubscription: {your-azure-subscription-id-here}
useGlobalConfig: true
scriptType: bash
scriptLocation: inlineScript
inlineScript: |
export DATABRICKS_HOST=https://adb...
databricks bundle deploy
設定 Azure DevOps 管線以使用 Azure CLI 執行 Azure Databricks CLI 命令時,請執行下列動作:
- 使用
azureSubscription來設定您想要使用的服務連線。 - 設定
useGlobalConfig為使用預設值AZURE_CONFIG_FILE,databricks bundle因為命令會針對子進程使用環境變數篩選。 如果未設定,這些子進程將無法找到已驗證會話的詳細數據。 - 如果尚未匯出它(例如在上一個步驟或套件組合組態中),請匯出
DATABRICKS_HOST環境變數。
設定 Azure DevOps 管線以使用 Microsoft Entra 用戶端密碼進行驗證
如果您不想使用 Azure CLI 進行驗證,因為它會增加太多延遲,或因為您需要在不同的工作類型中使用 Azure CLI,請使用 Microsoft Entra 用戶端密碼。 驗證詳細數據必須從服務連線擷取,因此您必須在管線宣告中使用工作 AzureCLI@2 。
使用工作 AzureCLI@2 從服務連線擷取用戶端標識碼和用戶端密碼,然後將它們匯出為環境變數。 後續任務可以直接使用它們。 如需範例,請參閱 使用 Microsoft Entra 服務主體來管理 Databricks Git 資料夾。
下列 Azure Pipelines 範例組態會使用 Microsoft Entra 用戶端密碼來驗證並執行 Azure Databricks CLI bundle deploy 命令:
- task: AzureCLI@2
inputs:
azureSubscription: {your-azure-subscription-id-here}
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...
databricks bundle deploy
設定 Azure DevOps 管線以使用 Microsoft Entra 用戶端密碼來執行 Azure Databricks CLI 命令時,請執行下列動作:
- 設定
addSpnToEnvironment將相關的環境變數匯出至內嵌腳本。 - 內嵌腳本將任務範圍的環境變數匯出為作業範圍的環境變數,並且這些作業範圍環境變數的名稱由 Azure Databricks CLI 自動識別。
- 如果尚未匯出它(例如在上一個步驟或套件組合組態中),請匯出
DATABRICKS_HOST環境變數。 - 如果您將環境變數標示
ARM_CLIENT_SECRET為issecret=true,則必須明確地將它新增至需要它的每個後續步驟。- 如果您未這麼做,環境變數
ARM_CLIENT_SECRET將對每個後續步驟開放存取。 -
ARM_CLIENT_SECRET不論設定為何,都會在輸出中遮罩環境變數。
- 如果您未這麼做,環境變數
設定 Azure DevOps 管線以使用 Microsoft Entra 受控識別進行驗證
因為 Azure 受控識別驗證 取決於虛擬機或容器組態,以確保 Azure Databricks CLI 是在正確的身分識別下執行,因此您的 Azure DevOps 管線設定不需要您指定工作 AzureCLI@2 。
下列 Azure Pipelines 範例組態會使用 Microsoft Entra 受控識別來驗證和執行 Azure Databricks CLI bundle deploy 命令:
- script: |
export DATABRICKS_AZURE_RESOURCE_ID=/subscriptions/<id>/resourceGroups/<name>/providers/Microsoft.Databricks/workspaces/<name>
export ARM_CLIENT_ID=eda1f2c4-07cb-4c2c-a126-60b9bafee6d0
export ARM_USE_MSI=true
export DATABRICKS_HOST=https://adb...
databricks current-user me --log-level trace
設定 Azure DevOps 管線以使用 Microsoft Entra 受控識別來執行 Azure Databricks CLI 命令時,請執行下列動作:
- Microsoft Entra 受控識別必須在要存取的 Databricks 工作區中指派「參與者」角色。
- 環境變數的值
DATABRICKS_AZURE_RESOURCE_ID位於 Azure 入口網站 中 Azure Databricks 實例的 [屬性] 底下。 - 環境變數的值
ARM_CLIENT_ID是受控識別的用戶端標識碼。
備註
DATABRICKS_HOST如果未在此組態中指定環境變數,則會從 DATABRICKS_AZURE_RESOURCE_ID推斷值。
從 Azure Pipelines 管線安裝 Azure Databricks CLI
設定慣用的驗證機制之後,您必須在將執行 Azure Databricks CLI 命令的主機或代理程式上安裝 Azure Databricks CLI。
# Install Databricks CLI
- script: |
curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
displayName: 'Install Databricks CLI'
小提示
- 如果您不想自動安裝最新版的 Azure Databricks CLI,請將安裝程式 URL 中的 取代
main為特定版本(例如 ,v0.224.0)。
最佳做法
Databricks 建議您使用 Microsoft Entra 工作負載身分識別同盟 作為選擇的驗證方法。 它不依賴秘密,而且比其他驗證方法更安全。 它會自動與工作搭配使用,
AzureCLI@2而不需要任何手動設定。如需詳細資訊,請參閱 建立使用工作負載身分識別同盟的 Azure Resource Manager 服務連線。
另請參閱
- 使用 Azure CLI 進行驗證
- 使用 Microsoft Entra 服務主體進行認證