Architecture Azure CLS — Repondre aux demandes metier avec des webapps securisees

Document : Proposition d'architecture Azure pour les applications metier CLS
Auteur : Christophe Kersuzan — Digital Manager — DSI CLS
Date : Avril 2026  |  Version : 1.0  |  Classification : Interne
Destinataires : Direction des Systemes d'Information / Equipe Securite SI

1. Le besoin : repondre vite aux demandes metier

Les equipes metier CLS (EADM, VMS, DSI, VIGISAT) expriment regulierement des besoins de petites applications web : formulaires, dashboards, checklists, outils de suivi. Ces demandes partagent trois points communs :

Jusqu'ici, ces besoins etaient couverts par des PowerApps, des fichiers Excel SharePoint, ou des outils sur un homelab personnel. Ces solutions posent des problemes de maintenabilite, de cout (licences PowerPlatform), et de dependance.

La proposition : utiliser Azure Static Web Apps (service Microsoft natif, tier gratuit) pour livrer des webapps metier avec authentification SSO Microsoft integree, hebergees dans le tenant CLS existant, sans aucune modification du reseau interne.

2. Ce qui est deja en production

Cette architecture n'est pas un concept. Elle est operationnelle depuis janvier 2026 avec 6 applications en production :

6Apps en production
0 EURCout hebergement apps
SSOAuth Microsoft integree
0Flux vers le LAN CLS
ApplicationUsage metierUtilisateursAuthStatut
Hub CLSPortail central : acces a toutes les apps et a la documentationEquipe DigitalSSO MicrosoftEN PROD
PauseCafeGestion des demandes pause-cafe (4 roles : admin, hotesse, EADM, demandeur)Hotesses, EADM, directionsSSO MicrosoftEN PROD
Checklist SallesControle quotidien des salles de reunion, alertes M42 automatiquesServices generauxSSO MicrosoftEN PROD
Flotte MobileDashboard 900+ lignes mobiles, ETL consolidation ADP/IntuneEADM, DSISSO MicrosoftEN PROD
VMS DashboardSuivi operationnel 3700+ commandes VMS IndonesieEquipe VMS JBSSO MicrosoftEN PROD
Transcript CRTranscription audio + generation de comptes-rendus par IAEquipe DigitalSSO MicrosoftEN PROD
Toutes ces applications sont gratuites a heberger (Azure Static Web Apps free tier). Le cout de l'infrastructure se limite aux bases de donnees partagees (~22 EUR/mois pour l'ensemble).

3. Pourquoi Azure est la bonne reponse

Authentification Microsoft native

Azure Static Web Apps integre nativement le provider Azure AD. Le collaborateur CLS se connecte avec son compte Microsoft habituel, avec MFA. Pas d'application a enregistrer, pas de configuration SAML. C'est une ligne dans un fichier de config.

Zero modification reseau

Les webapps vivent dans Azure, le tenant CLS existant. Aucune ouverture de port, aucune DMZ, aucun reverse proxy, aucun VPN. Le reseau interne CLS reste strictement inchange.

Livraison en jours, pas en mois

Un besoin metier se traduit en webapp fonctionnelle en 2-5 jours. PauseCafe (ex-PowerApp) a ete reconstruite en 3 jours. Le deploiement est automatique via GitHub Actions (git push = en production en 30 secondes).

Cout quasi-nul

Azure SWA free tier = 0 EUR par app. Cosmos DB free tier = 0 EUR. Le seul cout est PostgreSQL partage (~13 EUR/mois) + Container Apps n8n (~9 EUR/mois). Total : ~22 EUR/mois pour 6 apps + orchestration + base de donnees.

Dans le tenant CLS existant

Toutes les ressources sont dans la souscription Azure CLS existante. Visibles dans le portail Azure. Facturation sur le meme compte. Donnees en region France Central. Pas de cloud externe, pas de shadow IT.

Maintenable par n'importe quel developpeur

Les apps sont en HTML/CSS/JavaScript standard. Le code est sur GitHub (repos prives CLS). Pas de framework proprietaire. Pas de licence a renouveler. N'importe quel developpeur web peut maintenir ou faire evoluer.

CI/CD integre (GitHub Actions)

Chaque git push sur la branche main declenche un deploiement automatique via GitHub Actions + Azure SWA Deploy. Zero intervention manuelle. Historique complet des versions. Rollback en un clic.

Securite geree par Microsoft

TLS 1.2+ automatique. En-tetes de securite (X-Frame-Options, X-Content-Type-Options). Certificats geres. Isolation reseau complete. Azure Container Apps certifie ISO 27001, SOC 2, GDPR.

4. Architecture globale

4.1 Schema d'architecture

graph LR subgraph Users["Utilisateurs CLS"] U1["Collaborateur CLS
(navigateur + MFA)"] U2["Mobile / Tablette"] end subgraph Azure["Azure — Tenant CLS (souscription existante)"] subgraph SWAs["Azure Static Web Apps (Free tier)"] HUB["Hub CLS"] PC["PauseCafe"] CK["Checklist Salles"] FM["Flotte Mobile"] VMS["VMS Dashboard"] TR["Transcript CR"] end AUTH["Azure AD
SSO + MFA"] subgraph Backend["Services backend"] ACA["Azure Container Apps
n8n (orchestration)"] FN["Azure Functions
(API serverless)"] end subgraph Data["Donnees"] COSMOS[("Cosmos DB
(free tier)")] PG[("PostgreSQL Flexible
(B1ms partage)")] end AI["Azure AI Foundry
(GPT, Grok)"] end subgraph External["Services externes"] GRAPH["Microsoft Graph API
(emails)"] ZOHO["Zoho Creator / Desk"] end U1 -->|"HTTPS 443
SSO Azure AD"| SWAs U2 -->|"HTTPS 443
SSO Azure AD"| SWAs SWAs --> AUTH SWAs -->|API calls| FN FN --> COSMOS FN --> PG ACA --> PG ACA --> AI ACA -->|"Graph API"| GRAPH ACA --> ZOHO SWAs -.->|"webhooks"| ACA style Azure fill:#eff6ff,stroke:#2563eb,stroke-width:2px style SWAs fill:#dbeafe,stroke:#3b82f6,stroke-width:1px style Backend fill:#e0f2fe,stroke:#0284c7,stroke-width:1px style Data fill:#f0fdf4,stroke:#22c55e,stroke-width:1px style Users fill:#fef3c7,stroke:#f59e0b,stroke-width:1px style External fill:#f1f5f9,stroke:#94a3b8,stroke-width:1px
Architecture 100% Azure. L'utilisateur CLS ouvre son navigateur, s'authentifie avec son compte Microsoft, et utilise l'application. Tout reste dans le tenant CLS. Aucun flux ne traverse le reseau interne.

4.2 Parcours utilisateur type

sequenceDiagram participant U as Collaborateur CLS participant AAD as Azure AD (SSO) participant SWA as Azure Static Web App participant FN as Azure Function (API) participant DB as Cosmos DB / PostgreSQL participant GRAPH as Microsoft Graph API U->>SWA: Ouvre l'app (HTTPS) SWA->>AAD: Redirection authentification AAD->>U: Login Microsoft + MFA AAD->>SWA: Token valide (x-ms-client-principal) SWA->>U: Page chargee (HTML/JS) U->>FN: Action metier (ex: creer une demande) FN->>FN: Verifie identite (header SSO) FN->>DB: INSERT / UPDATE FN->>GRAPH: Email notification (clsworkflow@) FN-->>U: 200 OK Note over U,GRAPH: Tout reste dans Azure.
Zero flux vers le LAN CLS.

4.3 Flux detailles : notifications email (exemple PauseCafe)

sequenceDiagram participant H as Hotesse (navigateur) participant SWA as PauseCafe (Azure SWA) participant FN as Azure Function participant CDB as Cosmos DB participant GRAPH as Graph API (CLSWorkflow@) participant D as Demandeur H->>SWA: Change statut → "Pause installee" SWA->>FN: PATCH /api/demandes/id FN->>FN: Verifie role (hotesse OK) FN->>CDB: Update statut FN->>GRAPH: POST /sendMail Note over GRAPH: From: clsworkflow@groupcls.com
To: demandeur@groupcls.com GRAPH-->>D: Email "Votre pause cafe est installee" FN-->>SWA: 200 OK SWA-->>H: Interface mise a jour

4.4 Flux detailles : commande VMS Indonesie

sequenceDiagram participant BD as BD Indonesie participant ZC as Zoho Creator participant N8N as n8n (Azure Container Apps) participant AI as Azure AI Foundry participant PG as PostgreSQL Azure participant GRAPH as Graph API BD->>ZC: Saisie commande + documents ZC->>N8N: POST /webhook/vms-indo-order N8N->>AI: OCR documents (KTP, NPWP, SIPI) AI-->>N8N: Donnees extraites N8N->>N8N: Validation + logique metier N8N->>PG: INSERT commande N8N->>GRAPH: Email confirmation GRAPH-->>BD: Email nouvelle commande N8N-->>ZC: 200 OK

5. Matrice des flux reseau

Tous les flux sont sortants depuis Azure vers des services SaaS, ou entrants depuis Internet vers Azure. Aucun flux ne touche le reseau interne CLS.

5.1 Flux entrants (Utilisateurs / Services → Azure)

IDSourceDestinationPortProtocoleDescriptionAuthentificationImpact LAN CLS
IN-01Navigateurs CLSAzure Static Web Apps443HTTPSAcces aux 6 webapps metier (Hub, PauseCafe, Checklist, Flotte, VMS, Transcript)Azure AD SSO + MFAAUCUN
IN-02Azure Static Web AppsAzure Functions (managed)443HTTPSAppels API depuis les webapps (CRUD donnees, actions metier)Header x-ms-client-principal (SSO)AUCUN
IN-03Zoho Creator (SaaS)n8n (Azure Container Apps)443HTTPSWebhooks formulaires VMS IndonesieSecret partageAUCUN
IN-04Azure Static Web Appsn8n (Azure Container Apps)443HTTPSWebhooks notifications (Checklist alertes M42, Transcript envoi CR)API KeyAUCUN
IN-05Navigateurs (admin)n8n (Azure Container Apps)443HTTPSInterface admin n8n (edition workflows)Compte n8n + Azure ADAUCUN

5.2 Flux sortants (Azure → Services externes)

IDSourceDestinationPortProtocoleDescriptionAuthentificationImpact LAN CLS
OUT-01Azure FunctionsMicrosoft Graph API443HTTPSEnvoi emails depuis clsworkflow@groupcls.com (notifications PauseCafe, alertes M42, CR)OAuth2 (client credentials)AUCUN
OUT-02n8n (Azure)Azure AI Foundry443HTTPSAppels LLM : GPT-4.1-mini (transcription, classification), Grok (raisonnement)API Key AzureAUCUN
OUT-03Azure FunctionsCosmos DB (Azure)443HTTPSDonnees applicatives PauseCafe, Checklist SallesConnection string (meme tenant)AUCUN
OUT-04n8n (Azure)PostgreSQL (Azure)5432TLSDonnees n8n, VMS Indonesie, Flotte MobileLogin/password (private link)AUCUN
OUT-05n8n (Azure)desk.zoho.eu443HTTPSAPI Zoho Desk (synchro tickets support)OAuth2AUCUN
OUT-06n8n (Azure)Flux RSS publics443HTTPSVeille automatisee (6 flux : Cyber, Maritime, IA, Mobile, AO, VIGISAT)Aucune (RSS publics)AUCUN

5.3 Flux intra-Azure (internes au tenant CLS)

IDSourceDestinationDescriptionSecurite
INT-01Static Web AppsAzure ADAuthentification SSO des utilisateurs (redirection login Microsoft)OAuth2 / OpenID Connect
INT-02Azure FunctionsCosmos DBLecture/ecriture donnees applicativesConnection string + TLS
INT-03Container Apps (n8n)PostgreSQL FlexibleBase de donnees n8n, VMS, Flotte MobileSSL obligatoire
INT-04Container Apps (n8n)AI FoundryInference LLM (GPT, Grok)API Key Azure
Resultat : ZERO flux vers le reseau LAN CLS
Tous les flux restent a l'interieur d'Azure ou vers des services SaaS externes (Microsoft Graph, Zoho, RSS publics). Le reseau interne CLS n'est ni source, ni destination d'aucun flux. Aucune ouverture de port, aucune DMZ, aucun reverse proxy, aucun VPN.

6. Le pattern : comment une demande metier devient une webapp

Quand une equipe metier exprime un besoin, le pattern de livraison est toujours le meme :

graph LR A["Besoin metier
(formulaire, dashboard,
checklist...)"] --> B["Developpement
HTML/CSS/JS
(2-5 jours)"] B --> C["API serverless
Azure Function
(Node.js)"] C --> D["Base de donnees
Cosmos DB ou
PostgreSQL"] B --> E["git push"] E --> F["GitHub Actions
deploiement auto"] F --> G["En production
avec SSO Microsoft
en 30 secondes"] style A fill:#fef3c7,stroke:#f59e0b style G fill:#dcfce7,stroke:#22c55e
EtapeDetailDuree
1. FrontendPage HTML/CSS/JavaScript. Pas de framework lourd. Compatible mobile nativement.1-3 jours
2. APIAzure Function (Node.js) pour le CRUD et la logique metier. Protegee par le header SSO.0.5-1 jour
3. Base de donneesCosmos DB (free tier, ideal pour documents JSON) ou PostgreSQL (donnees relationnelles).0.5 jour
4. EmailsMicrosoft Graph API (CLSWorkflow@groupcls.com). Notifications automatiques.Reutilisable
5. DeploiementGitHub Actions : un git push declenche le deploiement automatique.30 secondes
6. AuthSSO Microsoft integre dans Azure SWA. Une ligne dans staticwebapp.config.json.Inclus
Exemple concret : PauseCafe etait une PowerApp (dependante de licences, peu flexible). Reconstruite en 3 jours en tant qu'Azure SWA avec Cosmos DB et Graph API. Resultat : plus rapide, plus ergonomique, gestion des roles (admin/hotesse/EADM/demandeur), notifications email automatiques, deploiement CI/CD, cout d'hebergement 0 EUR.

7. Securite : une architecture qui simplifie au lieu de compliquer

L'avantage majeur de cette architecture : elle elimine les problemes de securite au lieu de les gerer.

Exigence securiteComment Azure y repond
Authentification SSO Azure AD natif. Le collaborateur CLS utilise son compte Microsoft avec MFA. L'identite est verifiee cote serveur via le header x-ms-client-principal injecte par Azure. Impossible a falsifier cote client.
Autorisation / Roles Gestion des roles dans le code API (admin, hotesse, EADM, etc.) basee sur l'email du principal Azure AD. Les routes sont protegees dans staticwebapp.config.json.
Chiffrement en transit TLS 1.2+ sur tous les flux. Certificats geres automatiquement par Azure (Let's Encrypt). HTTPS obligatoire.
Chiffrement au repos Cosmos DB : chiffrement AES-256 par defaut. PostgreSQL Flexible : chiffrement disque actif. Credentials n8n : AES-256-GCM.
Isolation reseau Aucun flux vers le LAN CLS. Pas de VPN, pas de peering reseau, pas de tunnel. L'architecture Azure est 100% autonome. Meme si un conteneur etait compromis, il ne pourrait pas atteindre le reseau interne CLS.
En-tetes de securite X-Frame-Options: DENY, X-Content-Type-Options: nosniff configures dans chaque webapp.
Conformite Azure Container Apps et Static Web Apps sont certifies ISO 27001, SOC 2, GDPR. Donnees hebergees en region France Central.
Audit et logs Azure Monitor + Log Analytics. Historique des executions n8n (30 jours). Historique de deploiement complet (GitHub Actions).
Backup PostgreSQL : backup automatique Azure (7 jours, retention configurable). Cosmos DB : backup continu. Code : versionne sur GitHub (repos prives CLS).
Mise a jour Apps web : deploiement automatique via CI/CD. n8n : mise a jour image Docker (1 commande). Pas de patch OS a gerer.
Donnees traitees Donnees metier courantes uniquement : commandes VMS, lignes mobiles, demandes pause-cafe, controles salles, veille publique. Aucune donnee RH, medicale, bancaire ou classifiee defense.
Le point essentiel : pas besoin d'ouvrir un port, de configurer un WAF, de gerer un reverse proxy, ou de modifier le firewall. L'isolation est totale par conception. C'est plus securise qu'une PowerApp qui se connecte a Dataverse via des connecteurs premium.

8. Couts

8.1 Cout actuel de la plateforme Azure CLS

ComposantService AzureDetailCout/mois
6 webapps metierAzure Static Web Apps (Free tier)Hub, PauseCafe, Checklist, Flotte, VMS, Transcript0 EUR
APIs serverlessAzure Functions (managed dans SWA)Incluses dans le tier gratuit SWA0 EUR
Base documents (PauseCafe, Checklist)Cosmos DB (Free tier)400 RU/s + 25 Go inclus0 EUR
Base relationnelle (n8n, VMS, Flotte)PostgreSQL Flexible (B1ms)1 vCPU, 2 Go RAM, 32 Go — partagee~13 EUR
Orchestration workflowsContainer Apps (Consumption)n8n — facture a l'usage~9 EUR
IA (LLM)Azure AI FoundryGPT-4.1-mini, Grok — pay-per-use< 1 EUR
EmailsMicrosoft Graph APICLSWorkflow@ — inclus dans la licence M3650 EUR
CI/CDGitHub Actions2 000 min/mois incluses (tier gratuit)0 EUR
Total mensuel~22 EUR/mois
Total annuel~264 EUR/an

8.2 Comparaison avec les alternatives Microsoft

ApprocheCout annuel (5 users)Limitations
Azure SWA + n8n (actuel)~264 EURAucune limite d'utilisateurs, de connecteurs ou d'executions
Power Automate Premium~900 EURConnecteurs HTTP/custom premium, throttling, licences par utilisateur
PowerApps Premium~1 200 EURRequis si Dataverse ou connecteurs custom, ergonomie limitee sur mobile
Power Automate + PowerApps~2 100 EURStack complete Microsoft, licences par utilisateur cumulees
Azure Logic Apps (Standard)~500-1 500 EURFacture a l'action, cout imprevisible a volume
264 EUR/an pour 6 apps en production avec auth SSO, notifications email, IA, CI/CD, et bases de donnees. C'est 8 a 10 fois moins cher que l'equivalent PowerPlatform, avec plus de flexibilite.

9. Reponses aux questions

QuestionReponse
"Ca ouvre une surface d'attaque sur le LAN ?" Non. La plateforme Azure est isolee du LAN CLS. Aucun flux entrant ou sortant ne traverse le reseau interne. Meme en cas de compromission d'un conteneur Azure, il est impossible d'atteindre le reseau CLS (pas de VPN, pas de peering, pas de tunnel).
"C'est du shadow IT ?" Non. Tout est dans le tenant Azure CLS existant, visible dans le portail Azure, facturable sur la souscription CLS. Le code est sur des repos prives GitHub CLS. Les deploiements sont traces dans GitHub Actions.
"Qui maintient si Christophe part ?" Les apps sont en HTML/CSS/JS standard (pas de framework proprietaire). Les workflows n8n ont une interface visuelle (drag and drop). Tout est versionne sur GitHub avec documentation (INFRA.md par repo). C'est plus facile a reprendre qu'un Power Automate complexe ou un script Python non documente.
"Pourquoi pas PowerApps ?" PowerApps est adapte pour les cas simples lies a Dataverse/SharePoint. Pour des webapps avec authentification role-based, OCR + IA, PostgreSQL, webhooks, notifications email Graph API, et deploiement CI/CD... les couts PowerPlatform explosent (licences premium par utilisateur) et la flexibilite est limitee. Azure SWA fait la meme chose, gratuitement, avec du code standard.
"C'est quoi n8n ? Ca introduit un risque ?" n8n est un outil open source d'orchestration de workflows utilise par 50 000+ entreprises. Il tourne dans un conteneur isole sur Azure Container Apps (meme niveau d'isolation qu'Azure Functions). Les credentials sont chiffres AES-256. L'acces admin est protege par mot de passe. Surface d'attaque identique a un App Service Azure.
"Et la conformite ISO 27001 ?" Azure Container Apps, Static Web Apps, Cosmos DB et PostgreSQL Flexible sont tous certifies ISO 27001, SOC 2 et GDPR. Les donnees sont en region France Central. Aucune donnee classifiee defense n'est traitee sur cette plateforme.
"Faut-il modifier le firewall ou le reseau ?" Non. Zero modification. Les utilisateurs CLS accedent aux apps comme ils accedent a Office 365 : via leur navigateur, en HTTPS, avec leur compte Microsoft. Aucune ouverture de port, aucune regle firewall, aucun changement DNS obligatoire (les CNAME sont optionnels et cosmetiques).

10. Prochaines etapes

ActionResponsableStatut
Validation de l'architecture par la securite SIRSSI / DSIEn attente
Ajout des URIs de redirection SSO pour les 3 apps restantes (Flotte, VMS, Transcript)Admin Azure ADEn attente
CNAME DNS optionnels (hub.groupcls.com, pausecafe.groupcls.com, etc.)Admin reseauOptionnel
Mise en production PauseCafe (communication flash aux utilisateurs)Christophe KersuzanPret
Ajout de Typebot + NocoDB (phase 2)Christophe KersuzanPrevu M+1

6 applications metier en production. 22 EUR/mois. Zero flux LAN.

Azure Static Web Apps + Azure Functions + Cosmos DB + Graph API + n8n
Authentification Microsoft SSO native. Deploiement CI/CD automatique. Code sur GitHub CLS.

CLS — Collecte Localisation Satellites — Document interne — Avril 2026