Quickstart: Durable Functions configureren met beheerde identiteit

Deze quickstart laat zien hoe je een Durable Functions-app kunt configureren om identiteitsgebaseerde verbindingen te gebruiken voor zowel de Durable Task Scheduler-backend als de Azure Storage-provider. Het Azure-platform beheert een beheerde identiteit vanuit Microsoft Entra ID - je hoeft geen geheimen te provisioneren of te roteren.

Dit pad gaat ervan uit dat je app al is geconfigureerd om de Durable Task Scheduler-backend te gebruiken. Als je app nog steeds gebruikmaakt van de Azure Storage-provider, kies dan het Azure Storage-pad in dit artikel.

In dit artikel:

Note

Beheerde identiteit wordt ondersteund in Durable Functions extension versies 2.7.0 en hoger.

Als u geen Azure-account hebt, maak dan een gratis account aan voordat u begint.

Prerequisites

U hebt het volgende nodig om deze quickstart te voltooien:

  • Een bestaand Durable Functions project dat is gemaakt in de Azure-portal of een lokaal Durable Functions project dat is geïmplementeerd in Azure.
  • Bekendheid met het uitvoeren van een Durable Functions-app in Azure.

Als u geen bestaand Durable Functions project hebt geïmplementeerd in Azure, raden we u aan om te beginnen met een van de volgende quickstarts:

Instelling van lokale ontwikkeling

U hebt twee opties voor lokale ontwikkeling. Gebruik de lokale Durable Task Scheduler-emulator voor snel testen zonder Azure-inloggegevens. Als je identiteitsgebaseerde verbindingen moet testen met een live plannerresource, gebruik dan je ontwikkelaarsinloggegevens.

Optie 1: Gebruik de lokale emulator van de Duurzame Taakplanner

Gebruik bij lokaal ontwikkelen de Durable Task Scheduler-emulator zodat je je app kunt testen zonder Azure-inloggegevens. Stel je app-instellingen zo in dat ze naar de emulator wijzen en gebruik de standaard taakhub.

{
  "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"
  }
}

Optie 2: Op identiteit gebaseerde verbindingen voor lokale ontwikkeling

Strikt genomen is een beheerde identiteit alleen beschikbaar voor apps wanneer ze worden uitgevoerd in Azure. Je kunt echter nog steeds een lokaal draaiende app configureren om identiteitsgebaseerde verbindingen te gebruiken door je ontwikkelaarsgegevens te gebruiken om te authenticeren tegen je plannerresource. Vervolgens gebruikt de app bij de implementatie op Azure de beheerde identiteitsconfiguratie.

Wanneer je ontwikkelaarsgegevens gebruikt, probeert de verbinding een token te krijgen van de volgende locaties, in deze volgorde:

  1. Een lokale cache die wordt gedeeld tussen Microsoft-toepassingen
  2. De huidige gebruikerscontext in Visual Studio
  3. De huidige gebruikerscontext in Visual Studio Code
  4. De huidige gebruikerscontext in de Azure CLI

Als geen van deze opties is geslaagd, krijgt u een foutmelding die aangeeft dat de app geen verificatietoken kan ophalen. Controleer of je bent ingelogd bij een van de genoemde tools met een account dat toegang heeft tot je plannerresource.

Runtime configureren voor het gebruik van een lokale ontwikkelaarsidentiteit

  1. Stel in je lokale instellingen het scheduler-endpoint in en gebruik Authentication=DefaultAzure het zo dat de app je ontwikkelaarsgegevens gebruikt.

    {
      "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. Geef je ontwikkelaar de Durable Task Data Contributor rol op de scheduler-resource of op de specifieke taskhub-scope.

Op identiteit gebaseerde verbindingen voor app die is geïmplementeerd in Azure

Een beheerde identiteitsresource inschakelen

Schakel een beheerde identiteit in voor je functie-app. Uw functie-app moet een door het systeem toegewezen beheerde identiteit of een door de gebruiker toegewezen beheerde identiteit hebben. Als u een beheerde identiteit voor uw functie-app wilt inschakelen en meer wilt weten over de verschillen tussen de twee typen identiteiten, raadpleegt u het overzicht van de beheerde identiteit.

Toegangsrollen toewijzen aan de beheerde identiteit

Navigeer naar je scheduler-resource in het Azure-portaal en wijs de Durable Task Data Contributor rol toe aan je beheerde identiteit. Voor toegang met minimale bevoegdheden wijs je de rol toe binnen het bereik van de takenhub in plaats van aan de hele scheduler. Als je een door de gebruiker toegewezen identiteit gebruikt, selecteer dan Beheerde identiteit en selecteer dan + Selecteer leden.

De configuratie van de beheerde identiteit toevoegen aan uw app

Voordat u de beheerde identiteit van uw app kunt gebruiken, moet u enkele wijzigingen aanbrengen in de app-instellingen:

  1. Selecteer in de Azure-portal in het resourcemenu van de functie-app onder SettingsOmgevingsvariabelen.

  2. Voeg de instelling DTS_CONNECTION_STRING toe of werk deze bij, zodat de app verbinding maakt met uw scheduler met behulp van de beheerde identiteit van de app.

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

    Als je een door de gebruiker toegewezen beheerde identiteit gebruikt, neem dan de client-ID op in de verbindingsreeks:

    Endpoint=https://<your-scheduler-name>.<region>.durabletask.io;TaskHub=<your-task-hub>;Authentication=ManagedIdentity;ClientID=<your-user-assigned-identity-client-id>
    
  3. Voeg de instelling TASKHUB_NAME toe of werk deze bij naar dezelfde taakhubnaam.

  4. Als je Function-host Azure Storage nodig heeft voor host-level operaties, configureer AzureWebJobsStorage dan apart. De scheduler-backend gebruikt de DTS-verbindingsreeks in plaats van AzureWebJobsStorage voor duurzame status.

Uw configuratie controleren

Ga als volgt te werk om te controleren of de configuratie van uw beheerde identiteit werkt:

  1. Navigeer in het Azure-portaal naar je Function-app en activeer je Durable Functions-orkestrering.
  2. Controleer of de orkestratie succesvol wordt afgerond door het status-eindpunt te controleren of het tabblad Monitor te controleren.
  3. Als u authenticatiefouten ziet, controleert u of:
    • De beheerde identiteit heeft de rol Durable Task Data Contributor voor het plannerresource- of taakhubbereik.
    • De DTS_CONNECTION_STRING instellingen en TASKHUB_NAME zijn correct.
    • De app gebruikt de verwachte identiteit wanneer deze draait in Azure.

Instelling van lokale ontwikkeling

U hebt twee opties voor lokale ontwikkeling. Gebruik Azurite voor snelle lokale tests zonder Azure referenties. Als u op identiteit gebaseerde verbindingen wilt testen op basis van een echt Azure Storage-account, gebruikt u in plaats daarvan uw referenties voor ontwikkelaars.

Optie 1: de Azure Storage emulator gebruiken

Wanneer u lokaal ontwikkelt, is het raadzaam om Azurite te gebruiken. Dit is Azure Storage lokale emulator. Configureer uw app voor de emulator door op te "AzureWebJobsStorage": "UseDevelopmentStorage=true" geven in de local.settings.json.

Optie 2: Op identiteit gebaseerde verbindingen voor lokale ontwikkeling

Strikt genomen is een beheerde identiteit alleen beschikbaar voor apps wanneer deze worden uitgevoerd op Azure. U kunt echter nog steeds een lokaal draaiende app configureren voor het gebruik van een op identiteit gebaseerde verbinding met behulp van uw ontwikkelaarsreferenties om te verifiëren bij Azure resources. Wanneer de app vervolgens wordt geïmplementeerd op Azure, wordt in plaats daarvan de configuratie van uw beheerde identiteit gebruikt.

Wanneer u referenties voor ontwikkelaars gebruikt, probeert de verbinding in deze volgorde een token op te halen van de volgende locaties:

  1. Een lokale cache die wordt gedeeld tussen Microsoft-toepassingen
  2. De huidige gebruikerscontext in Visual Studio
  3. De huidige gebruikerscontext in Visual Studio Code
  4. De huidige gebruikerscontext in de Azure CLI

Als geen van deze opties is geslaagd, krijgt u een foutmelding die aangeeft dat de app geen verificatietoken kan ophalen. Controleer of u bent aangemeld bij een van de vermelde hulpprogramma's met een account dat toegang heeft tot uw Azure Storage-account.

Runtime configureren voor het gebruik van een lokale ontwikkelaarsidentiteit

  1. Geef de naam van uw Azure Storage-account op in local.settings.json, bijvoorbeeld:

    {
       "IsEncrypted": false,
       "Values": {
          "AzureWebJobsStorage__accountName": "<<your Azure Storage account name>>",
          "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
       }
    }
    
  2. Navigeer in de Azure-portal naar uw Azure-opslagaccountresource.

  3. Selecteer het tabblad Access Control (IAM) en selecteer vervolgens Roltoewijzing toevoegen.

  4. Wijs elk van de volgende rollen aan uzelf toe. Selecteer voor elke rol '+ Leden selecteren' en zoek naar de e-mail die u gebruikt om u aan te melden bij Visual Studio, Visual Studio Code of de Azure CLI.

    • Inzender voor opslagwachtrijgegevens
    • Inzender voor Storage Blob-gegevens
    • Inzender van opslagtabelgegevens

    Note

    Dit zijn dezelfde drie rollen die vereist zijn voor uw beheerde identiteit bij de implementatie in Azure. Zie Toegangsrollen toewijzen aan de beheerde identiteit.

    Scherm van het toewijzen van de rol Opslaggegevensbijdrager aan een gebruiker in de Azure-portal Access Control page.

Op identiteit gebaseerde verbindingen voor app die is geïmplementeerd in Azure

Een beheerde identiteitsresource inschakelen

Schakel eerst een beheerde identiteit in voor uw toepassing. Uw functie-app moet een door het systeem toegewezen beheerde identiteit of een door de gebruiker toegewezen beheerde identiteit hebben. Als u een beheerde identiteit voor uw functie-app wilt inschakelen en meer wilt weten over de verschillen tussen de twee typen identiteiten, raadpleegt u het overzicht van de beheerde identiteit.

Toegangsrollen toewijzen aan de beheerde identiteit

Navigeer naar de Azure Storage-resource van uw app in de Azure-portal en wijs drie RBAC-rollen (op rollen gebaseerd toegangsbeheer) toe aan de resource voor uw beheerde identiteit:

  • Inzender voor opslagwachtrijgegevens
  • Inzender voor Storage Blob-gegevens
  • Inzender van opslagtabelgegevens

Als u uw identiteitsresource wilt vinden, selecteert u Toegang tot beheerde identiteit toewijzen en selecteert u vervolgens + Leden selecteren

Scherm van het toewijzen van opslagtoegangsrollen aan een beheerde identiteit in de Azure portal.

De configuratie van de beheerde identiteit toevoegen aan uw app

Voordat u de beheerde identiteit van uw app kunt gebruiken, moet u enkele wijzigingen aanbrengen in de app-instellingen:

  1. Selecteer in de Azure-portal in het resourcemenu van de functie-app onder SettingsOmgevingsvariabelen.

  2. Zoek AzureWebJobsStorage in de lijst met instellingen en selecteer het pictogram Verwijderen . Schermopname van de omgevingsvariabele AzureWebJobsStorage in de functie-app-instellingen van de Azure-portal.

  3. Voeg een instelling toe om uw Azure opslagaccount aan de toepassing te koppelen.

    Gebruik een van de volgende methoden , afhankelijk van de cloud waarin uw app wordt uitgevoerd:

    • Azure cloud: Als uw app wordt uitgevoerd in globale Azure, voegt u de instelling AzureWebJobsStorage__accountName toe waarmee de naam van een Azure opslagaccount wordt geïdentificeerd. Voorbeeldwaarde: mystorageaccount123

    • On-Azure cloud: Als uw toepassing wordt uitgevoerd in een cloud buiten Azure, moet u de volgende drie instellingen toevoegen om specifieke service-URI's (of endpoints) van het opslagaccount op te geven in plaats van een accountnaam.

      • Naam van instelling: AzureWebJobsStorage__blobServiceUri

        Voorbeeldwaarde: https://mystorageaccount123.blob.core.windows.net/

      • Naam van instelling: AzureWebJobsStorage__queueServiceUri

        Voorbeeldwaarde: https://mystorageaccount123.queue.core.windows.net/

      • Naam van instelling: AzureWebJobsStorage__tableServiceUri

        Voorbeeldwaarde: https://mystorageaccount123.table.core.windows.net/

    U kunt de waarden voor deze URI-variabelen ophalen in de gegevens van het opslagaccount op het tabblad Eindpunten .

    Schermopname van het tabblad Eindpunten van het opslagaccount met blob-, wachtrij- en tabelservice-URI's.

    Note

    Als u Azure Government of een andere cloud gebruikt die losstaat van globale Azure, moet u de optie gebruiken die specifieke service-URI's biedt in plaats van alleen de naam van het opslagaccount. Zie de Ontwikkeling met behulp van de Storage-API in Azure Government voor meer informatie over het gebruik van Azure Storage met Azure Government.

  4. Voltooi de configuratie van uw beheerde identiteit (vergeet niet op Toepassen te klikken nadat u de instellingswijzigingen hebt aangebracht):

    • Als u een door het systeem toegewezen identiteit gebruikt, moet u geen andere wijzigingen aanbrengen.

    • Als u een door de gebruiker toegewezen identiteit gebruikt, voegt u de volgende instellingen toe in uw app-configuratie:

      • AzureWebJobsStorage__credential, voert u managedidentity in

      • AzureWebJobsStorage__clientId haalt u deze GUID-waarde op uit uw beheerde identiteitsresource

    Schermopname van de door de gebruiker toegewezen beheerde identiteitsresource met de waarde van de client-id.

    Note

    Durable Functions biedt geen ondersteuning voor managedIdentityResourceId bij het gebruik van een gebruikerstoegedeelde identiteit. Gebruik in plaats daarvan clientId.

Uw configuratie controleren

Ga als volgt te werk om te controleren of de configuratie van uw beheerde identiteit werkt:

  1. Navigeer in de Azure-portal naar uw functie-app en activeer uw Durable Functions indeling (bijvoorbeeld met behulp van een HTTP-triggerfunctie).
  2. Controleer of de orkestratie succesvol is voltooid door een statusquery uit te voeren bij het statuseindpunt of het tabblad Monitor te controleren.
  3. Als u authenticatiefouten ziet, controleert u of:
    • Alle drie de rollen van Inzender voor opslaggegevens zijn toegewezen aan de juiste identiteit.
    • De instelling AzureWebJobsStorage verbindingsreeks wordt verwijderd.
    • De AzureWebJobsStorage__accountName (of service-URI)-instellingen zijn juist.

Volgende stappen