Ověřování pomocí Azure DevOps v Databricks
Zjistěte, jak nakonfigurovat kanály Azure DevOps tak, aby poskytovaly ověřování pro příkazy rozhraní příkazového řádku Databricks a volání rozhraní API ve vaší automatizaci.
Ověřování Azure DevOps
Správa ověřování (třetích stran a třetích stran) v Azure DevOps se provádí pomocí připojení služeb. Na portálu Azure DevOps můžete přistupovat k připojením ke službám na libovolné stránce projektu v části Nastavení projektu.
Pokud chcete ověřit a autorizovat přístup rozhraní příkazového řádku Azure Databricks z prostředků Azure DevOps, použijte typ připojení ke službě Azure Resource Manager. Pro tento typ zvolte jednu z následujících metod ověřování:
- Federace identit úloh Microsoft Entra
- Používá protokol OpenID Connect (OIDC) k získání tokenů jménem instančního objektu.
- Vyžaduje, abyste u instančního objektu, který chcete použít, nakonfigurovali problémy generované Azure DevOps a identifikátor subjektu.
- Platný mechanismus ověřování: Azure CLI.
- Instanční objekt Microsoft Entra
- Používá ID klienta a tajný klíč klienta MS Entra k vygenerování krátkodobého tokenu OAuth.
- Vyžaduje, abyste pro instanční objekt, který chcete použít pro připojení služby, vygeneroval tajný kód.
- Použitelné mechanismy ověřování: Azure CLI, tajné kódy klienta Microsoft Entra.
- Spravovaná identita Microsoft Entra ID
- Používá identitu přiřazenou k prostředku (například výpočetní prostředky), na které se rozhraní příkazového řádku spouští. V kontextu Azure DevOps to platí jenom v případě, že používáte spouštěče v místním prostředí. Viz Vytvoření připojení služby Azure Resource Manager k virtuálnímu počítači, který používá spravovanou identitu.
- Použitelné mechanismy ověřování: Azure CLI, spravované identity Microsoft Entra (dříve označované jako MSI).
Jakmile zvolíte mechanismus ověřování, který nejlépe odpovídá potřebám vašeho projektu, musíte ho nakonfigurovat v definici kanálu Azure DevOps (pipeline.yml
), aby fungoval s rozhraním příkazového řádku Azure Databricks.
Konfigurace kanálu Azure DevOps pro použití Azure CLI k ověřování
Rozhraní příkazového řádku Azure Databricks ve výchozím nastavení použije Azure CLI jako mechanismus ověřování pomocí Azure Databricks.
Všimněte si, že použití Azure CLI pro ověřování vyžaduje, aby se všechna volání rozhraní příkazového řádku Azure Databricks provedla v případě AzureCLI@2 task
, že v následných úlohách neexistuje způsob, jak sdílet ověřenou relaci. Každá úloha se ověřuje nezávisle, což představuje latenci při jejich spuštění.
Následující ukázková konfigurace Azure Pipelines používá Azure CLI k ověření a spuštění příkazu 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
Při konfiguraci kanálu Azure DevOps pro použití Azure CLI ke spuštění příkazů Azure Databricks CLI postupujte takto:
- Slouží
azureSubscription
ke konfiguraci připojení služby, které chcete použít. - Nakonfigurujte
useGlobalConfig
použití výchozího nastaveníAZURE_CONFIG_FILE
, protožedatabricks bundle
příkazy používají filtrování proměnných prostředí pro podprocesy. Pokud toto nastavení není nastavené, nebudou tyto podprocesy moct najít podrobnosti ověřené relace. - Pokud ještě není exportovaný (například v předchozím kroku nebo v konfiguraci sady), exportujte proměnnou
DATABRICKS_HOST
prostředí.
Konfigurace kanálu Azure DevOps pro použití tajného klíče klienta Microsoft Entra k ověření
Pokud k ověřování nechcete použít Azure CLI, protože přidává příliš velkou latenci, nebo protože potřebujete použít Azure CLI v jiném typu úlohy, použijte tajný klíč klienta Microsoft Entra. Podrobnosti o ověřování musí být načteny z připojení služby, takže musíte použít AzureCLI@2
úlohu v deklaraci kanálu.
AzureCLI@2
Pomocí úlohy načtěte ID klienta a tajný klíč klienta z připojení služby a pak je exportujte jako proměnné prostředí. Následné úkoly je můžou používat přímo. Příklad najdete v tématu Použití instančního objektu Microsoft Entra ke správě složek Databricks Git.
Následující ukázková konfigurace Azure Pipelines používá tajný klíč klienta Microsoft Entra k ověření a spuštění příkazu 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
Při konfiguraci kanálu Azure DevOps pro použití tajných kódů klienta Microsoft Entra ke spuštění příkazů Rozhraní příkazového řádku Azure Databricks postupujte takto:
- Nakonfigurujte
addSpnToEnvironment
export relevantních proměnných prostředí do vloženého skriptu. - Vložený skript exportuje proměnné prostředí s oborem úloh jako proměnné prostředí s oborem úlohy pod názvy, které rozhraní příkazového řádku Azure Databricks automaticky převezme.
- Pokud ještě není exportovaný (například v předchozím kroku nebo v konfiguraci sady), exportujte proměnnou
DATABRICKS_HOST
prostředí. - Pokud proměnnou
ARM_CLIENT_SECRET
prostředí označíte jako proměnnouissecret=true
, musíte ji explicitně přidat do každého dalšího kroku, který ji potřebuje.- Pokud to neuděláte,
ARM_CLIENT_SECRET
proměnná prostředí bude přístupná pro každý další krok. - Proměnná
ARM_CLIENT_SECRET
prostředí se ve výstupu maskuje bez ohledu na nastavení.
- Pokud to neuděláte,
Konfigurace kanálu Azure DevOps pro použití spravované identity Microsoft Entra pro ověřování
Vzhledem k tomu, že ověřování spravované identity Azure závisí na konfiguraci virtuálního počítače nebo kontejneru, aby se zajistilo, že se rozhraní příkazového řádku Azure Databricks spustí pod správnou identitou, konfigurace kanálu Azure DevOps nevyžaduje zadání AzureCLI@2
úlohy.
Následující příklad konfigurace Azure Pipelines používá spravovanou identitu Microsoft Entra k ověření a spuštění příkazu 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
Při konfiguraci kanálu Azure DevOps pro použití spravovaných identit Microsoft Entra ke spuštění příkazů Rozhraní příkazového řádku Azure Databricks postupujte takto:
- Spravovaná identita Microsoft Entra musí mít přiřazenou roli Přispěvatel v pracovním prostoru Databricks, ke kterému bude přistupovat.
- Hodnota
DATABRICKS_AZURE_RESOURCE_ID
proměnné prostředí se nachází v části Vlastnosti instance Azure Databricks na webu Azure Portal. - Hodnota
ARM_CLIENT_ID
proměnné prostředí je ID klienta spravované identity.
Poznámka:
DATABRICKS_HOST
Pokud proměnná prostředí není v této konfiguraci zadaná, bude hodnota odvozena z DATABRICKS_AZURE_RESOURCE_ID
.
Instalace rozhraní příkazového řádku Azure Databricks z kanálu Azure Pipelines
Po nakonfigurování upřednostňovaných mechanismů ověřování musíte rozhraní příkazového řádku Azure Databricks nainstalovat na hostitele nebo agenta, který spustí příkazy Rozhraní příkazového řádku Azure Databricks.
# Install Databricks CLI
- script: |
curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
displayName: 'Install Databricks CLI'
Tip
- Pokud nechcete automaticky nainstalovat nejnovější verzi Azure Databricks CLI, nahraďte
main
ji v adrese URL instalačního programu konkrétní verzí (napříkladv0.224.0
).
Osvědčené postupy
Databricks doporučuje jako zvolenou metodu ověřování použít federaci identit úloh Microsoft Entra. Nespoléhá na tajné kódy a je bezpečnější než jiné metody ověřování. Funguje automaticky s úlohou
AzureCLI@2
bez ruční konfigurace.Další podrobnosti najdete v tématu Vytvoření připojení služby Azure Resource Manager, které používá federaci identit úloh.