Partager via


Migrer une application pour utiliser des connexions sans mot de passe avec le Azure Service Bus

Les demandes d’application adressées au Azure Service Bus doivent être authentifiées à l’aide de clés d’accès de compte ou de connexions sans mot de passe. Toutefois, vous devez hiérarchiser les connexions sans mot de passe dans vos applications lorsque cela est possible. Ce didacticiel explique comment migrer des méthodes d’authentification traditionnelles vers des connexions sans mot de passe plus sécurisées.

Risques de sécurité associés aux clés d’accès

L’exemple de code suivant montre comment se connecter à Azure Service Bus à l’aide d’une chaîne de connexion qui inclut une clé d’accès. Lorsque vous créez un Service Bus, Azure génère automatiquement ces clés et chaînes de connexion. De nombreux développeurs gravitent vers cette solution, car ils se sentent familiers avec les options qu’ils ont utilisées dans le passé. Si votre application utilise actuellement des chaînes de connexion, envisagez de migrer vers des connexions sans mot de passe à l’aide des étapes décrites dans ce document.

await using ServiceBusClient client = new("<CONNECTION-STRING>");

Les chaînes de connexion doivent être utilisées avec précaution. Les développeurs doivent être vigilants pour ne jamais exposer les clés dans un emplacement non sécurisé. Toute personne ayant accès à la clé est en mesure de s’authentifier. Par exemple, si une clé de compte est accidentellement vérifiée dans le contrôle de code source, envoyée via un e-mail non sécurisé, collée dans une conversation incorrecte ou consultée par une personne qui ne doit pas avoir l’autorisation, il y a un risque d’accès malveillant à l’application. Au lieu de cela, envisagez de mettre à jour votre application pour utiliser des connexions sans mot de passe.

Migrer vers des connexions sans mot de passe

De nombreux services Azure prennent en charge les connexions sans mot de passe avec Microsoft Entra ID et le contrôle d’accès en fonction du rôle (RBAC). Ces techniques fournissent des fonctionnalités de sécurité robustes et peuvent être implémentées DefaultAzureCredential à partir des bibliothèques clientes Azure Identity.

Important

Certains langages doivent être implémentés DefaultAzureCredential explicitement dans leur code, tandis que d’autres utilisent DefaultAzureCredential en interne via des plug-ins ou des pilotes sous-jacents.

DefaultAzureCredential prend en charge plusieurs méthodes d’authentification et détermine automatiquement celle qui doit être utilisée au moment de l’exécution. Cette approche permet à votre application d’utiliser différentes méthodes d’authentification dans différents environnements (développement local et production) sans implémenter de code spécifique à l’environnement.

L’ordre et les emplacements dans lesquels DefaultAzureCredential les recherches d’informations d’identification sont disponibles dans la vue d’ensemble de la bibliothèque d’identités Azure et varient d’une langue à l’autre. Par exemple, lors de l’utilisation locale avec .NET, DefaultAzureCredential s’authentifie généralement à l’aide du compte utilisé par le développeur pour se connecter à Visual Studio, Azure CLI, ou Azure PowerShell. Lorsque l’application est déployée sur Azure, DefaultAzureCredential découvrira et utilisera automatiquement l’identité managée du service d’hébergement associé, tel que Azure App Service. Aucune modification du code n’est requise pour cette transition.

Notes

Une identité managée fournit une identité de sécurité pour représenter une application ou un service. Managée par la plateforme Azure, l’identité ne nécessite pas que vous approvisionniez ou permutiez de secrets. Vous pouvez en savoir plus sur les identités managées dans la documentation vue d’ensemble .

L’exemple de code suivant montre comment se connecter à Service Bus à l’aide de connexions sans mot de passe. La section suivante décrit comment migrer vers cette configuration pour un service spécifique plus en détail.

Une application .NET peut passer une instance de DefaultAzureCredential au constructeur d’une classe cliente de service. DefaultAzureCredential détecte automatiquement les informations d’identification disponibles dans cet environnement.

client = new ServiceBusClient(
    "<NAMESPACE-NAME>.servicebus.windows.net",
    new DefaultAzureCredential());

Étapes de migration d’une application pour utiliser l’authentification sans mot de passe

Les étapes suivantes expliquent comment migrer une application existante pour utiliser des connexions sans mot de passe au lieu d’une solution basée sur des clés. Vous allez d’abord configurer un environnement de développement local, puis appliquer ces concepts à un environnement d’hébergement d’applications Azure. Ces mêmes étapes de migration doivent s’appliquer que vous utilisiez directement des clés d’accès ou via des chaînes de connexion.

Configurer des rôles et des utilisateurs pour l’authentification de développement local

Lors du développement localement, assurez-vous que le compte d’utilisateur qui accède au Service Bus dispose des autorisations appropriées. Dans cet exemple, vous allez utiliser le rôle propriétaire de données Azure Service Bus pour envoyer et recevoir des données, bien que des rôles plus granulaires soient également disponibles. Pour vous attribuer ce rôle, vous aurez besoin du rôle Administrateur de l’accès utilisateur ou d’un autre rôle qui inclut l’action Microsoft.Authorization/roleAssignments/write. Vous pouvez attribuer des rôles RBAC Azure à un utilisateur à l’aide du Portail Azure, Azure CLI ou Azure PowerShell. Vous pouvez en savoir plus sur les étendues disponibles pour les attributions de rôles dans la page vue d’ensemble de l’étendue .

Dans ce scénario, vous allez attribuer des autorisations limitées à un espace de noms Service Bus spécifique à votre compte d’utilisateur, conformément au Principe des privilèges minimum. Cette pratique offre aux utilisateurs uniquement les autorisations minimales nécessaires et crée des environnements de production plus sécurisés.

L’exemple suivant attribuera le rôle Propriétaire de données Azure Service Bus à votre compte d’utilisateur, ce qui vous permet d’envoyer et de recevoir des données.

Important

Dans la plupart des cas, la propagation de l’attribution de rôle dans Azure peut prendre une ou deux minutes, mais dans de rares cas, cela peut prendre jusqu’à huit minutes. Si vous recevez des erreurs d’authentification lorsque vous exécutez votre code pour la première fois, patientez quelques instants et réessayez.

  1. Dans le Portail Azure, recherchez votre espace de noms Service Bus à l’aide de la barre de recherche principale ou de la navigation gauche.

  2. Dans la page de vue d’ensemble du Service Bus, sélectionnez Contrôle d’accès (IAM) dans le menu de gauche.

  3. Sur la page Contrôle d’accès (IAM), sélectionnez l’onglet Attributions de rôles.

  4. Sélectionnez + Ajouter dans le menu supérieur, puis Ajouter une attribution de rôle dans le menu déroulant résultant.

    Capture d’écran montrant comment attribuer un rôle.

  5. Utilisez la zone de recherche pour filtrer les résultats sur le rôle souhaité. Pour cet exemple, recherchez Azure Service Bus Data Owner, sélectionnez le résultat correspondant, puis choisissez Suivant.

  6. Sous Attribuer l’accès à, sélectionnez Utilisateur, groupe ou principal de service, puis sélectionnez + Sélectionner des membres.

  7. Dans la boîte de dialogue, recherchez votre nom d’utilisateur Microsoft Entra (généralement votre adresse e-mail utilisateur@domaine), puis choisissez Sélectionner en bas de la boîte de dialogue.

  8. Sélectionnez Vérifier + affecter pour accéder à la page finale, puis Vérifier + attribuer à nouveau pour terminer le processus.

Connectez-vous et migrez le code de l’application pour utiliser des connexions sans mot de passe

Pour le développement local, vérifiez que vous êtes authentifié avec le même compte Microsoft Entra auquel vous avez attribué le rôle sur l’espace de noms Service Bus. Vous pouvez vous authentifier via Azure CLI, Visual Studio, Azure PowerShell ou d’autres outils tels qu’IntelliJ.

Pour le développement local, vérifiez que vous êtes authentifié avec le même compte Microsoft Entra auquel vous avez attribué le rôle. Vous pouvez vous authentifier au moyen d’outils de développement populaires, comme Azure CLI ou Azure PowerShell. Les outils de développement avec lesquels vous pouvez vous authentifier dépendent de la langue.

Connectez-vous à Azure via Azure CLI à l’aide de la commande suivante :

az login

Ensuite, mettez à jour votre code pour utiliser des connexions sans mot de passe.

  1. Pour utiliser DefaultAzureCredential dans une application .NET, installez le Azure.Identity package :

    dotnet add package Azure.Identity
    
  2. Ajoutez le code suivant en haut de votre fichier :

    using Azure.Identity;
    
  3. Identifiez le code qui crée un objet ServiceBusClient pour la connexion à Azure Service Bus. Mettez à jour votre code pour le faire correspondre à l’exemple suivant :

     var serviceBusNamespace = $"{namespace}.servicebus.windows.net";
     ServiceBusClient client = new(
         serviceBusNamespace,
         new DefaultAzureCredential());
    

Exécutez l’application localement.

Après avoir apporté ces modifications de code, exécutez votre application localement. La nouvelle configuration doit récupérer vos informations d’identification locales, telles qu’Azure CLI, Visual Studio ou IntelliJ. Les rôles que vous avez attribués à votre utilisateur de développement local dans Azure permettent à votre application de se connecter au service Azure localement.

Configurer l’environnement d’hébergement Azure

Une fois que votre application est configurée pour utiliser des connexions sans mot de passe et s’exécute localement, le même code peut s’authentifier auprès des services Azure après son déploiement sur Azure. Par exemple, une application déployée sur une instance Azure App Service avec une identité managée activée peut se connecter au Azure Service Bus.

Créer une identité managée à l’aide du portail Azure

Les étapes suivantes montrent comment créer une identité managée affectée par le système pour différents services d’hébergement web. L’identité managée peut se connecter en toute sécurité à d’autres services Azure à l’aide des configurations d’application que vous avez configurées.

Certains environnements d’hébergement d’applications prennent en charge Service Connector, ce qui vous permet de connecter des services de calcul Azure à d’autres services de stockage. Service Connector configure automatiquement les paramètres réseau et les informations de connexion. Vous pouvez en savoir plus sur Service Connector et les scénarios pris en charge sur la page de vue d’ensemble.

Les services de calcul suivants sont actuellement pris en charge :

  • Azure App Service
  • Azure Spring Cloud
  • Azure Container Apps (préversion)

Pour ce guide de migration, vous allez utiliser App Service, mais les étapes sont similaires sur Azure Spring Apps et Azure Container Apps.

Notes

Azure Spring Apps prend actuellement uniquement en charge Service Connector à l’aide de chaînes de connexion.

  1. Dans la page de vue d’ensemble principale de votre App Service, sélectionnez Service Connector dans la navigation de gauche.

  2. Sélectionnez + Créer dans le menu supérieur et le panneau Créer une connexion s’ouvre. Saisissez les valeurs suivantes :

    • Type de service : choisissez Service Bus.
    • Abonnement : sélectionnez l’abonnement que vous souhaitez utiliser.
    • Nom de la connexion : entrez un nom pour votre connexion, par exemple connector_appservice_servicebus.
    • Type de client: laissez la valeur par défaut sélectionnée ou choisissez le client spécifique que vous souhaitez utiliser.

    Sélectionnez Suivant : authentification.

  3. Vérifiez que l’Identité managée affectée par le système (recommandée) est sélectionnée, puis choisissez Suivant : Mise en réseau.

  4. Laissez les valeurs par défaut sélectionnées, puis choisissez Suivant : Vérifier + Créer.

  5. Une fois qu’Azure a validé vos paramètres, sélectionnez Créer.

Le connecteur de service crée automatiquement une identité managée affectée par le système pour l’app service. Le connecteur attribue également à l’identité managée un rôle de propriétaire de données Azure Service Bus pour le service bus que vous avez sélectionné.

Vous pouvez également activer l’identité managée sur un environnement d’hébergement Azure à l’aide d’Azure CLI.

Vous pouvez utiliser un connecteur de services pour créer une connexion entre un environnement d’hébergement de calcul Azure et un service cible à l’aide d’Azure CLI. L’interface CLI gère automatiquement la création d’une identité managée et affecte le rôle approprié, comme expliqué dans les instructions du portail.

Si vous utilisez Azure App Service, utilisez la commande az webapp connection :

az webapp connection create servicebus \
    --resource-group <resource-group-name> \
    --name <webapp-name> \
    --target-resource-group <target-resource-group-name> \
    --namespace <target-service-bus-namespace> \
    --system-identity

Si vous utilisez Azure Spring Apps, utilisez la commande az spring connection :

az spring connection create servicebus \
    --resource-group <resource-group-name> \
    --service <service-instance-name> \
    --app <app-name> \
    --deployment <deployment-name> \
    --target-resource-group <target-resource-group> \
    --namespace <target-service-bus-namespace> \
    --system-identity

Si vous utilisez Azure Container Apps, utilisez la commande az containerapp connection :

az containerapp connection create servicebus \
    --resource-group <resource-group-name> \
    --name <webapp-name> \
    --target-resource-group <target-resource-group-name> \
    --namespace <target-service-bus-namespace> \
    --system-identity

Attribuer des rôles à l’identité managée

Ensuite, vous devez accorder des autorisations à l’identité managée que vous avez créée pour accéder à votre Service Bus. Vous pouvez le faire en affectant un rôle à l’identité managée, comme vous l’avez fait avec votre utilisateur de développement local.

Si vous avez connecté vos services à l’aide du connecteur de service, vous n’avez pas besoin d’effectuer cette étape. Les configurations nécessaires ont été gérées pour vous :

  • Si vous avez sélectionné une identité managée lors de la création de la connexion, une identité managée affectée par le système a été créée pour votre application et le rôle de propriétaire de données Azure Service Bus dans le Service Bus.

  • Si vous avez sélectionné la chaîne de connexion, la chaîne de connexion a été ajoutée en tant que variable d’environnement d’application.

Tester l’application

Après avoir apporté ces modifications de code, accédez à votre application hébergée dans le navigateur. Votre application doit être en mesure de se connecter au Service Bus avec succès. N’oubliez pas qu’il peut falloir plusieurs minutes pour que les attributions de rôle se propagent dans l’environnement Azure. Votre application est désormais configurée pour s’exécuter localement et dans un environnement de production sans que les développeurs n’aient à gérer les secrets dans l’application elle-même.

Étapes suivantes

Dans ce didacticiel, vous avez appris à migrer une application vers des connexions sans mot de passe.