← CertifHub
Azure 6 juin 2026 · 4 · par L'équipe CertifApp

Sécuriser Azure Service Bus avec Azure AD et les Managed Identities

Découvrez comment remplacer les clés SAS par Azure AD et les Managed Identities pour protéger vos échanges sur Azure Service Bus.

Contexte et enjeux

Azure Service Bus est le bus de messagerie de choix pour les architectures découpées en micro‑services. Traditionnellement, l’accès s’effectue via des clés SAS (Shared Access Signature). Ces clés sont statiques, nécessitent une rotation manuelle et sont souvent stockées en clair dans les fichiers de configuration, ce qui constitue une surface d’attaque importante.

Azure AD, combiné aux Managed Identities, offre une alternative native : l’authentification sans secret, la gestion centralisée des droits et la traçabilité via Azure RBAC. L’objectif de cet article est de détailler pas à pas la migration d’une solution Service Bus basée sur SAS vers une approche sécurisée par Azure AD.


Authentification Azure AD pour Service Bus

  1. Activer l’authentification Azure AD sur le namespace

    az servicebus namespace update \
        --resource-group myResourceGroup \
        --name myNamespace \
        --disable-local-auth false
    

    La commande désactive l’authentification locale (SAS) et autorise les jetons Azure AD.

  2. Créer un rôle RBAC dédié Azure propose le rôle intégré Azure Service Bus Data Sender (envoi) et Azure Service Bus Data Receiver (lecture). Pour une granularité fine, créez un rôle personnalisé si nécessaire.

  3. Attribuer le rôle à un principal

    az role assignment create \
        --assignee <principal‑id> \
        --role "Azure Service Bus Data Sender" \
        --scope /subscriptions/<sub‑id>/resourceGroups/myResourceGroup/providers/Microsoft.ServiceBus/namespaces/myNamespace
    

    <principal‑id> peut être l’ID d’une Managed Identity, d’un compte de service ou d’un utilisateur.


Mise en place d’une Managed Identity

1. Créer une identité gérée

az identity create \
    --resource-group myResourceGroup \
    --name sbSenderIdentity

La sortie contient principalId et clientId.

2. Attacher l’identité à la ressource cible

  • Azure App Service
    az webapp identity assign \
        --resource-group myResourceGroup \
        --name myWebApp \
        --identities sbSenderIdentity
    
  • Azure Function (plan de consommation) :
    az functionapp identity assign \
        --resource-group myResourceGroup \
        --name myFunctionApp \
        --identities sbSenderIdentity
    

3. Accorder le rôle sur le Service Bus

Utilisez le principalId de l’identité créée :

az role assignment create \
    --assignee <principalId> \
    --role "Azure Service Bus Data Sender" \
    --scope /subscriptions/<sub‑id>/resourceGroups/myResourceGroup/providers/Microsoft.ServiceBus/namespaces/myNamespace

Exemple de code .NET 6 avec Azure.Identity

using Azure.Identity;
using Azure.Messaging.ServiceBus;

var fullyQualifiedNamespace = "myNamespace.servicebus.windows.net";
var queueName = "orders";

// L’instance DefaultAzureCredential résout automatiquement la Managed Identity du service
var credential = new DefaultAzureCredential();

await using var client = new ServiceBusClient(fullyQualifiedNamespace, credential);
await using var sender = client.CreateSender(queueName);

var message = new ServiceBusMessage("Message sécurisé via Azure AD");
await sender.SendMessageAsync(message);
Console.WriteLine("Message envoyé avec succès.");

Le code ne contient aucune chaîne de connexion ni clé SAS ; l’authentification repose entièrement sur Azure AD.


Bonnes pratiques et vérifications

  • Rotation des rôles : revoyez périodiquement les attributions RBAC et retirez les droits superflus.
  • Audits Azure Monitor : activez les diagnostics du namespace Service Bus (Microsoft.EventHub/receive et Microsoft.EventHub/send) pour tracer les opérations par identité.
  • Limitation des réseaux : combinez Azure AD avec des réseaux privés (Private Endpoints) afin de restreindre le trafic à votre VNet.
  • Gestion des erreurs : implémentez la logique de récupération (ServiceBusException) et surveillez les codes 401 Unauthorized qui indiquent un problème d’autorisation.
  • Test en environnement de staging : validez la chaîne d’authentification dans un environnement isolé avant de pousser en production.

En suivant ces étapes, vous éliminez les secrets statiques, vous capitalisez sur la gestion d’identité native d’Azure et vous renforcez la conformité aux exigences de sécurité des certifications Cloud.

Envie d’aller plus loin avec CertifApp ?

Découvrir CertifApp