在 Databricks 上使用 Azure DevOps 進行驗證
瞭解如何設定 Azure DevOps 管線,為自動化中的 Databricks CLI 命令和 API 呼叫提供驗證。
Azure DevOps 驗證
在 Azure DevOps 中管理驗證(第一方和第三方)是透過 服務連線來完成。 在 Azure DevOps 入口網站中,您可以在 [項目設定] 底下的任何專案頁面上存取服務連線。
若要驗證 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 的內容中,只有在您使用自我裝載的執行器時,才相關。 請參閱 建立與使用受控識別之 VM 的 Azure Resource Manager 服務連線。
- 適用的驗證機制: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 服務連線。