Udostępnij za pośrednictwem


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 (dawniej Azure Active Directory) 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:

  1. Utwórz jednostkę usługi w identyfikatorze Entra firmy Microsoft.
  2. 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.
  3. 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.
  4. Utwórz zakres wpisów tajnych opartych na usłudze Azure Key Vault w usłudze Azure Databricks.
  5. Udziel jednostce usługi dostępu do odczytu do zakresu wpisu tajnego.
  6. Utwórz zadanie w usłudze Azure Databricks i skonfiguruj klaster zadań w celu odczytu wpisów tajnych z zakresu wpisu tajnego.
  7. Przeniesienie własności zadania do jednostki usługi.
  8. 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 Połączenie do usługi 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.
  • Administracja istracyjne uprawnienia 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ń:

  1. W witrynie Azure Portal wybierz pozycję Microsoft Entra ID App Registrations New Registrations (Rejestracje > nowej rejestracji aplikacji microsoft Entra ID>). Wprowadź nazwę aplikacji i kliknij przycisk Zarejestruj.
  2. 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.
  3. 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:

  1. Przejdź do obszaru roboczego usługi Azure Databricks.
  2. Kliknij swoją nazwę użytkownika w prawym górnym rogu ekranu i kliknij przycisk Ustawienia.
  3. Kliknij pozycję Deweloper.
  4. Obok pozycji Tokeny dostępu kliknij pozycję Zarządzaj.
  5. Kliknij pozycję Generuj nowy token.
  6. 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 osobistych tokenów dostępu i zarządzanie nimi.

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

Zakresy wpisów tajnych zapewniają bezpieczny magazyn wpisów tajnych i zarządzanie nimi. 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:

  1. Utwórz wystąpienie usługi Azure Key Vault w witrynie Azure Portal.
  2. 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

  1. W witrynie Azure Portal wybierz pozycję Magazyny > kluczy + Dodaj i nadaj usłudze Key Vault nazwę.

  2. Kliknij pozycję Przejrzyj i utwórz.

  3. Po zakończeniu walidacji kliknij pozycję Utwórz .

  4. Po utworzeniu usługi Key Vault przejdź do strony Właściwości nowej usługi Key Vault.

  5. Skopiuj i zapisz identyfikator URI magazynu i identyfikator zasobu.

    Właściwości usługi Azure Key Vault

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:

  1. Przejdź do strony Azure Databricks Create Secret Scope (Tworzenie zakresu wpisu tajnego) pod adresem https://<per-workspace-url>/#secrets/createScope. Zastąp per-workspace-url element unikatowym adresem URL dla obszaru roboczego usługi Azure Databricks.

  2. Wprowadź nazwę zakresu.

  3. 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.

  4. Kliknij pozycję Utwórz.

    Tworzenie zakresu wpisów tajnych

Zapisywanie wpisu tajnego klienta w usłudze Azure Key Vault

  1. W witrynie Azure Portal przejdź do usługi Magazyny kluczy.

  2. Wybierz usługę Key Vault utworzoną w kroku 1: Tworzenie wystąpienia usługi Azure Key Vault.

  3. W obszarze Ustawienia Wpisy tajne kliknij pozycję Generuj/Importuj>.

  4. Wybierz opcję Ręczne przekazywanie i wprowadź klucz tajny klienta w polu Wartość.

    Utwórz wpis tajny

  5. 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.

  1. 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.

  2. 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.

  3. 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.

  4. Kliknij przycisk Edytuj obok informacji o klastrze.

  5. Na stronie Konfigurowanie klastra kliknij pozycję Opcje zaawansowane.

  6. 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.

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żej notebook/ 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:

  1. Przejdź do obszaru Przepływy pracy w interfejsie użytkownika usługi Azure Databricks i wybierz zadanie.
  2. Kliknij pozycję 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:

Dane wyjściowe zadania

Dowiedz się więcej

Aby dowiedzieć się więcej na temat tworzenia i uruchamiania zadań, zobacz Tworzenie i uruchamianie zadań usługi Azure Databricks.