Szybki start: konfigurowanie Durable Functions przy użyciu tożsamości zarządzanej

Ten szybki start pokazuje, jak skonfigurować aplikację Durable Functions tak, aby korzystała z połączeń opartych na tożsamości zarówno dla backendu Durable Task Scheduler, jak i dla dostawcy Azure Storage. Platforma Azure zarządza zarządzaną tożsamością z Microsoft Entra ID – nie musisz przydzielać ani rotować żadnych sekretów.

Ta ścieżka zakłada, że Twoja aplikacja jest już skonfigurowana do korzystania z backendu Durable Task Scheduler. Jeśli Twoja aplikacja nadal korzysta z dostawcy Azure Storage, wybierz ścieżkę Azure Storage w tym artykule.

W tym artykule:

Note

Tożsamość zarządzana jest obsługiwana w rozszerzeniu Durable Functions w wersjach 2.7.0 i nowszych.

Jeśli nie masz jeszcze konta platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

Wymagania wstępne

Aby ukończyć tę instrukcję szybkiego startu, potrzebujesz:

  • Istniejący projekt Durable Functions utworzony w portalu Azure lub lokalny projekt Durable Functions wdrożony w Azure.
  • Znajomość uruchamiania aplikacji Durable Functions w Azure.

Jeśli nie masz istniejącego projektu Durable Functions wdrożonego na platformie Azure, zalecamy rozpoczęcie od jednego z następujących szybkich przewodników:

Konfiguracja programowania lokalnego

Masz dwie opcje rozwoju lokalnego. Użyj lokalnego emulatora Durable Task Scheduler do szybkiego testowania bez poświadczeń Azure. Jeśli musisz przetestować połączenia oparte na tożsamości na produkcyjnym zasobie harmonogramu, użyj zamiast tego swoich poświadczeń deweloperskich.

Opcja 1: Użyj lokalnego emulatora Trwałego Harmonograma Zadań

Podczas lokalnego tworzenia korzystaj z emulatora Durable Task Scheduler, aby móc przetestować aplikację bez danych uwierzytelniających Azure. Skonfiguruj ustawienia aplikacji, aby wskazywały na emulator i korzystaj z domyślnego hub zadań.

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "DTS_CONNECTION_STRING": "Endpoint=http://localhost:8080;TaskHub=default;Authentication=None",
    "TASKHUB_NAME": "default"
  }
}

Opcja 2: Połączenia oparte na tożsamości na potrzeby lokalnego rozwoju

Ściśle rzecz biorąc, zarządzana tożsamość jest dostępna tylko dla aplikacji podczas wykonywania w Azure. Możesz jednak nadal skonfigurować aplikację uruchomioną lokalnie tak, aby korzystała z połączeń opartych na tożsamości, używając poświadczeń dewelopera do uwierzytelniania w zasobie harmonogramu. Następnie po wdrożeniu na platformie Azure aplikacja korzysta zamiast tego z konfiguracji tożsamości zarządzanej.

Gdy używasz poświadczeń deweloperskich, połączenie próbuje uzyskać token uwierzytelniający z następujących lokalizacji, w podanej kolejności:

  1. Pamięć podręczna lokalna wspólna dla aplikacji Microsoft
  2. Bieżący kontekst użytkownika w Visual Studio
  3. Bieżący kontekst użytkownika w Visual Studio Code
  4. Bieżący kontekst użytkownika w Azure CLI

Jeśli żadna z tych opcji nie powiedzie się, zostanie wyświetlony błąd wskazujący, że aplikacja nie może pobrać tokenu uwierzytelniania. Sprawdź, czy jesteś zalogowany do jednego z wymienionych narzędzi z kontem mającym dostęp do zasobów planisty.

Konfigurowanie środowiska uruchomieniowego do korzystania z lokalnej tożsamości dewelopera

  1. W ustawieniach lokalnych ustaw punkt końcowy harmonogramu i użyj Authentication=DefaultAzure, aby aplikacja korzystała z Twoich poświadczeń deweloperskich.

    {
      "IsEncrypted": false,
      "Values": {
        "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "DTS_CONNECTION_STRING": "Endpoint=https://<your-scheduler-name>.<region>.durabletask.io;TaskHub=<your-task-hub>;Authentication=DefaultAzure",
        "TASKHUB_NAME": "<your-task-hub>"
      }
    }
    
  2. Przypisz tożsamości dewelopera rolę Durable Task Data Contributor dla zasobu harmonogramu lub w zakresie określonego centrum zadań.

Połączenia oparte na tożsamościach dla aplikacji wdrożonej w Azure

Włącz zarządzany zasób tożsamości

Włącz zarządzaną tożsamość dla swojej aplikacji funkcyjnej. Aplikacja funkcji musi mieć tożsamość zarządzaną przypisaną przez system lub tożsamość zarządzaną przypisaną przez użytkownika. Aby włączyć tożsamość zarządzaną dla aplikacji funkcji i dowiedzieć się więcej o różnicach między dwoma typami tożsamości, zobacz Omówienie tożsamości zarządzanej.

Przypisywanie ról dostępu do tożsamości zarządzanej

Przejdź do zasobu harmonogramu w portalu Azure i przypisz swojej tożsamości zarządzanej rolę Durable Task Data Contributor. Dla dostępu z najmniejszymi uprawnieniami należy przypisać rolę w zakresie centrum zadań, a nie w całym planiście. Jeśli używasz tożsamości przypisanej przez użytkownika, wybierz Tożsamość zarządzaną , a następnie + Wybierz członków.

Dodawanie konfiguracji tożsamości zarządzanej do aplikacji

Przed użyciem tożsamości zarządzanej aplikacji wprowadź pewne zmiany w ustawieniach aplikacji:

  1. W portalu Azure w menu zasobów aplikacji funkcji w obszarze Settings wybierz pozycję Zmienne środowiskowe.

  2. Dodaj lub zaktualizuj ustawienie DTS_CONNECTION_STRING, aby aplikacja łączyła się z harmonogramem przy użyciu zarządzanej tożsamości aplikacji.

    Endpoint=https://<your-scheduler-name>.<region>.durabletask.io;TaskHub=<your-task-hub>;Authentication=ManagedIdentity
    

    Jeśli używasz zarządzanej tożsamości przypisanej przez użytkownika, umieść identyfikator klienta w parametry połączenia:

    Endpoint=https://<your-scheduler-name>.<region>.durabletask.io;TaskHub=<your-task-hub>;Authentication=ManagedIdentity;ClientID=<your-user-assigned-identity-client-id>
    
  3. Dodaj lub zaktualizuj ustawienie TASKHUB_NAME na tę samą nazwę centrum zadań.

  4. Jeśli Twój host Function potrzebuje Azure Storage do operacji na poziomie hosta, konfiguruj AzureWebJobsStorage osobno. Zaplecze harmonogramu używa parametrów połączenia DTS zamiast AzureWebJobsStorage na potrzeby trwałego stanu.

Weryfikowanie konfiguracji

Aby potwierdzić, że konfiguracja tożsamości zarządzanej działa:

  1. W portalu Azure przejdź do aplikacji Function i wywołaj orkiestrację Durable Functions.
  2. Sprawdź, czy orkiestracja zakończyła się pomyślnie, odpytując punkt końcowy stanu lub sprawdzając kartę Monitor.
  3. Jeśli widzisz błędy uwierzytelniania, sprawdź, czy:
    • Tożsamość zarządzana ma przypisaną rolę Durable Task Data Contributor w zakresie zasobu harmonogramu lub centrum zadań.
    • Ustawienia DTS_CONNECTION_STRING i TASKHUB_NAME są poprawne.
    • Aplikacja korzysta z oczekiwanej tożsamości podczas działania w Azure.

Konfiguracja programowania lokalnego

Masz dwie opcje rozwoju lokalnego. Użyj usługi Azurite do szybkiego testowania lokalnego bez Azure poświadczeń. Jeśli musisz przetestować połączenia oparte na tożsamościach na rzeczywistym koncie Azure Storage, zamiast tego użyj swoich poświadczeń dewelopera.

Opcja 1. Korzystanie z emulatora Azure Storage

Podczas tworzenia aplikacji lokalnie zaleca się użycie biblioteki Azurite, która jest lokalnym emulatorem Azure Storage. Skonfiguruj aplikację do emulatora, określając "AzureWebJobsStorage": "UseDevelopmentStorage=true" w local.settings.json.

Opcja 2: Połączenia oparte na tożsamości na potrzeby lokalnego rozwoju

Ściśle rzecz biorąc, tożsamość zarządzana jest dostępna tylko dla aplikacji podczas wykonywania w Azure. Można jednak nadal skonfigurować lokalnie uruchomioną aplikację tak, aby korzystała z połączenia opartego na tożsamości przy użyciu poświadczeń dewelopera do uwierzytelnienia się w zasobach Azure. Następnie po wdrożeniu w Azure aplikacja będzie używać konfiguracji tożsamości zarządzanej.

W przypadku korzystania z poświadczeń dewelopera połączenie próbuje uzyskać token z następujących lokalizacji w następującej kolejności:

  1. Pamięć podręczna lokalna wspólna dla aplikacji Microsoft
  2. Bieżący kontekst użytkownika w Visual Studio
  3. Bieżący kontekst użytkownika w Visual Studio Code
  4. Bieżący kontekst użytkownika w Azure CLI

Jeśli żadna z tych opcji nie powiedzie się, zostanie wyświetlony błąd wskazujący, że aplikacja nie może pobrać tokenu uwierzytelniania. Sprawdź, czy zalogowano się do jednego z wymienionych narzędzi przy użyciu konta z dostępem do konta Azure Storage.

Konfigurowanie środowiska uruchomieniowego do korzystania z lokalnej tożsamości dewelopera

  1. Określ nazwę konta Azure Storage w local.settings.json, na przykład:

    {
       "IsEncrypted": false,
       "Values": {
          "AzureWebJobsStorage__accountName": "<<your Azure Storage account name>>",
          "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
       }
    }
    
  2. Przejdź do zasobu konta Azure Storage w portalu Azure.

  3. Wybierz kartę Access Control (IAM) a następnie wybierz Dodaj przypisanie roli.

  4. Przypisz sobie każdą z następujących ról. Dla każdej roli wybierz pozycję "+ Wybierz członków" i wyszukaj wiadomość e-mail używaną do logowania się do Visual Studio, Visual Studio Code lub Azure CLI.

    • Współtwórca danych usługi Queue Storage
    • Współautor danych w usłudze Storage Blob
    • Współautor danych tabeli Storage

    Note

    Są to te same trzy role wymagane dla tożsamości zarządzanej podczas wdrażania w Azure. Zobacz Przypisywanie ról dostępu do tożsamości zarządzanej.

    Zrzut ekranu przedstawiający przypisywanie ról Współpracownika danych w magazynie do użytkownika na stronie Kontroli Dostępu w portalu Azure.

Połączenia oparte na tożsamościach dla aplikacji wdrożonej w Azure

Włącz zarządzany zasób tożsamości

Aby rozpocząć, włącz tożsamość zarządzaną dla aplikacji. Aplikacja funkcji musi mieć tożsamość zarządzaną przypisaną przez system lub tożsamość zarządzaną przypisaną przez użytkownika. Aby włączyć tożsamość zarządzaną dla aplikacji funkcji i dowiedzieć się więcej o różnicach między dwoma typami tożsamości, zobacz Omówienie tożsamości zarządzanej.

Przypisywanie ról dostępu do tożsamości zarządzanej

Przejdź do zasobu Azure Storage aplikacji w portalu Azure i przypisz trzy role kontroli dostępu opartej na rolach (RBAC) do zasobu tożsamości zarządzanej:

  • Współtwórca danych usługi Queue Storage
  • Współautor danych w usłudze Storage Blob
  • Współautor danych tabeli Storage

Aby znaleźć zasób tożsamości, wybierz opcję Przypisz dostęp do Tożsamości Zarządzanej, a następnie + Wybierz członków

 Zrzut ekranu przedstawiający przypisywanie ról dostępu magazynu do tożsamości zarządzanej w portalu Azure.

Dodawanie konfiguracji tożsamości zarządzanej do aplikacji

Przed użyciem tożsamości zarządzanej aplikacji wprowadź pewne zmiany w ustawieniach aplikacji:

  1. W portalu Azure w menu zasobów aplikacji funkcji w obszarze Settings wybierz pozycję Zmienne środowiskowe.

  2. Na liście ustawień znajdź pozycję AzureWebJobsStorage i wybierz ikonę Usuń . Zrzut ekranu zmiennej środowiskowej AzureWebJobsStorage w ustawieniach aplikacji funkcji w portalu Azure.

  3. Dodaj ustawienie, aby połączyć konto magazynu Azure z aplikacją.

    Użyj jednej z następujących metod w zależności od chmury, w której działa aplikacja:

    • Azure cloud: Jeśli aplikacja działa na globalnej platformie Azure, dodaj ustawienie AzureWebJobsStorage__accountName identyfikujące nazwę konta magazynu Azure. Przykładowa wartość: mystorageaccount123

    • Non-Azure cloud: Jeśli aplikacja działa w chmurze poza Azure, należy dodać następujące trzy ustawienia, aby zapewnić określone URI usługi (lub punkty końcowe) konta magazynu zamiast nazwy konta.

      • Nazwa ustawienia: AzureWebJobsStorage__blobServiceUri

        Przykładowa wartość: https://mystorageaccount123.blob.core.windows.net/

      • Nazwa ustawienia: AzureWebJobsStorage__queueServiceUri

        Przykładowa wartość: https://mystorageaccount123.queue.core.windows.net/

      • Nazwa ustawienia: AzureWebJobsStorage__tableServiceUri

        Przykładowa wartość: https://mystorageaccount123.table.core.windows.net/

    Wartości tych zmiennych identyfikatora URI są dostępne w informacjach o koncie magazynu na karcie „Punkty końcowe”.

    Zrzut ekranu przedstawiający kartę punktów końcowych konta magazynu z identyfikatorami URI obiektów blob, kolejki i usługi tabel.

    Note

    Jeśli używasz Azure Government lub innej chmury, która jest oddzielona od globalnej Azure, musisz użyć opcji, która udostępnia określone identyfikatory URI usługi, a nie tylko nazwę konta magazynu. Aby uzyskać więcej informacji na temat używania Azure Storage z Azure Government, zobacz Tworzenie przy użyciu interfejsu API usługi Storage w Azure Government.

  4. Zakończ konfigurację tożsamości zarządzanej (pamiętaj, aby kliknąć przycisk Zastosuj po wprowadzeniu zmian ustawień):

    • Jeśli używasz tożsamości przypisanej przez system, nie wprowadzaj żadnych innych zmian.

    • Jeśli używasz tożsamości przypisanej przez użytkownika, dodaj następujące ustawienia w konfiguracji aplikacji:

      • AzureWebJobsStorage__credential, wprowadź managedidentity

      • AzureWebJobsStorage__clientId, pobierz tę wartość identyfikatora GUID ze swojego zasobu tożsamości zarządzanej

    Zrzut ekranu przedstawiający zasób tożsamości zarządzanej przypisanej przez użytkownika z wartością identyfikatora klienta.

    Note

    Durable Functions nie obsługuje managedIdentityResourceId podczas korzystania z tożsamości przypisanej przez użytkownika. Użyj clientId zamiast tego.

Weryfikowanie konfiguracji

Aby potwierdzić, że konfiguracja tożsamości zarządzanej działa:

  1. W portalu Azure przejdź do swojej aplikacji funkcji i wyzwól orkiestrację Durable Functions (na przykład przy użyciu funkcji wyzwalanej przez protokół HTTP).
  2. Sprawdź, czy aranżacja została ukończona pomyślnie, wysyłając zapytanie do punktu końcowego stanu lub sprawdzając kartę Monitor .
  3. Jeśli widzisz błędy uwierzytelniania, sprawdź, czy:
    • Wszystkie trzy role Współautora Danych Magazynowych są przypisywane do prawidłowej tożsamości.
    • Ustawienie AzureWebJobsStorage parametry połączenia zostanie usunięte.
    • Ustawienia AzureWebJobsStorage__accountName (lub identyfikator URI usługi) są poprawne.

Następne kroki