Udostępnij przez


Uwierzytelnianie za pomocą usługi Azure DevOps w usłudze Azure 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 ramach automatyzacji.

Uwierzytelnianie usługi Azure DevOps

Zarządzanie uwierzytelnianiem (pierwszej i trzeciej strony) w usłudze Azure DevOps odbywa się za pomocą połączeń usługi. 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 Połączenia usług w Ustawieniach projektu w Azure DevOps

Aby uwierzytelnić i autoryzować dostęp CLI do Azure Databricks z zasobów Azure DevOps, użyj typu połączenia z usługą Azure Resource Manager. Dla tego typu wybierz jedną z następujących metod uwierzytelniania:

  • Federacja tożsamości obciążeń w 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: Azure CLI.
  • 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: Azure CLI, tajemnice klienta firmy Microsoft Entra.
  • Tożsamość zarządzana Microsoft Entra ID

Po wybraniu mechanizmu uwierzytelniania, który najlepiej odpowiada potrzebom projektu, należy skonfigurować go w definicji pipeline'u usługi Azure DevOps (pipeline.yml), aby działać z CLI usługi Azure Databricks.

Skonfiguruj potok Azure DevOps, aby używać Azure CLI do uwierzytelniania.

Domyślnie CLI usługi Azure Databricks będzie używać CLI Azure jako mechanizmu 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 Azure CLI do uwierzytelniania i uruchamiania polecenia interfejsu wiersza polecenia usługi Azure Databricks 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

Podczas konfigurowania potoku Azure DevOps w celu użycia interfejsu wiersza polecenia Azure do uruchamiania poleceń interfejsu wiersza polecenia Azure Databricks, wykonaj następujące czynności:

  • Użyj azureSubscription, 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ą.

Skonfiguruj potok Azure DevOps do używania sekreta klienta Microsoft Entra 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 konfiguracji przepływu.

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 tajnego klucza klienta Microsoft Entra do uwierzytelniania i uruchamiania polecenia interfejsu wiersza polecenia Azure Databricks 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

Konfigurując potok Azure DevOps do używania tajemnic klienta Microsoft Entra do uruchamiania poleceń CLI Azure Databricks, wykonaj następujące kroki:

  • Skonfiguruj addSpnToEnvironment , aby wyeksportować odpowiednie zmienne środowiskowe do skryptu wbudowanego.
  • Skrypt wbudowany eksportuje zmienne środowiskowe zakresu zadania jako zmienne środowiskowe zakresu pracy pod nazwami, które CLI Azure Databricks automatycznie wykrywa.
  • 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.

Konfiguruj potok Azure DevOps do korzystania z tożsamości zarządzanej firmy Microsoft do 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 Microsoft Entra do uwierzytelnienia i uruchomienia polecenia CLI 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 zarządzanych tożsamości Microsoft Entra do uruchamiania poleceń CLI narzędzia 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 / Notatka

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

Zainstaluj interfejs wiersza polecenia Azure Databricks przy użyciu potoku 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'

Wskazówka

  • 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

Zobacz także