Konfigurera hanterad identitet för Durable Task Scheduler

Durable Task Scheduler använder hanterad identitet för autentisering. Du kan använda antingen en användartilldelad eller systemtilldelad hanterad identitet. Användartilldelade identiteter rekommenderas eftersom de inte är kopplade till appens livscykel och kan återanvändas när appen har avetablerats.

Den här artikeln beskriver två sätt att konfigurera hanterad identitet:

  • Snabbkonfiguration – ett enda CLI-kommando som automatiserar rolltilldelning, identitetsbilagor och miljövariabelkonfiguration.
  • Manuell installation – stegvisa instruktioner för fullständig kontroll över varje konfigurationssteg.

Förutsättningar

Varaktiga Task Scheduler RBAC-roller

Du kan bevilja följande durable task scheduler-relaterade roller till en identitet:

Befattning Beskrivning
Durable Task Data-deltagare Roll för alla dataåtkomstoperationer. Den här rollen är överordnad alla andra roller.
Varaktig aktivitetsarbetare Roll som används av arbetsprogram för att interagera med Durable Task Scheduler. Tilldela den här rollen om din app endast används för bearbetning av orkestreringar, aktiviteter och entiteter.
Hållbar uppgiftsdataläsare Roll för att läsa alla durable Task Scheduler-data. Tilldela rollen om du bara behöver lista arbetsflöden och läsa entitetsdata.

Anmärkning

De flesta appar kräver rollen Durable Task Data Contributor .

Snabbkonfiguration med az durabletask scheduler attach

Kommandot az durabletask scheduler attach automatiserar rolltilldelning, identitetsbilaga och miljövariabelkonfiguration i ett enda kommando.

I följande exempel kopplas en schemaläggare till en funktionsapp med hjälp av en användartilldelad hanterad identitet med rollen 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

För en containerapp:

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

Anmärkning

Om du utelämnar parametern --identity använder kommandot den systemtilldelade hanterade identiteten i stället.

För ytterligare information, se az durabletask scheduler attach.

Manuell konfiguration

Om du behöver detaljerad kontroll över varje steg följer du de manuella anvisningarna nedan för att tilldela RBAC, koppla identiteten och konfigurera miljövariabler individuellt.

Tilldela rollbaserad åtkomstkontroll (RBAC) till en hanterad identitetsresurs

  1. Skapa en användartilldelad hanterad identitet

    az identity create -g RESOURCE_GROUP_NAME -n IDENTITY_NAME
    
  2. Ange den tilldelade till identitetsresursen som skapats

    assignee=$(az identity show --name IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv) 
    
  3. Ange omfånget. Använd aktivitetshubbens omfång för åtkomst med minst behörighet. Använd schemaläggarens omfång endast om identiteten behöver åtkomst till alla uppgiftsnav i en schemaläggare.

    Aktivitetshubbens omfång (rekommenderas)

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

    Schemaläggningsomfattning (alla aktivitetshubbar)

    scope="/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.DurableTask/schedulers/SCHEDULER_NAME"
    
  4. Bevilja åtkomst. Kör följande kommando för att skapa rolltilldelningen och bevilja åtkomst.

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

    Förväntade utdata

    I följande utdataexempel visas en utvecklaridentitet som tilldelats rollen Durable Task Data Contributor på schemaläggningsnivå :

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

Anmärkning

Följande instruktion visar en rolltilldelning som är begränsad till en specifik aktivitetshubb. Om du behöver åtkomst till alla aktivitetshubbar i en schemaläggare utför du tilldelningen på schemaläggningsnivå.

  1. Skapa en användartilldelad hanterad identitet.

  2. Gå till resursen Durable Task Scheduler i portalen.

  3. Välj ett namn på aktivitetshubben.

  4. Välj Åtkomstkontroll (IAM) i den vänstra menyn.

  5. Välj Lägg till för att lägga till en rolltilldelning.

    Skärmbild av att lägga till rolltilldelningen i fönstret Access Control i portalen.

  6. Sök efter och välj Durable Task Data-bidragsgivare. Välj Nästa.

    Skärmbild av att välja rolltilldelningen Durable Task Data Contributor i portalen.

  7. På fliken Medlemmar väljer du Hanterad identitet för Tilldela åtkomst till.

  8. För Medlemmar väljer du + Välj medlemmar.

  9. I fönstret Välj hanterade identiteter expanderar du listrutan Hanterad identitet och väljer Användartilldelad hanterad identitet.

    Skärmbild av att välja den användartilldelade hanterade identitetstypen som du ska använda i portalen.

  10. Välj den användarhanterade identitet som du skapade tidigare och välj Välj.

  11. Välj Granska + tilldela för att slutföra tilldelningen av rollen.

Tilldela hanterad identitet till din app

Nu när identiteten har den RBAC som krävs för åtkomst till Durable Task Scheduler måste du tilldela den till din app.

  1. Hämta resurs-ID för den hanterade identiteten.

    resource_id=$(az resource show --resource-group RESOURCE_GROUP_NAME --name IDENTITY_NAME --resource-type Microsoft.ManagedIdentity/userAssignedIdentities --query id --output tsv)
    
  2. Tilldela identiteten till appen.

    az functionapp identity assign --resource-group RESOURCE_GROUP_NAME --name FUNCTION_APP_NAME --identities "$resource_id"
    
  1. Från din app i portalen väljer du Inställningar>Identitet.

  2. Välj fliken Användartilldelade .

  3. Välj + Lägg till och välj sedan den identitet som skapades i det sista avsnittet. Välj Lägg till.

    Skärmbild av att lägga till den användartilldelade hanterade identiteten i funktionsappen i portalen.

Lägga till miljövariabler i din app

Lägg till följande två miljövariabler i din app:

Miljövariabel Value Exempel
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 Namnet på aktivitetshubben my-task-hub

Anmärkning

Om du använder systemtilldelad identitet, utelämnar du parametern ClientID från reťazec pripojenia: "Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity".

  1. Hämta den nödvändiga informationen för anslutningssträngen.

    Hämta scheduler-slutpunkten:

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

    Hämta klient-ID för den hanterade identiteten:

    az identity show --name IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv
    
  2. Ange båda miljövariablerna i din app.

    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. Hämta den nödvändiga informationen för anslutningssträngen.

    För att få slutpunkten för din scheduler, navigera till fliken Översikt för din scheduler-resurs och hitta Endpoint i sektionen Essentials.

    Om du vill hämta klient-ID för hanterad identitet går du till fliken Översikt för din hanterade identitetsresurs och hittar klient-ID i avsnittet Essentials.

    Skärmbild av översiktssidan för hanterad identitet som visar klient-ID-platsen i Azure portal.

  2. Gå till din app i portalen.

  3. I den vänstra menyn väljer du Inställningar>Miljövariabler.

  4. Lägg till en miljövariabel med namnet DURABLE_TASK_SCHEDULER_CONNECTION_STRING med värdet Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity;ClientID=<IDENTITY_CLIENT_ID>.

  5. Lägg till en miljövariabel med namnet TASKHUB_NAME på aktivitetshubben.

  6. Välj Använd och sedan Bekräfta för att spara variablerna.