Uruchamianie zadania przy użyciu jednostki usługi Microsoft Entra ID
Zadania zapewniają nieinterakcyjny sposób uruchamiania aplikacji w klastrze usługi Azure Databricks, na przykład zadania ETL lub zadania analizy danych, które powinny być uruchamiane zgodnie z harmonogramem. Zazwyczaj te zadania są uruchamiane jako użytkownik, który je utworzył, ale może to mieć pewne ograniczenia:
- Tworzenie i uruchamianie zadań zależy od użytkownika z odpowiednimi uprawnieniami.
- Tylko użytkownik, który utworzył zadanie, ma dostęp do zadania.
- Użytkownik może zostać usunięty z obszaru roboczego usługi Azure Databricks.
Używanie konta usługi — konta skojarzonego z aplikacją, a nie określonego użytkownika — jest typową metodą rozwiązywania tych ograniczeń. Na platformie Azure możesz użyć aplikacji Microsoft Entra ID i jednostki usługi, aby utworzyć konto usługi.
Przykładem tego, gdzie jest to ważne, jest to, że jednostki usługi kontrolują dostęp do danych przechowywanych na koncie usługi Azure Data Lake Storage Gen2. Uruchamianie zadań z tymi jednostkami usługi umożliwia zadaniaom uzyskiwanie dostępu do danych na koncie magazynu i zapewnia kontrolę nad zakresem dostępu do danych.
W tym samouczku opisano sposób tworzenia aplikacji Microsoft Entra ID i jednostki usługi oraz tworzenia jednostki usługi jako właściciela zadania przez jednostkę usługi. Dowiesz się również, jak przydzielić uprawnienia do uruchamiania zadania innym grupom, które nie są właścicielami zadania. Poniżej przedstawiono ogólne omówienie zadań w tym samouczku:
- Utwórz jednostkę usługi w identyfikatorze Entra firmy Microsoft.
- Utwórz osobisty token dostępu (PAT) w usłudze Azure Databricks. Użyjesz tokenu PAT do uwierzytelniania w interfejsie API REST usługi Databricks.
- Dodaj jednostkę usługi jako użytkownika niebędącego administratorem do usługi Azure Databricks przy użyciu interfejsu API SCIM usługi Databricks.
- Utwórz zakres wpisów tajnych opartych na usłudze Azure Key Vault w usłudze Azure Databricks.
- Udziel jednostce usługi dostępu do odczytu do zakresu wpisu tajnego.
- Utwórz zadanie w usłudze Azure Databricks i skonfiguruj klaster zadań w celu odczytu wpisów tajnych z zakresu wpisu tajnego.
- Przeniesienie własności zadania do jednostki usługi.
- Przetestuj zadanie, uruchamiając je jako jednostkę usługi.
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Uwaga
Nie można użyć klastra z włączonym przekazywaniem poświadczeń, aby uruchomić zadanie należące do jednostki usługi. Jeśli zadanie wymaga jednostki usługi w celu uzyskania dostępu do usługi Azure Storage, zobacz Nawiązywanie połączenia z usługą Azure Data Lake Storage Gen2 lub Blob Storage przy użyciu poświadczeń platformy Azure.
Wymagania
W tym samouczku będą potrzebne następujące elementy:
- Konto użytkownika z uprawnieniami wymaganymi do zarejestrowania aplikacji w dzierżawie identyfikatora Entra firmy Microsoft.
- Uprawnienia administracyjne w obszarze roboczym usługi Azure Databricks, w którym będą uruchamiane zadania.
- Narzędzie do tworzenia żądań interfejsu API do usługi Azure Databricks. W tym samouczku użyto biblioteki cURL, ale możesz użyć dowolnego narzędzia, które umożliwia przesyłanie żądań interfejsu API REST.
Tworzenie jednostki usługi w identyfikatorze Entra firmy Microsoft
Jednostka usługi to tożsamość aplikacji Microsoft Entra ID. Aby utworzyć jednostkę usługi, która będzie używana do uruchamiania zadań:
- W witrynie Azure Portal wybierz pozycję > aplikacji microsoft Entra ID>). Wprowadź nazwę aplikacji i kliknij przycisk Zarejestruj.
- Przejdź do pozycji Certyfikaty i wpisy tajne, kliknij pozycję Nowy klucz tajny klienta i wygeneruj nowy klucz tajny klienta. Skopiuj i zapisz wpis tajny w bezpiecznym miejscu.
- Przejdź do pozycji Przegląd i zanotuj identyfikator aplikacji (klienta) i identyfikator katalogu (dzierżawy).
Tworzenie osobistego tokenu dostępu usługi Azure Databricks
Użyjesz osobistego tokenu dostępu usługi Azure Databricks (PAT), aby uwierzytelnić się w interfejsie API REST usługi Databricks. Aby utworzyć token dostępu, który może służyć do tworzenia żądań interfejsu API:
- Przejdź do obszaru roboczego usługi Azure Databricks.
- Kliknij swoją nazwę użytkownika w prawym górnym rogu ekranu i kliknij pozycję Ustawienia.
- Kliknij pozycję Deweloper.
- Obok pozycji Tokeny dostępu kliknij pozycję Zarządzaj.
- Kliknij pozycję Generuj nowy token.
- Skopiuj i zapisz wartość tokenu.
Napiwek
W tym przykładzie użyto osobistego tokenu dostępu, ale dla większości interfejsów API można użyć tokenu identyfikatora Entra firmy Microsoft. Najlepszym rozwiązaniem jest to, że pat jest odpowiedni dla zadań konfiguracji administracyjnej, ale tokeny identyfikatora Entra firmy Microsoft są preferowane w przypadku obciążeń produkcyjnych.
Generowanie paT można ograniczyć do administratorów tylko do celów zabezpieczeń. Aby uzyskać więcej informacji, zobacz Monitorowanie i odwoływanie osobistych tokenów dostępu.
Dodawanie jednostki usługi do obszaru roboczego usługi Azure Databricks
Jednostkę usługi Microsoft Entra ID można dodać do obszaru roboczego przy użyciu interfejsu API jednostki usługi. Należy również przyznać jednostce usługi uprawnienie do uruchamiania zautomatyzowanych klastrów zadań. Możesz przyznać to za pośrednictwem allow-cluster-create
uprawnienia. Otwórz terminal i użyj interfejsu wiersza polecenia usługi Databricks, aby uruchomić następujące polecenie, aby dodać jednostkę usługi i udzielić wymaganych uprawnień:
databricks service-principals create --json '{
"schemas":[
"urn:ietf:params:scim:schemas:core:2.0:ServicePrincipal"
],
"applicationId":"<application-id>",
"displayName": "test-sp",
"entitlements":[
{
"value":"allow-cluster-create"
}
]
}'
Zastąp <application-id>
element wartością Application (client) ID
dla rejestracji aplikacji Microsoft Entra ID.
Tworzenie zakresu wpisów tajnych opartych na usłudze Azure Key Vault w usłudze Azure Databricks
Zarządzanie zakresami wpisów tajnych zapewnia bezpieczny magazyn i zarządzanie wpisami tajnymi. Wpis tajny skojarzony z jednostką usługi będzie przechowywany w zakresie wpisu tajnego. Wpisy tajne można przechowywać w zakresie wpisów tajnych usługi Azure Databricks lub w zakresie wpisów tajnych opartych na usłudze Azure Key Vault. W tych instrukcjach opisano opcję opartej na usłudze Azure Key Vault:
- Utwórz wystąpienie usługi Azure Key Vault w witrynie Azure Portal.
- Utwórz zakres wpisów tajnych usługi Azure Databricks wspierany przez wystąpienie usługi Azure Key Vault.
Krok 1. Tworzenie wystąpienia usługi Azure Key Vault
W witrynie Azure Portal wybierz pozycję Magazyny > kluczy + Dodaj i nadaj usłudze Key Vault nazwę.
Kliknij pozycję Przejrzyj i utwórz.
Po zakończeniu walidacji kliknij pozycję Utwórz .
Po utworzeniu usługi Key Vault przejdź do strony Właściwości nowej usługi Key Vault.
Skopiuj i zapisz identyfikator URI magazynu i identyfikator zasobu.
Krok 2. Tworzenie zakresu wpisów tajnych opartych na usłudze Azure Key Vault
Zasoby usługi Azure Databricks mogą odwoływać się do wpisów tajnych przechowywanych w usłudze Azure Key Vault, tworząc zakres wpisów tajnych opartych na usłudze Key Vault. Aby utworzyć zakres wpisów tajnych usługi Azure Databricks:
Przejdź do strony Azure Databricks Create Secret Scope (Tworzenie zakresu wpisu tajnego) pod adresem
https://<per-workspace-url>/#secrets/createScope
. Zastąpper-workspace-url
element unikatowym adresem URL dla obszaru roboczego usługi Azure Databricks.Wprowadź nazwę zakresu.
Wprowadź wartości identyfikatora URI magazynu i identyfikatora zasobu dla usługi Azure Key Vault utworzonej w kroku 1: Tworzenie wystąpienia usługi Azure Key Vault.
Kliknij pozycję Utwórz.
Zapisywanie wpisu tajnego klienta w usłudze Azure Key Vault
W witrynie Azure Portal przejdź do usługi Magazyny kluczy.
Wybierz usługę Key Vault utworzoną w kroku 1: Tworzenie wystąpienia usługi Azure Key Vault.
W obszarze Ustawienia > Wpisy tajne kliknij pozycję Generuj/Importuj.
Wybierz opcję Ręczne przekazywanie i wprowadź klucz tajny klienta w polu Wartość.
Kliknij pozycję Utwórz.
Udzielanie jednostce usługi dostępu do odczytu do zakresu wpisu tajnego
Utworzono zakres wpisu tajnego i zapisano klucz tajny klienta jednostki usługi w tym zakresie. Teraz przyznasz jednostce usługi dostęp do odczytu wpisu tajnego z zakresu wpisu tajnego.
Otwórz terminal i użyj interfejsu wiersza polecenia usługi Databricks, aby uruchomić następujące polecenie:
databricks secrets put-acl <scope-name> <application-id> READ
- Zastąp
<scope-name>
ciąg nazwą zakresu wpisu tajnego usługi Azure Databricks, który zawiera klucz tajny klienta. - Zastąp
<application-id>
element wartościąApplication (client) ID
dla rejestracji aplikacji Microsoft Entra ID.
Tworzenie zadania w usłudze Azure Databricks i konfigurowanie klastra pod kątem odczytywania wpisów tajnych z zakresu wpisu tajnego
Teraz możesz utworzyć zadanie, które można uruchomić jako nową jednostkę usługi. Użyjesz notesu utworzonego w interfejsie użytkownika usługi Azure Databricks i dodasz konfigurację, aby umożliwić klastrowi zadań pobranie wpisu tajnego jednostki usługi.
Przejdź do strony docelowej usługi Azure Databricks i wybierz pozycję Nowy > notes. Nadaj notesowi nazwę i wybierz pozycję SQL jako język domyślny.
Wprowadź
SELECT 1
ciąg w pierwszej komórce notesu. Jest to proste polecenie, które wyświetla tylko 1, jeśli się powiedzie. Jeśli udzielono jednostce usługi dostępu do określonych plików lub ścieżek w usłudze Azure Data Lake Storage Gen 2, możesz zamiast tego odczytać te ścieżki.Przejdź do obszaru Przepływy pracy i kliknij pozycję Utwórz zadanie. Nadaj zadanie i nazwę zadania, kliknij pozycję Wybierz notes i wybierz właśnie utworzony notes.
Kliknij przycisk Edytuj obok informacji o klastrze.
Na stronie Konfigurowanie klastra kliknij pozycję Opcje zaawansowane.
Na karcie Spark wprowadź następującą konfigurację platformy Spark:
fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net OAuth fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net <application-id> fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net {{secrets/<secret-scope-name>/<secret-name>}} fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net https://login.microsoftonline.com/<directory-id>/oauth2/token
- Zastąp
<storage-account>
ciąg nazwą konta magazynu zawierającego dane. - Zastąp
<secret-scope-name>
ciąg nazwą zakresu wpisu tajnego usługi Azure Databricks, który zawiera klucz tajny klienta. - Zastąp
<application-id>
element wartościąApplication (client) ID
dla rejestracji aplikacji Microsoft Entra ID. - Zastąp
<secret-name>
ciąg nazwą skojarzona z wartością klucza tajnego klienta w zakresie wpisu tajnego. - Zastąp
<directory-id>
element wartościąDirectory (tenant) ID
dla rejestracji aplikacji Microsoft Entra ID.
- Zastąp
Przenoszenie własności zadania do jednostki usługi
Zadanie może mieć dokładnie jednego właściciela, więc musisz przenieść własność zadania od siebie do jednostki usługi. Aby upewnić się, że inni użytkownicy mogą zarządzać zadaniem, możesz również przyznać grupie uprawnienia CAN MANAGE. W tym przykładzie używamy interfejsu API uprawnień do ustawiania tych uprawnień.
Otwórz terminal i użyj interfejsu wiersza polecenia usługi Databricks, aby uruchomić następujące polecenie:
databricks permissions set jobs <job-id> --json '{
"access_control_list": [
{
"service_principal_name": "<application-id>",
"permission_level": "IS_OWNER"
},
{
"group_name": "admins",
"permission_level": "CAN_MANAGE"
}
]
}'
- Zastąp
<job-id>
element unikatowym identyfikatorem zadania. Aby znaleźć identyfikator zadania, kliknij pozycję Przepływy pracy na pasku bocznym i kliknij nazwę zadania. Identyfikator zadania znajduje się w panelu bocznym Szczegóły zadania. - Zastąp
<application-id>
element wartościąApplication (client) ID
dla rejestracji aplikacji Microsoft Entra ID.
Zadanie będzie również potrzebować uprawnień do odczytu do notesu. Użyj interfejsu wiersza polecenia usługi Databricks, aby uruchomić następujące polecenie, aby udzielić wymaganych uprawnień:
databricks permissions set notebooks <notebook-id> --json '{
"access_control_list": [
{
"service_principal_name": "<application-id>",
"permission_level": "CAN_READ"
}
]
}'
- Zastąp
<notebook-id>
ciąg identyfikatorem notesu skojarzonego z zadaniem. Aby znaleźć identyfikator, przejdź do notesu w obszarze roboczym usługi Azure Databricks i poszukaj identyfikatora liczbowego, który znajduje się poniżejnotebook/
w adresie URL notesu. - Zastąp
<application-id>
element wartościąApplication (client) ID
dla rejestracji aplikacji Microsoft Entra ID.
Testowanie zadania
Zadania są uruchamiane przy użyciu jednostki usługi w taki sam sposób, jak zadania użytkownika, za pośrednictwem interfejsu użytkownika, interfejsu API lub interfejsu wiersza polecenia. Aby przetestować zadanie przy użyciu interfejsu użytkownika usługi Azure Databricks:
- Przejdź do obszaru Przepływy pracy w interfejsie użytkownika usługi Azure Databricks i wybierz zadanie.
- Kliknij przycisk Uruchom teraz.
Jeśli wszystko działa poprawnie, zobaczysz stan Powodzenie dla zadania. Możesz wybrać zadanie w interfejsie użytkownika, aby zweryfikować dane wyjściowe:
Dowiedz się więcej
Aby dowiedzieć się więcej na temat tworzenia i uruchamiania zadań, zobacz Planowanie i organizowanie przepływów pracy.