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.
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
- Używa tożsamości przypisanej do zasobu (takiego jak obliczenia), na którym jest wykonywany interfejs wiersza polecenia. W kontekście usługi Azure DevOps jest to istotne tylko wtedy, gdy używasz własnych modułów uruchamiaczy. Zobacz Tworzenie połączenia usługi Azure Resource Manager z maszyną wirtualną korzystającą z tożsamości zarządzanej.
- Odpowiednie mechanizmy uwierzytelniania: interfejs wiersza polecenia platformy Azure, tożsamości zarządzane przez firmę Microsoft Entra (dawniej "MSI").
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ślnejAZURE_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=true
za 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.
- Jeśli tego nie zrobisz, zmienna
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ładv0.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.