Snabbstart: Konfigurera Durable Functions med hanterad identitet

Den här snabbstarten visar hur du konfigurerar en Durable Functions app med standardprovidern Azure Storage för att använda identitetsbaserade anslutningar, så att appen kan komma åt sitt lagringskonto utan att hantera hemligheter. En hanterad identitet från Microsoft Entra ID hanteras av Azure-plattformen – du behöver inte etablera eller rotera några hemligheter.

I den här artikeln:

Anmärkning

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

    • Lagringsködatabidragare
    • Storage Blob Data-bidragsgivare
    • Storage Table Data-bidragsgivare

    Anmärkning

    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.

  • Lagringsködatabidragare
  • 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.

    Anmärkning

    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.

    Anmärkning

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

Verifiera konfigurationen

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