Configurer Durable Functions avec Microsoft Entra ID

Microsoft Entra ID (Microsoft Entra ID) est un service de gestion des identités et des accès basé sur le cloud. Les connexions basées sur l’identité permettent aux Durable Functions d’effectuer des requêtes autorisées sur des ressources protégées par Microsoft Entra, comme un compte stockage Azure, sans avoir à gérer manuellement les secrets. À l’aide du fournisseur de stockage Azure par défaut, Durable Functions doit s’authentifier au compte stockage Azure. Dans cet article, nous montrons comment configurer une application Durable Functions pour utiliser deux types de connexions basées sur l’identité : les informations d’identification d’identité managées et les informations d’identification de clé secrète client.

Une identité managée permet à votre application d’accéder facilement à d’autres ressources protégées par Microsoft Entra comme Azure Key Vault. L’identité managée est prise en charge dans les versions 2.7.0 et ultérieures des extensions Durable Functions.

Notes

Un sens stricte du terme, une identité managée n’est disponible que pour les applications lors de l’exécution sur Azure. Lorsqu’elle est configurée pour utiliser des connexions basées sur l’identité, une application qui s’exécute localement utilise vos informations d’identification de développeur pour s’authentifier auprès des ressources Azure. Ensuite, lorsqu’elle est déployée sur Azure, elle utilise votre configuration d’identité managée à la place.

Prérequis

Au cours des étapes suivantes, il est supposé que vous partez d’une application Durable Functions existante dont vous connaissez le fonctionnement. Ce démarrage rapide implique notamment d’avoir déjà effectué les opérations suivantes :

  • Création d’un projet Durable Functions dans le Portail Azure ou déploiement d’un Durable Functions local sur Azure.

Si ce n’est pas le cas, nous vous suggérons de commencer par l’un des articles suivants, qui fournit des instructions détaillées sur la façon de répondre à toutes les exigences ci-dessus :

Activer une identité managée

Une seule identité est nécessaire pour votre fonction, soit une identité managée affectée par le système, soit une identité managée affectée par l’utilisateur. Pour activer une identité managée pour votre fonction et en savoir plus sur les différences entre les deux identités, lisez les instructions détaillées ici.

Affectez des contrôles d’accès en fonction du rôle (RBAC) à une identité managée

Accédez à la ressource de stockage de votre application sur le Portail Azure. Suivez ces instructions pour attribuer les rôles suivants à votre ressource d’identité managée.

  • Contributeur aux données en file d’attente du stockage
  • Contributeur aux données Blob du stockage
  • Contributeur aux données de table du stockage

Configurez une identité managée dans le portail Azure

Accédez à la page Configuration de votre application de fonction Azure et effectuez les modifications suivantes :

  1. Supprimez la valeur par défaut « AzureWebJobsStorage ».

Screenshot of default storage setting.

  1. Liez votre compte de stockage Azure en ajoutant l’un des paramètres de valeur suivants :

    • AzureWebJobsStorage__accountName : Par exemple : mystorageaccount123

    • AzureWebJobsStorage__blobServiceUri: Par exemple : https://mystorageaccount123.blob.core.windows.net/

      AzureWebJobsStorage__queueServiceUri: Par exemple : https://mystorageaccount123.queue.core.windows.net/

      AzureWebJobsStorage__tableServiceUri : Par exemple : https://mystorageaccount123.table.core.windows.net/

      Notes

      Si vous utilisez Azure Government ou tout autre cloud distinct d’Azure global, vous devez utiliser cette deuxième option pour fournir des URL de service spécifiques. Les valeurs de ces paramètres se trouvent dans le compte de stockage sous l’onglet Points de terminaison. Pour plus d’informations sur l’utilisation du Stockage Azure avec Azure Government, consultez la documentation Développer avec l’API Stockage sur Azure Government.

    Screenshot of endpoint sample.

  2. Finalisez la configuration de votre identité managée :

    • Si l’identité affectée par le système doit être utilisée, ne spécifiez rien d’autre.

    • Si l’identité affectée par l’utilisateur doit être utilisée, ajoutez les valeurs de paramètres d’application suivantes dans la configuration de votre application :

      • AzureWebJobsStorage__credential : managedidentity

      • AzureWebJobsStorage__clientId : (Il s’agit d’une valeur GUID que vous obtenez à partir du centre d’administration Microsoft Entra)

      Screenshot of user identity client id.

Configurez votre application pour utiliser les informations d’identification de clé secrète client

L’inscription d’une application cliente dans Microsoft Entra ID est une autre façon de configurer l’accès à un service Azure. Dans les étapes suivantes, vous allez apprendre à utiliser les informations d’identification de la clé secrète client pour l’authentification à votre compte Stockage Azure. Cette méthode peut être utilisée par les applications de fonction, localement et sur Azure. Toutefois, les informations d’identification de clé secrète client sont moins recommandées que l’identité managée, car elles sont plus complexes à configurer et à gérer et elles nécessitent le partage d’informations d’identification secrètes avec le service Azure Functions.

Prérequis

Au cours des étapes suivantes, il est supposé que vous partez d’une application Durable Functions existante dont vous connaissez le fonctionnement. Ce démarrage rapide implique notamment d’avoir déjà effectué les opérations suivantes :

  • Création d’un projet Durable Functions sur votre ordinateur local ou dans le Portail Azure.

Inscrivez une application cliente sur Microsoft Entra ID

  1. Inscrivez une application cliente sous Microsoft Entra ID dans le Portail Azure conformément à ces instructions.

  2. Créez une clé secrète client pour votre application cliente. Dans votre application inscrite :

    1. Sélectionnez Certificats et secrets , puis sélectionnez Nouveau secret client.

    2. Renseignez une description et choisissez la durée de validité du secret dans le champ Expire.

    3. Copiez et enregistrez soigneusement la valeur du secret, car elle n’est plus affichée une fois que vous quittez la page.

    Screenshot of client secret page.

Affecter des contrôles d’accès en fonction du rôle (RBAC) à l’application cliente

Attribuez ces trois rôles à votre application cliente en procédant comme suit.

  • Contributeur aux données en file d’attente du stockage
  • Contributeur aux données Blob du stockage
  • Contributeur aux données de table du stockage
  1. Accédez à la page Contrôle d’accès (IAM) du compte de stockage de votre fonction et ajoutez une nouvelle attribution de rôle.

    Screenshot of access control page.

  2. Choisissez le rôle requis, cliquez sur Suivant, puis recherchez votre application, examinez et ajoutez.

    Screenshot of role assignment page.

Ajoutez la configuration de la clé secrète client

Pour exécuter et tester dans Azure, spécifiez les éléments suivants dans la page Configuration de votre application de fonction Azure dans le Portail Azure. Pour exécuter et tester localement, spécifiez ce qui suit dans le fichier local.settings.json de la fonction.

  1. Supprimez la valeur par défaut « AzureWebJobsStorage ».

  2. Lier un compte de stockage Azure en ajoutant l’un des paramètres de valeur suivants :

    • AzureWebJobsStorage__accountName : Par exemple : mystorageaccount123

    • AzureWebJobsStorage__blobServiceUri: Par exemple : https://mystorageaccount123.blob.core.windows.net/

      AzureWebJobsStorage__queueServiceUri: Par exemple : https://mystorageaccount123.queue.core.windows.net/

      AzureWebJobsStorage__tableServiceUri : Par exemple : https://mystorageaccount123.table.core.windows.net/

    Les valeurs de ces variables URI se trouvent dans le compte de stockage sous l’onglet Points de terminaison.

    Screenshot of endpoint sample.

  3. Ajoutez des informations d’identification de clé secrète client en spécifiant les valeurs suivantes :

    • AzureWebJobsStorage__clientId : (il s’agit d’une valeur GUID trouvée dans la page de l’application Microsoft Entra)

    • AzureWebJobsStorage__ClientSecret : (il s’agit de la valeur de secret générée dans le centre d’administration Microsoft Entra à l’étape précédente)

    • AzureWebJobsStorage__tenantId : (il s’agit de l’identifiant de locataire dans lequel l’application Microsoft Entra est inscrite)

    Les valeurs d’ID client et d’ID de locataire se trouvent sur la page de vue d’ensemble de votre application cliente. La valeur de la clé secrète client est celle qui a été soigneusement enregistrée à l’étape précédente. Elle ne sera pas disponible une fois la page actualisée.

    Screenshot of application's overview page.