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.
Cette architecture n'est pas un concept. Elle est operationnelle depuis janvier 2026 avec 6 applications en production :
| Application | Usage metier | Utilisateurs | Auth | Statut |
|---|---|---|---|---|
| Hub CLS | Portail central : acces a toutes les apps et a la documentation | Equipe Digital | SSO Microsoft | EN PROD |
| PauseCafe | Gestion des demandes pause-cafe (4 roles : admin, hotesse, EADM, demandeur) | Hotesses, EADM, directions | SSO Microsoft | EN PROD |
| Checklist Salles | Controle quotidien des salles de reunion, alertes M42 automatiques | Services generaux | SSO Microsoft | EN PROD |
| Flotte Mobile | Dashboard 900+ lignes mobiles, ETL consolidation ADP/Intune | EADM, DSI | SSO Microsoft | EN PROD |
| VMS Dashboard | Suivi operationnel 3700+ commandes VMS Indonesie | Equipe VMS JB | SSO Microsoft | EN PROD |
| Transcript CR | Transcription audio + generation de comptes-rendus par IA | Equipe Digital | SSO Microsoft | EN PROD |
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.
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.
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).
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.
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.
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.
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.
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.
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.
| ID | Source | Destination | Port | Protocole | Description | Authentification | Impact LAN CLS |
|---|---|---|---|---|---|---|---|
| IN-01 | Navigateurs CLS | Azure Static Web Apps | 443 | HTTPS | Acces aux 6 webapps metier (Hub, PauseCafe, Checklist, Flotte, VMS, Transcript) | Azure AD SSO + MFA | AUCUN |
| IN-02 | Azure Static Web Apps | Azure Functions (managed) | 443 | HTTPS | Appels API depuis les webapps (CRUD donnees, actions metier) | Header x-ms-client-principal (SSO) | AUCUN |
| IN-03 | Zoho Creator (SaaS) | n8n (Azure Container Apps) | 443 | HTTPS | Webhooks formulaires VMS Indonesie | Secret partage | AUCUN |
| IN-04 | Azure Static Web Apps | n8n (Azure Container Apps) | 443 | HTTPS | Webhooks notifications (Checklist alertes M42, Transcript envoi CR) | API Key | AUCUN |
| IN-05 | Navigateurs (admin) | n8n (Azure Container Apps) | 443 | HTTPS | Interface admin n8n (edition workflows) | Compte n8n + Azure AD | AUCUN |
| ID | Source | Destination | Port | Protocole | Description | Authentification | Impact LAN CLS |
|---|---|---|---|---|---|---|---|
| OUT-01 | Azure Functions | Microsoft Graph API | 443 | HTTPS | Envoi emails depuis clsworkflow@groupcls.com (notifications PauseCafe, alertes M42, CR) | OAuth2 (client credentials) | AUCUN |
| OUT-02 | n8n (Azure) | Azure AI Foundry | 443 | HTTPS | Appels LLM : GPT-4.1-mini (transcription, classification), Grok (raisonnement) | API Key Azure | AUCUN |
| OUT-03 | Azure Functions | Cosmos DB (Azure) | 443 | HTTPS | Donnees applicatives PauseCafe, Checklist Salles | Connection string (meme tenant) | AUCUN |
| OUT-04 | n8n (Azure) | PostgreSQL (Azure) | 5432 | TLS | Donnees n8n, VMS Indonesie, Flotte Mobile | Login/password (private link) | AUCUN |
| OUT-05 | n8n (Azure) | desk.zoho.eu | 443 | HTTPS | API Zoho Desk (synchro tickets support) | OAuth2 | AUCUN |
| OUT-06 | n8n (Azure) | Flux RSS publics | 443 | HTTPS | Veille automatisee (6 flux : Cyber, Maritime, IA, Mobile, AO, VIGISAT) | Aucune (RSS publics) | AUCUN |
| ID | Source | Destination | Description | Securite |
|---|---|---|---|---|
| INT-01 | Static Web Apps | Azure AD | Authentification SSO des utilisateurs (redirection login Microsoft) | OAuth2 / OpenID Connect |
| INT-02 | Azure Functions | Cosmos DB | Lecture/ecriture donnees applicatives | Connection string + TLS |
| INT-03 | Container Apps (n8n) | PostgreSQL Flexible | Base de donnees n8n, VMS, Flotte Mobile | SSL obligatoire |
| INT-04 | Container Apps (n8n) | AI Foundry | Inference LLM (GPT, Grok) | API Key Azure |
Quand une equipe metier exprime un besoin, le pattern de livraison est toujours le meme :
| Etape | Detail | Duree |
|---|---|---|
| 1. Frontend | Page HTML/CSS/JavaScript. Pas de framework lourd. Compatible mobile nativement. | 1-3 jours |
| 2. API | Azure Function (Node.js) pour le CRUD et la logique metier. Protegee par le header SSO. | 0.5-1 jour |
| 3. Base de donnees | Cosmos DB (free tier, ideal pour documents JSON) ou PostgreSQL (donnees relationnelles). | 0.5 jour |
| 4. Emails | Microsoft Graph API (CLSWorkflow@groupcls.com). Notifications automatiques. | Reutilisable |
| 5. Deploiement | GitHub Actions : un git push declenche le deploiement automatique. | 30 secondes |
| 6. Auth | SSO Microsoft integre dans Azure SWA. Une ligne dans staticwebapp.config.json. | Inclus |
L'avantage majeur de cette architecture : elle elimine les problemes de securite au lieu de les gerer.
| Exigence securite | Comment 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. |
| Composant | Service Azure | Detail | Cout/mois |
|---|---|---|---|
| 6 webapps metier | Azure Static Web Apps (Free tier) | Hub, PauseCafe, Checklist, Flotte, VMS, Transcript | 0 EUR |
| APIs serverless | Azure Functions (managed dans SWA) | Incluses dans le tier gratuit SWA | 0 EUR |
| Base documents (PauseCafe, Checklist) | Cosmos DB (Free tier) | 400 RU/s + 25 Go inclus | 0 EUR |
| Base relationnelle (n8n, VMS, Flotte) | PostgreSQL Flexible (B1ms) | 1 vCPU, 2 Go RAM, 32 Go — partagee | ~13 EUR |
| Orchestration workflows | Container Apps (Consumption) | n8n — facture a l'usage | ~9 EUR |
| IA (LLM) | Azure AI Foundry | GPT-4.1-mini, Grok — pay-per-use | < 1 EUR |
| Emails | Microsoft Graph API | CLSWorkflow@ — inclus dans la licence M365 | 0 EUR |
| CI/CD | GitHub Actions | 2 000 min/mois incluses (tier gratuit) | 0 EUR |
| Total mensuel | ~22 EUR/mois | ||
| Total annuel | ~264 EUR/an | ||
| Approche | Cout annuel (5 users) | Limitations |
|---|---|---|
| Azure SWA + n8n (actuel) | ~264 EUR | Aucune limite d'utilisateurs, de connecteurs ou d'executions |
| Power Automate Premium | ~900 EUR | Connecteurs HTTP/custom premium, throttling, licences par utilisateur |
| PowerApps Premium | ~1 200 EUR | Requis si Dataverse ou connecteurs custom, ergonomie limitee sur mobile |
| Power Automate + PowerApps | ~2 100 EUR | Stack complete Microsoft, licences par utilisateur cumulees |
| Azure Logic Apps (Standard) | ~500-1 500 EUR | Facture a l'action, cout imprevisible a volume |
| Question | Reponse |
|---|---|
| "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). |
| Action | Responsable | Statut |
|---|---|---|
| Validation de l'architecture par la securite SI | RSSI / DSI | En attente |
| Ajout des URIs de redirection SSO pour les 3 apps restantes (Flotte, VMS, Transcript) | Admin Azure AD | En attente |
| CNAME DNS optionnels (hub.groupcls.com, pausecafe.groupcls.com, etc.) | Admin reseau | Optionnel |
| Mise en production PauseCafe (communication flash aux utilisateurs) | Christophe Kersuzan | Pret |
| Ajout de Typebot + NocoDB (phase 2) | Christophe Kersuzan | Prevu 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.