Configurer l’identité managée pour Durable Task Scheduler

Durable Task Scheduler utilise l’identité managée pour l’authentification. Vous pouvez utiliser une identité managée affectée par l’utilisateur ou identité managée affectée par le système. Les identités affectées par l’utilisateur sont recommandées , car elles ne sont pas liées au cycle de vie de l’application et peuvent être réutilisées une fois l’application déprovisionnée.

Cet article décrit deux façons de configurer l’identité managée :

  • Configuration rapide : commande CLI unique qui automatise l’attribution de rôle, la pièce jointe d’identité et la configuration des variables d’environnement.
  • Configuration manuelle : instructions pas à pas pour un contrôle total sur chaque étape de configuration.

Prerequisites

Rôles RBAC du planificateur de tâches durables

Vous pouvez accorder à une identité les rôles liés au "Durable Task Scheduler" suivants :

Rôle Description
Contributeur de données pour les tâches durables Rôle pour toutes les opérations d’accès aux données. Ce rôle est un sur-ensemble de tous les autres rôles.
Travail de tâche durable Rôle utilisé par les applications de travail pour interagir avec le planificateur de tâches durables. Attribuez ce rôle si votre application est utilisée uniquement pour le traitement des orchestrations, des activités et des entités.
Lecteur de données pour les tâches durables Rôle permettant de lire toutes les données du planificateur de tâches durables. Attribuez ce rôle si vous devez uniquement répertorier les orchestrations et lire les charges utiles des entités.

Note

La plupart des applications nécessitent le rôle Contributeur aux données des tâches durables.

Configuration rapide avec az durabletask scheduler attach

La az durabletask scheduler attach commande automatise l’attribution de rôle, la pièce jointe d’identité et la configuration des variables d’environnement dans une seule commande.

L’exemple suivant associe un planificateur à une application de fonctions à l’aide d’une identité managée assignée par l'utilisateur avec le rôle Contributeur aux données des tâches durables :

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

Pour une application conteneur :

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

Note

Si vous omettez le --identity paramètre, la commande utilise plutôt l’identité managée affectée par le système.

Pour plus d’informations, consultez az durabletask scheduler attach.

Installation manuelle

Si vous avez besoin d’un contrôle granulaire sur chaque étape, suivez les instructions manuelles ci-dessous pour affecter RBAC, attacher l’identité et configurer des variables d’environnement individuellement.

Attribuer un contrôle d’accès en fonction du rôle (RBAC) à une ressource d’identité managée

  1. Créer une identité managée attribuée par l’utilisateur

    az identity create -g RESOURCE_GROUP_NAME -n IDENTITY_NAME
    
  2. Définir le destinataire sur la ressource d’identité créée

    assignee=$(az identity show --name IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv) 
    
  3. Définissez l’étendue. Utilisez l’étendue du hub de tâches pour un accès avec privilèges minimaux. Utilisez l’étendue du planificateur uniquement si l’identité a besoin d’accéder à tous les hubs de tâches dans un planificateur.

    Étendue du hub de tâches (recommandé)

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

    Étendue du planificateur (tous les hubs de tâches)

    scope="/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.DurableTask/schedulers/SCHEDULER_NAME"
    
  4. Accorder l’accès. Exécutez la commande suivante pour créer l’attribution de rôle et accorder l’accès.

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

    Sortie attendue

    L’exemple de sortie suivant montre une identité de développeur affectée au rôle Contributeur aux données des tâches durables au niveau du planificateur :

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

Note

L’instruction suivante montre une attribution de rôle délimitée à un hub de tâches spécifique. Si vous avez besoin d’accéder à tous les hubs de tâches dans un planificateur, effectuez l’affectation au niveau du planificateur.

  1. Créer une identité managée attribuée par l’utilisateur.

  2. Accédez à la ressource Planificateur de tâches durables dans le portail.

  3. Sélectionnez un nom de hub de tâches.

  4. Dans le menu de gauche, sélectionnez Contrôle d’accès (IAM) .

  5. Sélectionnez Ajouter pour ajouter une attribution de rôle.

    Capture d’écran de l’ajout de l’attribution de rôle dans le volet Contrôle d’accès dans le portail.

  6. Recherchez et sélectionnez Contributeur de données de tâche durable. Sélectionnez Suivant.

    Capture d’écran de la sélection du rôle de Contributeur de données pour les tâches durables dans le portail.

  7. Sous l’onglet Membres , pour Affecter l’accès, sélectionnez Identité managée.

  8. Pour les membres, sélectionnez + Sélectionner des membres.

  9. Dans le volet Sélectionner des identités gérées, développez le menu déroulant Identité gérée et sélectionnez Identité gérée assignée par l’utilisateur.

    Capture d’écran de la sélection du type d’identité managée affectée par l’utilisateur que vous allez utiliser dans le portail.

  10. Sélectionnez l’identité managée par l’utilisateur précédemment créée, puis sélectionnez Sélectionner.

  11. Sélectionnez Vérifier + affecter pour terminer l’attribution du rôle.

Attribuer une identité managée à votre application

Maintenant que l’identité dispose du RBAC requis pour accéder au planificateur de tâches durables, vous devez l’affecter à votre application.

  1. Obtenir l’ID de ressource de l’identité managée.

    resource_id=$(az resource show --resource-group RESOURCE_GROUP_NAME --name IDENTITY_NAME --resource-type Microsoft.ManagedIdentity/userAssignedIdentities --query id --output tsv)
    
  2. Attribuez l’identité à l’app.

    az functionapp identity assign --resource-group RESOURCE_GROUP_NAME --name FUNCTION_APP_NAME --identities "$resource_id"
    
  1. Dans votre application dans le portail, sélectionnez Paramètres>Identité.

  2. Sélectionnez l’onglet Affecté à l’utilisateur.

  3. Sélectionnez + Ajouter, puis sélectionnez l’identité créée dans la dernière section. Cliquez sur Ajouter.

    Capture d’écran de l’ajout de l’identité managée affectée par l’utilisateur à votre application de fonction dans le portail.

Ajouter des variables d’environnement à votre application

Ajoutez les deux variables d’environnement suivantes à votre application :

Variable d'environnement Value Example
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 Nom du hub de tâches my-task-hub

Note

Si vous utilisez l’identité attribuée par le système, omettez le paramètre ClientID de la chaîne de connexion : "Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity".

  1. Obtenez les informations requises pour la chaîne de connexion.

    Obtenez le point de terminaison du planificateur :

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

    Obtenez l’ID client de l’identité managée :

    az identity show --name IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv
    
  2. Définissez les deux variables d’environnement sur votre application.

    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. Obtenez les informations requises pour la chaîne de connexion.

    Pour obtenir votre point de terminaison du planificateur, accédez à l’onglet Vue d’ensemble de votre ressource de planificateur et recherchez point de terminaison dans la section Essentials .

    Pour obtenir votre ID client d’identité managée, accédez à l’onglet Vue d’ensemble de votre ressource d’identité managée et recherchez l’ID client dans la section Essentials .

    Screenshot de la page vue d’ensemble de l’identité managée montrant l’emplacement de l’ID client dans le portail Azure portal.

  2. Accédez à votre application dans le portail.

  3. Dans le menu de gauche, sélectionnez Paramètres>Variables d'environnement.

  4. Ajoutez une variable d’environnement nommée DURABLE_TASK_SCHEDULER_CONNECTION_STRING avec la valeur Endpoint=<SCHEDULER_ENDPOINT>;Authentication=ManagedIdentity;ClientID=<IDENTITY_CLIENT_ID>.

  5. Ajoutez une variable d’environnement nommée TASKHUB_NAME avec le nom de votre hub de tâches.

  6. Sélectionnez Appliquer, puis Confirmez pour enregistrer les variables.