Udostępnij za pośrednictwem


Uwierzytelnianie za pomocą usługi Azure DevOps w usłudze Databricks

Dowiedz się, jak skonfigurować potoki usługi Azure DevOps w celu zapewnienia uwierzytelniania dla poleceń interfejsu wiersza polecenia usługi Databricks i wywołań interfejsu API w automatyzacji.

Uwierzytelnianie usługi Azure DevOps

Zarządzanie uwierzytelnianiem (innej firmy i innej firmy) w usłudze Azure DevOps odbywa się za pomocą połączeń usług. W portalu Usługi Azure DevOps możesz uzyskać dostęp do połączeń usług na dowolnej stronie projektu w obszarze Ustawienia projektu.

Wybierz pozycję Połączenia usług w obszarze Ustawienia projektu w usłudze Azure DevOps

Aby uwierzytelnić interfejs wiersza polecenia usługi Databricks, użyj typu połączenia usługi Azure Resource Manager . Dla tego typu wybierz jedną z następujących metod uwierzytelniania:

  • Federacja tożsamości obciążeń firmy Microsoft Entra
    • Używa protokołu OpenID Connect (OIDC) do uzyskiwania tokenów w imieniu jednostki usługi.
    • Wymaga skonfigurowania problemów generowanych przez usługę Azure DevOps i identyfikatora podmiotu z jednostką usługi, której zamierzasz użyć.
    • Odpowiedni mechanizm uwierzytelniania: interfejs wiersza polecenia platformy Azure.
  • Jednostka usługi Microsoft Entra
    • Używa identyfikatora klienta i klucza tajnego klienta MS Entra w celu wygenerowania krótkotrwałego tokenu OAuth.
    • Wymaga wygenerowania wpisu tajnego dla jednostki usługi, która ma być używana na potrzeby połączenia z usługą.
    • Odpowiednie mechanizmy uwierzytelniania: interfejs wiersza polecenia platformy Azure, wpisy tajne klienta firmy Microsoft Entra.
  • Tożsamość zarządzana identyfikatora entra firmy Microsoft

Po wybraniu mechanizmu uwierzytelniania, który najlepiej odpowiada potrzebom projektu, należy skonfigurować go w definicji potoku usługi Azure DevOps (pipeline.yml), aby pracować z interfejsem wiersza polecenia usługi Azure Databricks.

Konfigurowanie potoku usługi Azure DevOps do używania interfejsu wiersza polecenia platformy Azure do uwierzytelniania

Domyślnie interfejs wiersza polecenia usługi Azure Databricks będzie używać interfejsu wiersza polecenia platformy Azure jako mechanizmu do uwierzytelniania w usłudze Azure Databricks.

Należy pamiętać, że użycie interfejsu wiersza polecenia platformy Azure do uwierzytelniania wymaga wykonania wszystkich wywołań interfejsu wiersza polecenia usługi Azure Databricks w elemecie AzureCLI@2 task, co oznacza, że nie ma możliwości udostępniania uwierzytelnionej sesji w kolejnych zadaniach. Każde zadanie uwierzytelnia się niezależnie, co powoduje opóźnienie podczas ich uruchamiania.

Poniższa przykładowa konfiguracja usługi Azure Pipelines używa interfejsu wiersza polecenia platformy Azure do uwierzytelniania i uruchamiania polecenia interfejsu wiersza polecenia bundle deploy usługi Azure Databricks:

- 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

Podczas konfigurowania potoku usługi Azure DevOps w celu używania interfejsu wiersza polecenia platformy Azure do uruchamiania poleceń interfejsu wiersza polecenia usługi Azure Databricks wykonaj następujące czynności:

  • Użyj azureSubscription polecenia , aby skonfigurować połączenie usługi, którego chcesz użyć.
  • Skonfiguruj useGlobalConfig do używania wartości domyślnej AZURE_CONFIG_FILE , ponieważ databricks bundle polecenia używają filtrowania zmiennych środowiskowych dla podprocesów. Jeśli ta wartość nie zostanie ustawiona, te podprocesy nie będą mogły znaleźć szczegółów uwierzytelnionej sesji.
  • Jeśli nie został on już wyeksportowany (na przykład w poprzednim kroku lub w konfiguracji pakietu), wyeksportuj zmienną DATABRICKS_HOST środowiskową.

Konfigurowanie potoku usługi Azure DevOps do używania wpisu tajnego klienta entra firmy Microsoft do uwierzytelniania

Jeśli nie chcesz używać interfejsu wiersza polecenia platformy Azure do uwierzytelniania, ponieważ dodaje zbyt duże opóźnienie lub dlatego, że musisz użyć interfejsu wiersza polecenia platformy Azure w innym typie zadania, użyj wpisu tajnego klienta Firmy Microsoft Entra. Szczegóły uwierzytelniania należy pobrać z połączenia z usługą, dlatego należy użyć AzureCLI@2 zadania w deklaracji potoku.

AzureCLI@2 Użyj zadania , aby pobrać identyfikator klienta i klucz tajny klienta z połączenia usługi, a następnie wyeksportować je jako zmienne środowiskowe. Kolejne zadania mogą używać ich bezpośrednio. Przykład można znaleźć w temacie Use a Microsoft Entra service principal to manage Databricks Git folders (Używanie jednostki usługi Microsoft Entra do zarządzania folderami Git usługi Databricks).

Poniższa przykładowa konfiguracja usługi Azure Pipelines używa wpisu tajnego klienta entra firmy Microsoft do uwierzytelniania i uruchamiania polecenia interfejsu wiersza polecenia bundle deploy usługi Azure Databricks:

- 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

Podczas konfigurowania potoku usługi Azure DevOps do używania wpisów tajnych klienta usługi Microsoft Entra do uruchamiania poleceń interfejsu wiersza polecenia usługi Azure Databricks wykonaj następujące czynności:

  • Skonfiguruj addSpnToEnvironment , aby wyeksportować odpowiednie zmienne środowiskowe do skryptu wbudowanego.
  • Skrypt wbudowany eksportuje zmienne środowiskowe o zakresie zadań jako zmienne środowiskowe o zakresie zadania pod nazwami, które interfejs wiersza polecenia usługi Azure Databricks automatycznie pobiera.
  • Jeśli nie został on już wyeksportowany (na przykład w poprzednim kroku lub w konfiguracji pakietu), wyeksportuj zmienną DATABRICKS_HOST środowiskową.
  • Jeśli oznaczysz zmienną ARM_CLIENT_SECRET środowiskową issecret=trueza pomocą polecenia , musisz jawnie dodać ją do każdego kolejnego kroku, który go potrzebuje.
    • Jeśli tego nie zrobisz, zmienna ARM_CLIENT_SECRET środowiskowa będzie dostępna dla każdego kolejnego kroku.
    • Zmienna ARM_CLIENT_SECRET środowiskowa jest maskowana w danych wyjściowych niezależnie od ustawienia.

Konfigurowanie potoku usługi Azure DevOps do korzystania z tożsamości zarządzanej firmy Microsoft w celu uwierzytelniania

Ponieważ uwierzytelnianie tożsamości zarządzanej platformy Azure zależy od konfiguracji maszyny wirtualnej lub kontenera w celu zagwarantowania, że interfejs wiersza polecenia usługi Azure Databricks jest wykonywany w odpowiedniej tożsamości, konfiguracja potoku usługi Azure DevOps nie wymaga określenia AzureCLI@2 zadania.

Poniższa przykładowa konfiguracja usługi Azure Pipelines używa tożsamości zarządzanej firmy Microsoft Entra do uwierzytelniania i uruchamiania polecenia interfejsu wiersza polecenia bundle deploy usługi Azure Databricks:

- 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

Podczas konfigurowania potoku usługi Azure DevOps w celu używania tożsamości zarządzanych firmy Microsoft do uruchamiania poleceń interfejsu wiersza polecenia usługi Azure Databricks wykonaj następujące czynności:

  • Tożsamość zarządzana firmy Microsoft Entra musi mieć przypisaną rolę "Współautor" w obszarze roboczym usługi Databricks, do którego będzie uzyskiwany dostęp.
  • Wartość zmiennej środowiskowej DATABRICKS_AZURE_RESOURCE_ID znajduje się w obszarze Właściwości wystąpienia usługi Azure Databricks w witrynie Azure Portal.
  • Wartość zmiennej środowiskowej ARM_CLIENT_ID to identyfikator klienta tożsamości zarządzanej.

Uwaga

Jeśli zmienna DATABRICKS_HOST środowiskowa nie jest określona w tej konfiguracji, wartość zostanie wywnioskowana z .DATABRICKS_AZURE_RESOURCE_ID

Instalowanie interfejsu wiersza polecenia usługi Azure Databricks z potoku usługi Azure Pipelines

Po skonfigurowaniu preferowanych mechanizmów uwierzytelniania należy zainstalować interfejs wiersza polecenia usługi Azure Databricks na hoście lub agencie, który uruchomi polecenia interfejsu wiersza polecenia usługi Azure Databricks.

# Install Databricks CLI
- script: |
    curl -fsSL https://raw.githubusercontent.com/databricks/setup-cli/main/install.sh | sh
  displayName: 'Install Databricks CLI'

Napiwek

  • Jeśli nie chcesz automatycznie instalować najnowszej wersji interfejsu wiersza polecenia usługi Azure Databricks, zastąp ciąg main w adresie URL instalatora określoną wersją (na przykład v0.224.0).

Najlepsze rozwiązania

  • Usługa Databricks zaleca używanie federacji tożsamości obciążeń firmy Microsoft Entra jako wybranej metody uwierzytelniania. Nie korzysta ona z wpisów tajnych i jest bezpieczniejsza niż inne metody uwierzytelniania. Działa automatycznie z zadaniem bez konieczności ręcznej AzureCLI@2 konfiguracji.

    Aby uzyskać więcej informacji, zobacz Tworzenie połączenia usługi Azure Resource Manager korzystającego z federacji tożsamości obciążenia.

Zobacz też