Konfigurowanie tożsamości zarządzanej dla harmonogramu zadań trwałych

Program Durable Task Scheduler używa tożsamości zarządzanej do uwierzytelniania. Możesz użyć tożsamości zarządzanej przypisanej przez użytkownika lub przypisanej przez system . Zalecane są tożsamości przypisane przez użytkownika, ponieważ nie są powiązane z cyklem życia aplikacji i mogą być ponownie użyte po dezaprowizacji aplikacji.

W tym artykule opisano dwa sposoby konfigurowania tożsamości zarządzanej:

  • Szybka konfiguracja — pojedyncze polecenie CLI, które automatyzuje przypisywanie ról, dołączenie tożsamości i konfigurację zmiennych środowiskowych.
  • Ręczna konfiguracja — instrukcje krok po kroku dotyczące pełnej kontroli nad poszczególnymi krokami konfiguracji.

Wymagania wstępne

  • Konto platformy Azure z aktywną subskrypcją. Utwórz bezpłatne konto.
  • Trwały harmonogram zadań i zasób centrum zadań już aprowizowany.
  • Azure CLI z zainstalowanym rozszerzeniem durabletask (az extension add --name durabletask).
  • Rola właściciela lub administratora dostępu użytkowników w zasobie harmonogramu (wymaganym do tworzenia przypisań ról).

Niezawodne role RBAC harmonogramu zadań

Można przyznać tożsamości następujące role związane z harmonogramem trwałych zadań:

roli Opis
Współtwórca danych trwałego zadania Rola dla wszystkich operacji dostępu do danych. Ta rola jest nadzbiorem wszystkich innych ról.
Trwały pracownik zadań Rola używana przez aplikacje pracownicze do interakcji z harmonogramem zadań Durable Task Scheduler. Przypisz tę rolę, jeśli aplikacja jest używana tylko do przetwarzania aranżacji, działań i jednostek.
Czytnik danych Durable Task Rola do odczytywania wszystkich danych harmonogramu zadań trwałych. Przypisz tę rolę, jeśli potrzebujesz tylko listy aranżacji i odczytaj ładunki jednostek.

Uwaga / Notatka

Większość aplikacji wymaga roli Kontrybutora Danych Trwałych Zadań.

Szybka konfiguracja za pomocą polecenia az durabletask scheduler attach

Polecenie az durabletask scheduler attach automatyzuje przypisywanie ról, tożsamości oraz konfigurację zmiennych środowiskowych.

W poniższym przykładzie scheduler jest dołączany do aplikacji Function App przy użyciu tożsamości zarządzanej przypisanej przez użytkownika z rolą Durable Task Data Contributor:

az durabletask scheduler attach \
  --resource-group RESOURCE_GROUP_NAME \
  --name SCHEDULER_NAME \
  --task-hub-name TASKHUB_NAME \
  --role-type contributor \
  --target /subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.Web/sites/FUNCTION_APP_NAME \
  --identity /subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.ManagedIdentity/userAssignedIdentities/IDENTITY_NAME

W przypadku aplikacji kontenera:

az durabletask scheduler attach \
  --resource-group RESOURCE_GROUP_NAME \
  --name SCHEDULER_NAME \
  --task-hub-name TASKHUB_NAME \
  --role-type contributor \
  --target /subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.App/containerApps/CONTAINER_APP_NAME \
  --identity /subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.ManagedIdentity/userAssignedIdentities/IDENTITY_NAME

Uwaga / Notatka

W przypadku pominięcia parametru --identity polecenie używa tożsamości zarządzanej przypisanej przez system.

Aby uzyskać więcej informacji, odwiedź az durabletask scheduler attach.

Konfiguracja ręczna

Jeśli potrzebujesz szczegółowej kontroli nad każdym krokiem, postępuj zgodnie z poniższymi instrukcjami, aby przypisać RBAC, przypisać tożsamość i indywidualnie skonfigurować zmienne środowiskowe.

Przypisywanie kontroli dostępu opartej na rolach (RBAC) do zasobu tożsamości zarządzanej

  1. Tworzenie tożsamości zarządzanej przypisanej przez użytkownika

    az identity create -g RESOURCE_GROUP_NAME -n IDENTITY_NAME
    
  2. Ustaw osobę odpowiedzialną na utworzonego zasobu tożsamości

    assignee=$(az identity show --name IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv) 
    
  3. Ustaw zakres. Użyj zakresu centrum zadań, aby uzyskać dostęp z minimalnymi uprawnieniami. Zakres harmonogramu należy używać tylko wtedy, gdy tożsamość wymaga dostępu do wszystkich centrów zadań w harmonogramie.

    Zakres centrum zadań (zalecane)

    scope="/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.DurableTask/schedulers/SCHEDULER_NAME/taskHubs/TASKHUB_NAME"
    

    Zakres harmonogramu (wszystkie centra zadań)

    scope="/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.DurableTask/schedulers/SCHEDULER_NAME"
    
  4. Udziel dostępu. Uruchom następujące polecenie, aby utworzyć przypisanie roli i udzielić dostępu.

    az role assignment create \
      --assignee "$assignee" \
      --role "Durable Task Data Contributor" \
      --scope "$scope"
    

    Oczekiwane dane wyjściowe

    Poniższy przykład danych wyjściowych pokazuje tożsamość dewelopera, któremu przypisano rolę Współautora danych zadań trwałych na poziomie harmonogramu.

    {
      "condition": null,
      "conditionVersion": null,
      "createdBy": "YOUR_DEVELOPER_CREDENTIAL_ID",
      "createdOn": "2024-12-20T01:36:45.022356+00:00",
      "delegatedManagedIdentityResourceId": null,
      "description": null,
      "id": "/subscriptions/YOUR_SUBSCRIPTION_ID/resourceGroups/YOUR_RESOURCE_GROUP/providers/Microsoft.DurableTask/schedulers/YOUR_DTS_NAME/providers/Microsoft.Authorization/roleAssignments/ROLE_ASSIGNMENT_ID",
      "name": "ROLE_ASSIGNMENT_ID",
      "principalId": "YOUR_DEVELOPER_CREDENTIAL_ID",
      "principalName": "YOUR_EMAIL",
      "principalType": "User",
      "resourceGroup": "YOUR_RESOURCE_GROUP",
      "roleDefinitionId": "/subscriptions/YOUR_SUBSCRIPTION/providers/Microsoft.Authorization/roleDefinitions/ROLE_DEFINITION_ID",
      "roleDefinitionName": "Durable Task Data Contributor",
      "scope": "/subscriptions/YOUR_SUBSCRIPTION/resourceGroups/YOUR_RESOURCE_GROUP/providers/Microsoft.DurableTask/schedulers/YOUR_DTS_NAME",
      "type": "Microsoft.Authorization/roleAssignments",
      "updatedBy": "YOUR_DEVELOPER_CREDENTIAL_ID",
      "updatedOn": "2024-12-20T01:36:45.022356+00:00"
    }
    

Uwaga / Notatka

Poniższa instrukcja przedstawia przypisanie roli o określonym zakresie do określonego centrum zadań. Jeśli potrzebujesz dostępu do wszystkich węzłów zadań w planu, wykonaj przypisanie na poziomie planisty.

  1. Utwórz zarządzaną przez użytkownika tożsamość.

  2. Przejdź do zasobu Durable Task Scheduler w portalu.

  3. Wybierz nazwę centrum zadań.

  4. W menu po lewej stronie wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami)..

  5. Wybierz pozycję Dodaj , aby dodać przypisanie roli.

    Zrzut ekranu przedstawiający dodawanie przypisania roli w panelu Access Control w portalu.

  6. Wyszukaj i wybierz Durable Task Data Contributor. Wybierz Dalej.

    Zrzut ekranu przedstawiający wybieranie przypisania roli Współautor danych zadania trwałego w portalu.

  7. Na karcie Członkowie w polu Przypisz dostęp do wybierz pozycję Tożsamość zarządzana.

  8. W obszarze Członkowie wybierz pozycję + Wybierz członków.

  9. W okienku Wybieranie tożsamości zarządzanych rozwiń listę rozwijaną Tożsamość zarządzana i wybierz pozycję Tożsamość zarządzana przypisana przez użytkownika.

    Zrzut ekranu przedstawiający wybieranie typu tożsamości zarządzanej przypisanej przez użytkownika, którego będziesz używać w portalu.

  10. Wybierz wcześniej utworzoną tożsamość zarządzaną przez użytkownika i wybierz pozycję Wybierz.

  11. Wybierz Review + assign, aby zakończyć przypisywanie roli.

Przypisywanie tożsamości zarządzanej do aplikacji

Teraz, gdy tożsamość ma wymagany RBAC do narzędzia Durable Task Scheduler, musisz przypisać ją do aplikacji.

  1. Pobierz identyfikator zasobu tożsamości zarządzanej.

    resource_id=$(az resource show --resource-group RESOURCE_GROUP_NAME --name IDENTITY_NAME --resource-type Microsoft.ManagedIdentity/userAssignedIdentities --query id --output tsv)
    
  2. Przypisz tożsamość do aplikacji.

    az functionapp identity assign --resource-group RESOURCE_GROUP_NAME --name FUNCTION_APP_NAME --identities "$resource_id"
    
  1. W aplikacji w portalu wybierz pozycję Ustawienia>Tożsamość.

  2. Wybierz kartę Użytkownik przypisany .

  3. Wybierz pozycję + Dodaj, a następnie wybierz tożsamość utworzoną w ostatniej sekcji. Wybierz Dodaj.

    Zrzut ekranu przedstawiający dodawanie tożsamości zarządzanej przypisanej przez użytkownika do aplikacji funkcjonalnej w portalu.

Dodawanie zmiennych środowiskowych do aplikacji

Dodaj następujące dwie zmienne środowiskowe do aplikacji:

Zmienna środowiskowa Value Przykład
DURABLE_TASK_SCHEDULER_CONNECTION_STRING Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity;ClientID=<IDENTITY_CLIENT_ID> Endpoint=https://myscheduler.westus2.durabletask.io;Authentication=ManagedIdentity;ClientID=00000000-0000-0000-0000-000000000000
TASKHUB_NAME Nazwa centrum zadań my-task-hub

Uwaga / Notatka

Jeśli używasz tożsamości przypisaną przez system, pomiń parametr z łańcucha połączeń: .

  1. Uzyskaj wymagane informacje dotyczące łańcucha połączenia.

    Pobierz punkt końcowy harmonogramu:

    az durabletask scheduler show --resource-group RESOURCE_GROUP_NAME --name SCHEDULER_NAME --query 'properties.endpoint' --output tsv
    

    Pobierz identyfikator klienta tożsamości zarządzanej:

    az identity show --name IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv
    
  2. Ustaw obie zmienne środowiskowe w aplikacji.

    az functionapp config appsettings set \
      --resource-group RESOURCE_GROUP_NAME \
      --name FUNCTION_APP_NAME \
      --settings \
        DURABLE_TASK_SCHEDULER_CONNECTION_STRING="Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity;ClientID=<IDENTITY_CLIENT_ID>" \
        TASKHUB_NAME="<TASKHUB_NAME>"
    
  1. Uzyskaj wymagane informacje dotyczące łańcucha połączenia.

    Aby uzyskać punkt końcowy harmonogramu, przejdź do karty Przegląd zasobu harmonogramu i znajdź punkt końcowy w sekcji Podstawy .

    Aby uzyskać identyfikator klienta tożsamości zarządzanej, przejdź do karty Przegląd zasobu tożsamości zarządzanej i znajdź identyfikator klienta w sekcji Podstawy .

    Zrzut ekranu strony przeglądu tożsamości zarządzanej pokazujący lokalizację identyfikatora klienta w portalu Azure.

  2. Przejdź do aplikacji w portalu.

  3. W menu po lewej stronie wybierz pozycję Ustawienia>Zmienne środowiskowe.

  4. Dodaj zmienną środowiskową o nazwie DURABLE_TASK_SCHEDULER_CONNECTION_STRING z wartością Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity;ClientID=<IDENTITY_CLIENT_ID>.

  5. Dodaj zmienną środowiskową o nazwie TASKHUB_NAME z nazwą twojego centrum zadań.

  6. Wybierz pozycję Zastosuj, a następnie potwierdź , aby zapisać zmienne.