Snabbstart: Konfigurera Durable Functions med hanterad identitet

Denna snabbstart visar hur man konfigurerar en Durable Functions-app att använda identitetsbaserade anslutningar för antingen Durable Task Scheduler-backend eller Azure Storage-leverantören. Azure-plattformen hanterar en hanterad identitet från Microsoft Entra ID – du behöver inte provisionera eller rotera några hemligheter.

Den här vägen förutsätter att din app redan är konfigurerad för att använda Durable Task Scheduler som backend. Om din app fortfarande använder Azure Storage-leverantören, välj Azure Storage-vägen i den här artikeln.

I den här artikeln:

Note

Hanterad identitet stöds i Durable Functions-tillägget versioner 2.7.0 och senare.

Om du inte har något Azure-konto skapar du ett kostnadsfritt konto innan du börjar.

Förutsättningar

Följande krävs för att slutföra den här snabbstarten:

  • Ett befintligt Durable Functions projekt som skapats i Azure-portalen eller ett lokalt Durable Functions projekt som distribuerats till Azure.
  • Kunskaper om att köra en Durable Functions app i Azure.

Om du inte har ett befintligt Durable Functions projekt distribuerat i Azure rekommenderar vi att du börjar med någon av följande snabbstarter:

Konfigurering för lokal utveckling

Du har två alternativ för lokal utveckling. Använd den lokala emulatorn Durable Task Scheduler för snabb testning utan Azure-uppgifter. Om du behöver testa identitetsbaserade anslutningar mot en aktiv resurs i schemaläggaren använder du i stället dina utvecklarautentiseringsuppgifter.

Alternativ 1: Använd den lokala emulatorn Durable Task Scheduler

När du utvecklar lokalt, använd emulatorn Durable Task Scheduler så att du kan testa din app utan Azure-uppgifter. Konfigurera dina appinställningar så att de pekar på emulatorn och använd standardaktivitetshubben.

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

Alternativ 2: Identitetsbaserade anslutningar för lokal utveckling

Strikt taget är en hanterad identitet endast tillgänglig för appar när de körs i Azure. Du kan dock fortfarande konfigurera en lokalt körande app att använda identitetsbaserade anslutningar genom att använda dina utvecklaruppgifter för att autentisera mot din schemaläggarresurs. När appen sedan distribueras till Azure använder den istället konfigurationen för hanterad identitet.

När du använder utvecklaruppgifter försöker anslutningen hämta en token från följande platser, i denna ordning:

  1. En lokal cache som delas mellan Microsoft-program
  2. Den aktuella användarkontexten i Visual Studio
  3. Den aktuella användarkontexten i Visual Studio Code
  4. Den aktuella användarkontexten i Azure CLI

Om inget av dessa alternativ lyckas visas ett fel som anger att appen inte kan hämta en autentiseringstoken. Kontrollera att du är inloggad i något av de listade verktygen med ett konto som har åtkomst till din schemaläggningsresurs.

Konfigurera körning för att använda lokal utvecklaridentitet

  1. I dina lokala inställningar anger du slutpunkten för schemaläggaren och använder Authentication=DefaultAzure så att appen använder dina autentiseringsuppgifter för utvecklare.

    {
      "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. Ge din utvecklaridentitet rollen Durable Task Data Contributor för schemaläggningsresursen eller inom det specifika aktivitetsnavets omfång.

Identitetsbaserade anslutningar för appar som distribuerats till Azure

Aktivera en hanterad identitetsresurs

Aktivera en hanterad identitet för din arbetsapp. Funktionsappen måste antingen ha en systemtilldelad hanterad identitet eller en användartilldelad hanterad identitet. Information om hur du aktiverar en hanterad identitet för funktionsappen och om du vill veta mer om skillnaderna mellan de två typerna av identiteter finns i översikten över hanterad identitet.

Tilldela åtkomstroller till den hanterade identiteten

Navigera till resursen för schemaläggaren i Azure-portalen och tilldela Durable Task Data Contributor-rollen till din hanterade identitet. För åtkomst enligt principen om minsta privilegium tilldelar du rollen på aktivitetsnavets nivå i stället för för hela schemaläggaren. Om du använder en användar-tilldelad identitet, välj Managed identity och sedan + Välj medlemmar.

Lägga till konfigurationen för hanterad identitet i din app

Innan du kan använda appens hanterade identitet gör du några ändringar i appinställningarna:

  1. I Azure-portalen går du till funktionsappens resursmeny under Settings och väljer Environmentvariabler.

  2. Lägg till eller uppdatera inställningen DTS_CONNECTION_STRING så att appen ansluter till din schemaläggare genom att använda appens hanterade identitet.

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

    Om du använder en användartilldelad hanterad identitet, inkludera klient-ID:t i reťazec pripojenia:

    Endpoint=https://<your-scheduler-name>.<region>.durabletask.io;TaskHub=<your-task-hub>;Authentication=ManagedIdentity;ClientID=<your-user-assigned-identity-client-id>
    
  3. Lägg till eller uppdatera TASKHUB_NAME-inställningen med samma aktivitetshubbnamn.

  4. Om din Funktionsvärd behöver Azure Storage för drifter på värdnivå, konfigurera AzureWebJobsStorage separat. Schemaläggarens serverdel använder DTS-anslutningssträngen i stället för AzureWebJobsStorage för varaktigt tillstånd.

Verifiera din konfiguration

Så här bekräftar du att konfigurationen av hanterade identiteter fungerar:

  1. I Azure-portalen navigerar du till din Function-app och triggar din Durable Functions-orkestrering.
  2. Kontrollera att orkestreringen slutförs utan problem genom att anropa statusslutpunkten eller kontrollera fliken Monitor.
  3. Om du ser autentiseringsfel kontrollerar du att:
    • Den hanterade identiteten har rollen Durable Task Data Contributor för schemaläggarresursen eller aktivitetshubbens omfång.
    • Inställningarna TASKHUB_NAME och DTS_CONNECTION_STRING är korrekta.
    • Appen använder den förväntade identiteten när den körs i Azure.

Konfigurering för lokal utveckling

Du har två alternativ för lokal utveckling. Använd Azurite för snabb lokal testning utan Azure autentiseringsuppgifter. Om du behöver testa identitetsbaserade anslutningar mot ett verkligt Azure Storage konto använder du dina autentiseringsuppgifter för utvecklare i stället.

Alternativ 1: Använd Azure Storage-emulatorn

När du utvecklar lokalt rekommenderar vi att du använder Azurite, som är Azure Storage lokala emulatorn. Konfigurera din app till emulatorn genom att "AzureWebJobsStorage": "UseDevelopmentStorage=true" ange i local.settings.json.

Alternativ 2: Identitetsbaserade anslutningar för lokal utveckling

Strikt sett är en hanterad identitet endast tillgänglig för appar när den körs på Azure. Du kan dock fortfarande konfigurera en lokalt körd app för att använda identitetsbaserad anslutning med hjälp av dina autentiseringsuppgifter för utvecklare för att autentisera mot Azure resurser. När den sedan distribueras på Azure använder appen din hanterade identitetskonfiguration i stället.

När du använder autentiseringsuppgifter för utvecklare försöker anslutningen hämta en token från följande platser i den här ordningen:

  1. En lokal cache som delas mellan Microsoft-program
  2. Den aktuella användarkontexten i Visual Studio
  3. Den aktuella användarkontexten i Visual Studio Code
  4. Den aktuella användarkontexten i Azure CLI

Om inget av dessa alternativ lyckas visas ett fel som anger att appen inte kan hämta en autentiseringstoken. Kontrollera att du är inloggad på något av verktygen i listan med ett konto som har åtkomst till ditt Azure Storage konto.

Konfigurera körning för att använda lokal utvecklaridentitet

  1. Ange namnet på ditt Azure Storage konto i local.settings.json, till exempel:

    {
       "IsEncrypted": false,
       "Values": {
          "AzureWebJobsStorage__accountName": "<<your Azure Storage account name>>",
          "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
       }
    }
    
  2. Gå till din Azure Storage kontoresurs i Azure-portalen.

  3. Välj fliken Access Control (IAM) och välj sedan Lägg till rolltilldelning.

  4. Tilldela var och en av följande roller till dig själv. För varje roll väljer du "+ Välj medlemmar" och söker efter e-postmeddelandet som du använder för att logga in på Visual Studio, Visual Studio Code eller Azure CLI.

    • Storage Queue Data-medverkande
    • Storage Blob Data-bidragsgivare
    • Storage Table Data-bidragsgivare

    Note

    Det här är samma tre roller som krävs för din hanterade identitet när du distribuerar till Azure. Se Tilldela åtkomstroller till den hanterade identiteten.

    Skärmbild av tilldelning av lagringsdatadeltagare till en användare på Azure portalen Access Control page.

Identitetsbaserade anslutningar för appar som distribuerats till Azure

Aktivera en hanterad identitetsresurs

Börja med att aktivera en hanterad identitet för ditt program. Funktionsappen måste antingen ha en systemtilldelad hanterad identitet eller en användartilldelad hanterad identitet. Information om hur du aktiverar en hanterad identitet för funktionsappen och om du vill veta mer om skillnaderna mellan de två typerna av identiteter finns i översikten över hanterad identitet.

Tilldela åtkomstroller till den hanterade identiteten

Gå till din apps Azure Storage-resurs på Azure-portalen och tilldela tre rollbaserade åtkomstkontrollroller (RBAC)-roller till din hanterade identitetsresurs.

  • Storage Queue Data-medverkande
  • Storage Blob Data-bidragsgivare
  • Storage Table Data-bidragsgivare

Om du vill hitta din identitetsresurs väljer du tilldela åtkomst till hanterad identitet och sedan + Välj medlemmar

Skärmbild av tilldelning av lagringsåtkomstroller till en hanterad identitet i Azure portal.

Lägga till konfigurationen för hanterad identitet i din app

Innan du kan använda appens hanterade identitet gör du några ändringar i appinställningarna:

  1. I Azure-portalen går du till funktionsappens resursmeny under Settings och väljer Environmentvariabler.

  2. I listan med inställningar letar du upp AzureWebJobsStorage och väljer ikonen Ta bort . Skärmbild av miljövariabeln AzureWebJobsStorage i Azure portalens funktionsappinställningar.

  3. Lägg till en inställning för att länka ditt Azure lagringskonto till programmet.

    Använd någon av följande metoder beroende på molnet som appen körs i:

    • Azure cloud: Om appen körs i global Azure lägger du till inställningen AzureWebJobsStorage__accountName som identifierar ett Azure lagringskontonamn. Exempelvärde: mystorageaccount123

    • Non-Azure cloud: Om programmet körs i ett moln utanför Azure måste du lägga till följande tre inställningar för att tillhandahålla specifika tjänst-URI:er (eller endpoints) för lagringskontot i stället för ett kontonamn.

      • Inställningsnamn: AzureWebJobsStorage__blobServiceUri

        Exempelvärde: https://mystorageaccount123.blob.core.windows.net/

      • Inställningsnamn: AzureWebJobsStorage__queueServiceUri

        Exempelvärde: https://mystorageaccount123.queue.core.windows.net/

      • Inställningsnamn: AzureWebJobsStorage__tableServiceUri

        Exempelvärde: https://mystorageaccount123.table.core.windows.net/

    Du kan hämta värdena för dessa URI-variabler i lagringskontoinformationen från fliken Slutpunkter .

    Skärmbild av fliken för lagringskontots slutpunkter som visar URI:er för blobtjänst, kö och tabelltjänst.

    Note

    Om du använder Azure Government eller något annat moln som är skilt från globala Azure, måste du använda alternativet som tillhandahåller specifika tjänst-URI:er i stället för bara lagringskontonamnet. Mer information om hur du använder Azure Storage med Azure Government finns i Develop med hjälp av Lagrings-API:et i Azure Government.

  4. Slutför konfigurationen av den hanterade identiteten (kom ihåg att klicka på "Tillämpa" när du har gjort inställningsändringarna):

    • Om du använder en systemtilldelad identitet gör du inga andra ändringar.

    • Om du använder en användartilldelad identitet lägger du till följande inställningar i appkonfigurationen:

      • AzureWebJobsStorage__credential, ange managedidentity

      • AzureWebJobsStorage__clientId, hämta detta GUID-värde från din hanterade identitetsresurs

    Skärmbild av den användartilldelade hanterade identitetsresursen som visar klient-ID-värdet.

    Note

    Durable Functions stöder intemanagedIdentityResourceId vid användning av användartilldelad identitet. Använd clientId i stället.

Verifiera din konfiguration

Så här bekräftar du att konfigurationen av hanterade identiteter fungerar:

  1. I Azure-portalen går du till funktionsappen och utlöser Durable Functions orkestrering (till exempel med hjälp av en HTTP-utlösarfunktion).
  2. Kontrollera att orkestreringen har slutförts framgångsrikt genom att fråga statusslutpunkten eller kontrollera fliken Övervakning.
  3. Om du ser autentiseringsfel kontrollerar du att:
    • Alla tre rollerna för lagringsdatabidragare tilldelas rätt identitet.
    • Inställningen AzureWebJobsStorage reťazec pripojenia tas bort.
    • AzureWebJobsStorage__accountName inställningar (eller tjänst-URI) är korrekta.

Nästa steg