Partager via


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

Le planificateur de tâches durables prend uniquement en charge l’authentification basée sur l’identité managée affectée par l’utilisateur ou 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.

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

Rôle Descriptif
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 avez uniquement besoin d’une liste d’orchestrations et de charges utiles d’entités.

Remarque

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

Dans cet article, vous allez apprendre à accorder des autorisations à une ressource d’identité et à configurer votre application de calcul pour utiliser l’identité pour l’accès aux planificateurs et aux hubs de tâches.

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. L’octroi de l’accès sur l’étendue du planificateur donne accès à tous les hubs de tâches dans ce planificateur.

    Hub de tâches

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

    Scheduler

    scope="/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP_NAME/providers/Microsoft.DurableTask/schedulers/SCHEDULER_NAME"
    
  4. Accordez 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"
    

    Résultat attendu

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

Remarque

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 du planificateur de tâches durable sur le portail.

  3. Cliquez sur un nom de hub de tâches.

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

  5. Cliquez sur 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 pour les tâches durables. Cliquez sur 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, cliquez sur + 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 cliquez sur le bouton Sélectionner .

  11. Cliquez sur 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 MANAGED_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. Cliquez sur l’onglet Utilisateur affecté .

  3. Cliquez sur + Ajouter, puis sélectionnez l’identité créée dans la dernière section. Cliquez sur le bouton 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 à l’application

Ajoutez ces deux variables d’environnement au paramètre d’application :

  • TASKHUB_NAME: nom du hub de tâches
  • DURABLE_TASK_SCHEDULER_CONNECTION_STRING : le format de la chaîne est "Endpoint={scheduler point};Authentication=ManagedIdentity;ClientID={client id}", où Endpoint est le point de terminaison du planificateur et client id l’ID client de l’identité.
  1. Obtenez les informations requises pour la chaîne de connexion du Durable Task Scheduler.

    Pour obtenir le point de terminaison du planificateur.

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

    Pour obtenir l’ID client de l’identité managée.

    az identity show --name MANAGED_IDENTITY_NAME --resource-group RESOURCE_GROUP_NAME --query 'clientId' --output tsv
    
  2. Utilisez la commande suivante pour ajouter une variable d’environnement pour la chaîne de connexion du planificateur à l’application.

    az functionapp config appsettings set --resource-group RESOURCE_GROUP_NAME --name FUNCTION_APP_NAME --settings KEY_NAME=KEY_VALUE
    
  3. Répétez l’étape précédente pour ajouter une variable d’environnement pour le nom du hub de tâches.

  1. Obtenez les informations requises pour la chaîne de connexion du Durable Task Scheduler.

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

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

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

  3. Dans le menu de gauche, cliquez sur Paramètres>Variables d’environnement.

  4. Ajoutez une variable d’environnement pour la chaîne de connexion Durable Task Scheduler.

  5. Ajoutez une variable d’environnement pour le nom du hub de tâches.

  6. Cliquez sur Appliquer , puis Confirmez pour ajouter les variables.

Remarque

Si vous utilisez l’identité affectée par le système, votre chaîne de connexion n’a pas besoin de l’ID client de la ressource d’identité : "Endpoint={scheduler endpoint};Authentication=ManagedIdentity".

Étapes suivantes