• Azure
  • Microsoft 365
  • 📣 Continuité de communication en cas de panne Exchange

    📖 Introduction

    Dans un environnement de travail basé sur Microsoft 365, Exchange Online constitue le point central de la communication.

    Malgré d’excellents SLA proposés par Microsoft, une panne peut toujours survenir…

    Il est également possible que vous ayez besoin de communiquer très rapidement, alors que certains utilisateurs ne consultent leurs emails qu’avec un certain délai.

    Dans cet article, je vais vous montrer comment créer un canal de communication alternatif afin de pallier ce problème.

    Cas d’usage :

    • Communications urgentes
    • Alertes IT
    • Notifications de crise

    ⚙️ Prérequis

    • Posséder une souscription Azure
    • Avoir le rôle Contributeur sur cette souscription
    • Être Application Administrator sur Entra

    🦸‍♀️ Création des ressources Azure

    Dans Azure, nous allons commencer par créer un Resource Group qui servira à accueillir nos ressources.

    Pour cela, dans le menu Resource Groups, cliquez sur Create, puis choisissez un nom et une Region. Enfin, cliquez sur Review + Create, puis sur Create.

    Je choisis France Central afin que les données soient stockées en France et respectent ainsi le RGPD.

    Dans ce guide, nous allons utiliser Azure Logic Apps, qui permet d’automatiser des tâches en low-code. On peut voir cela comme un équivalent de Power Automate, mais sans rattachement à un compte Microsoft 365.

    🧾 Création et configuration de la Logic App

    Dans ce groupe de ressources, créez une Logic App en cliquant sur Create, puis en recherchant Logic Apps.

    Choisissez le mode Consumption afin de payer uniquement ce que vous consommez. Donnez ensuite un nom à votre application et hébergez-la dans la même région que le groupe de ressources.

    Bravo ! Vos ressources sont créées. Il faut maintenant les configurer.

    Rendez-vous sur votre Logic App, puis cliquez sur Edit.

    Ajouter un déclencheur (trigger)

    Pour cette Logic App, nous allons la déclencher via une requête HTTP. Cela permet de l’utiliser sans être connecté à Azure.

    Cliquez sur Add a trigger, puis recherchez When an HTTP request is received.

    Dans le champ Method, choisissez POST, puis ajoutez le JSON suivant dans Request Body JSON Schema :

    {
    "type": "object",
    "properties": {
    "groupId": {
    "type": "string"
    },
    "message": {
    "type": "string"
    },
    "authToken": {
    "type": "string"
    }
    },
    "required": [
    "groupId",
    "message",
    "authToken"
    ]
    }

    Ce schéma impose la présence des paramètres suivants :

    • groupId → Identifiant du groupe Entra cible
    • message → Message à envoyer
    • authToken → Token de sécurité

    Execution du workflow uniquement si le token est valide

    Cliquez sur le bouton + sous le déclencheur, puis sur Add an actionCondition.

    Ajoutez le contenu dynamique authToken.

    Générez ensuite un token avec PowerShell :


    $bytes = New-Object byte[] 32
    [System.Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($bytes)
    $token = [Convert]::ToBase64String($bytes)
    $token = $token -replace '\+','-' -replace '/','_' -replace '='
    $token

    Collez ce token dans la partie droite de la condition.

    ⚠️ Pensez à renouveler régulièrement ce token pour limiter les risques.

    ❌ Token invalide → arrêt du workflow

    Dans la branche False, ajoutez une action Terminate.

    N’oubliez pas de sauvegarder !

    🥸 Récupération des membres du groupe cible

    Pour récupérer les membres du groupe, nous allons utiliser une App Registration.

    Dans Entra, créez une application et ajoutez un Client Secret. Conservez :

    • Tenant ID
    • Client ID
    • Client Secret

    Ajoutez ensuite les permissions suivantes :

    • Chat.Create
    • Group.Read.All
    • User.Read.All

    Puis cliquez sur Grant admin consent.

    Connexion à Microsoft Graph

    Ajoutez une action HTTP dans la branche TRUE :

    • URI : https://login.microsoftonline.com/<TENANTID>/oauth2/v2.0/token
    • Method : POST
    • Headers : Content-Type | application/x-www-form-urlencoded


    client_id=<CLIENTID>&scope=https://graph.microsoft.com/.default&client_secret=<SECRETVALUE>&grant_type=client_credentials

    Récupération du token

    Ajoutez une action Parse JSON :

    Dans Content, indiquez le contenu dynamique Body

    Puis indiquez le JSON suivant dans Schéma

    {
    "type": "object",
    "properties": {
    "type": {
    "type": "string"
    },
    "properties": {
    "type": "object",
    "properties": {
    "access_token": {
    "type": "object",
    "properties": {
    "type": {
    "type": "string"
    }
    }
    }
    }
    }
    }
    }

    Récupération des membres

    Ajoutez une nouvelle action HTTP :

    • URI : https://graph.microsoft.com/v1.0/groups/groupID/members
      • Group ID est un contenu dynamique
    • Method : GET
    • Headers : Authorization | Bearer {body(‘Parse_JSON’)?[‘access_token’]}
      • Toute la fonction entre {}doit être insérée via le bouton Insert expression

    💬 Envoi du message

    Ajoutez une boucle For each avec le paramètre suivant:

    • body('HTTP1')?['value']
      • Toute la fonction doit être insérée via le bouton Insert expression

     

    À l’intérieur, ajoutez l’action Post message in a chat or channel.

    Configurer la de la manière suivante :

    1. Cliquez sur Sign In puis connectez vous avec un compte de service, pour éviter les adhérences à votre compte.
    2. Remplir les champs suivants :
      1. Post as → Flow Bot
      2. Post in → Chat with Flow Bot
      3. Recipiant → Insert Expression → items(‘For_each’)[‘mail’]
      4. Message → Dynamic Expression → message
        1. Vous pouvez agrémenter le message comme vous le voulez autour du message reçu par le post http
      5. Dans les paramêtres avancés, sélectionnez Is alert et positionnez le a « OUI »

    N’oubliez pas d’enregister votre travail !!

    La configuration est finie, nous allons maintenant la tester.

     

    🎇Utilisation de la logic app

    L’utilisation de la logic apps est possible en éxecutant un POST HTTP sur l’URL de celle-ci.

    Récupérez l’URL du workflow sur la page d’accueil de votre Logic App, ainsi que votre authToken créé plus haut.

    Récupérez ensuite l’ID du groupe dans lequel vous voulez envoyer un message.

    Executez ensuite la requête HTTP POST via l’outil de votre choix (Postman,Python,PowerShell), voici un exemple de script Powershell .

    Github – AstraWorkplace

    Voici à quoi ressemble la notification :

    Félicitations, vous avez créé un canal secondaire de communication !

     

    Et pour après ?

    Je vous propose ensuite de savoir comment stocker ses secrets de manière sécurisée, via Azure KeyVault, dans un article qui sortira prochainement !

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

    5 mins