Révision Azure Well-Architected
Ce workflow exécute une révision structurée du framework Azure Well-Architected (WAF) sur les fichiers IaC de votre charge de travail et l'infrastructure déployée. Il identifie les risques sur les 5 piliers du WAF et crée des problèmes GitHub pour suivre la correction.
Prérequis
- Azure CLI (
az) configurée et authentifiée - Fichiers IaC présents dans le référentiel (Bicep, Terraform ou modèles ARM)
- Serveur MCP GitHub configuré et authentifié
Étapes du workflow
Étape 1 : Charger la référence Well-Architected Framework
Récupérer les meilleures pratiques actuelles Azure WAF :
https://learn.microsoft.com/en-us/azure/well-architected/- Guides de service pour les services Azure utilisés (
https://learn.microsoft.com/en-us/azure/well-architected/service-guides/) - Conseils spécifiques à la charge de travail pertinents pour le type de charge de travail (SaaS, critique, IA, etc.)
Si le serveur MCP microsoft.docs.mcp est disponible, l'utiliser pour interroger les listes de contrôle de piliers les plus récentes et les recommandations spécifiques au service.
Étape 2 : Découvrir IaC et Architecture
Établir le périmètre de la révision, puis inventorier le code et l'environnement actif :
- Confirmer le périmètre Azure : Demander à l'utilisateur quels abonnement(s)/groupe(s) de ressources sont en périmètre, ou les déduire des paramètres IaC et confirmer.
- Analyser le référentiel pour les fichiers IaC :
- Bicep :
**/*.bicep,bicepconfig.json - Terraform :
**/*.tf(fournisseurs azurerm/azapi) - Modèles ARM :
**/azuredeploy*.json,**/*.template.json, fichiers avec$schemacontenantdeploymentTemplate
- Bicep :
- Inventorier les ressources actives (toujours, même quand IaC existe) :
az resource list --resource-group <rg> --output json(ou à l'échelle de l'abonnement), plus appels ciblésaz <service> showpour les détails de configuration que les vérifications de pilier nécessitent. - Comparer IaC avec l'inventaire actif : Signaler la dérive — ressources présentes dans Azure mais absentes de IaC (créées par portail), ressources définies dans IaC mais non déployées, et incompatibilités de configuration. Enregistrer les résultats de dérive pour l'étape 3 (ils correspondent généralement au pilier Excellence Opérationnelle).
Identifier les services Azure clés en usage (calcul, données, réseau, sécurité, observabilité) et générer un diagramme d'architecture Mermaid.
Étape 3 : Révision par Pilier
Pilier 1 : Fiabilité
- [ ] Zones de disponibilité activées pour les services zonaux (VMs, VMSS, pools de nœuds AKS, App Service, SQL, Storage ZRS)
- [ ] Les SKU de production supportent le SLA requis (pas de niveaux Basic/Free sur les chemins critiques)
- [ ] Sauvegarde Azure SQL / Cosmos DB et restauration jusqu'à un point dans le temps configurées avec rétention appropriée
- [ ] Géo-redondance configurée où RPO l'exige (stockage GRS/RA-GRS, groupes de basculement SQL, Cosmos DB multi-région)
- [ ] Règles d'autoscaling configurées pour plans App Service, VMSS, AKS (pas d'instance unique fixe pour la production)
- [ ] Sondes d'intégrité configurées sur backends Load Balancer / Application Gateway / Front Door
- [ ] Dead-lettering activé pour files d'attente/abonnements Service Bus et abonnements Event Grid
- [ ] Politiques de relance avec backoff exponentiel implémentées pour la gestion des défaillances transitoires
- [ ] Plan de récupération d'urgence défini (RTO/RPO documentés, basculement testé)
Pilier 2 : Sécurité
- [ ] Identités gérées utilisées au lieu de principaux de service avec secrets ou chaînes de connexion
- [ ] Aucune credential, clé ou chaîne de connexion codée en dur dans IaC ou code
- [ ] Secrets stockés dans Azure Key Vault avec autorisation RBAC (pas politiques d'accès)
- [ ] Comptes de stockage refusent l'accès aux blob publics et interdisent l'accès à clé partagée si possible
- [ ] Points de terminaison privés (ou au minimum points de terminaison de service + règles pare-feu) pour services de données PaaS
- [ ] NSGs limitent le trafic entrant aux ports/CIDR minimum requis (pas de règles
*→*autoriser) - [ ] TLS 1.2+ appliqué sur tous les points de terminaison (
minimumTlsVersion,httpsOnly) - [ ] Azure RBAC suit le principe du moindre privilège (pas Owner/Contributor à l'échelle de l'abonnement pour les identités de charge de travail)
- [ ] Microsoft Defender for Cloud activé sur les types de ressources pertinents (
az security pricing list) - [ ] Azure WAF (Application Gateway ou Front Door) configuré pour les points de terminaison web publics
- [ ] Paramètres de diagnostic envoient les journaux de sécurité à Log Analytics / Microsoft Sentinel
Pilier 3 : Optimisation des Coûts
- [ ] Réservations ou plans d'économies évalués pour le calcul en régime permanent (VMs, App Service, SQL)
- [ ] Politiques de gestion du cycle de vie de stockage déplacent les blob vers niveaux chaud/archive
- [ ] SKUs dimensionnés correctement selon l'utilisation réelle (pas de VMs/plans App Service surdimensionnés)
- [ ] Environnements dev/test utilisent arrêt automatique et tarification Dev/Test si éligibles
- [ ] Budgets Azure et alertes de coût configurés (
az consumption budget list) - [ ] Disques gérés détachés et IPs publiques orphelines identifiés et supprimés
- [ ] Niveaux Consommation/serverless utilisés pour charges de travail irrégulières ou faible volume (Functions, Container Apps, SQL serverless)
- [ ] Paramètres de rétention et cap-données Log Analytics réglés pour éviter surutilisation d'ingestion
Pilier 4 : Excellence Opérationnelle
- [ ] Toute l'infrastructure définie en IaC (pas de modifications manuelles par portail ; assignations de refus ou politique si possible)
- [ ] Stratégie de marquage cohérente appliquée sur toutes les ressources (propriétaire, environnement, centre de coûts)
- [ ] Alertes Azure Monitor définies pour les métriques clés et l'intégrité des services
- [ ] Pipeline de déploiement automatisé présent (GitHub Actions / Azure Pipelines, pas de déploiements manuels)
- [ ] Journal d'activité Azure et paramètres de diagnostic des ressources acheminés vers Log Analytics
- [ ] Application Insights (ou équivalent OpenTelemetry) instrumenté pour charges de travail d'application
- [ ] Assignations Azure Policy appliquent les normes organisationnelles (emplacements autorisés, SKUs, marquages)
- [ ] Runbooks ou documentation opérationnelle présents
Pilier 5 : Efficacité des Performances
- [ ] SKUs de calcul correctement dimensionnés validés par rapport aux exigences de charge
- [ ] Mise en cache implémentée si bénéfique (Azure Cache for Redis, cache CDN/Front Door)
- [ ] Azure Front Door ou CDN utilisé pour la livraison de contenu statique global
- [ ] Autoscale basé sur les métriques de charge plutôt que comptages d'instances fixes
- [ ] Niveau de performance de base de données approprié (DTU vs vCore, pools élastiques, Cosmos DB RU autoscale)
- [ ] Stockage Premium/zone-redondant utilisé pour charges de travail disque sensibles à la latence
- [ ] Regroupement de connexions et modèles asynchrones utilisés pour les clients de base de données et HTTP
Étape 4 : Classification des Risques
Pour chaque résultat, classifier :
- Risque Élevé : Vulnérabilité de sécurité, point unique de défaillance, aucune sauvegarde/récupération
- Risque Moyen : Fiabilité sous-optimale, inefficacité des coûts, problème de performance
- Risque Faible : Écart de meilleure pratique, opportunité d'optimisation mineure
Étape 5 : Confirmation Utilisateur
🏗️ Résumé de révision Azure Well-Architected
📊 Résultats de révision :
• Fichiers IaC analysés : X
• Services Azure identifiés : Y
• Résultats totaux : Z
• Risque élevé : A (action immédiate requise)
• Risque moyen : B (devraient être adressés bientôt)
• Risque faible : C (nice to have)
🔴 Résultats principaux à risque élevé :
1. [Pilier] : [Résultat] — [Pourquoi c'est important]
2. [Pilier] : [Résultat] — [Pourquoi c'est important]
💡 Cela créera Z problèmes GitHub individuels + 1 problème EPIC.
❓ Procéder à la création de problèmes GitHub ? (o/n)
Porte : Procéder aux étapes 6–7 seulement si l'utilisateur donne une réponse affirmative explicite (ex. "o", "oui"). Sur réponse négative, ambiguë ou manquante, NE PAS créer de problèmes GitHub — afficher tous les résultats en markdown formaté à la console et arrêter.
Étape 6 : Créer les Problèmes de Résultats Individuels
Labéliser avec "well-architected" et le nom du pilier (ex. "security", "reliability").
Titre : [WAF-<PILIER>] [Résultat Bref] — [Niveau de Risque]
Corps :
## 🏗️ Résultat Well-Architected : [Titre Bref]
**Pilier** : [Nom] | **Niveau de Risque** : [Élevé/Moyen/Faible] | **Effort** : [Faible/Moyen/Élevé]
### 📋 Description
[Explication claire du résultat et pourquoi c'est important]
### 🔧 Correction
**Correctif IaC** (préféré) :
```bicep
// Exemple Bicep
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: storageAccountName
location: location
sku: { name: 'Standard_ZRS' }
kind: 'StorageV2'
properties: {
minimumTlsVersion: 'TLS1_2'
allowBlobPublicAccess: false
supportsHttpsTrafficOnly: true
}
}
```
**Secours Azure CLI** :
```bash
az storage account update --name <name> --resource-group <rg> \
--min-tls-version TLS1_2 --allow-blob-public-access false --https-only true
```
### 📚 Référence Azure
- [Lien Meilleure Pratique WAF]
- [Lien Documentation Microsoft Learn]
### ✅ Validation
- [ ] Modification implémentée en IaC et déployée
- [ ] Conformité Azure Policy passe (si applicable)
- [ ] Recommandation Microsoft Defender for Cloud résolue (si applicable)
**Recommandation Well-Architected** : [Élément de liste de contrôle WAF auquel cela correspond]
Étape 7 : Créer le Problème de Suivi EPIC
Labéliser avec "well-architected" et "epic".
Titre : [EPIC] Révision Azure Well-Architected — X résultats sur 5 piliers
Corps : Résumé exécutif avec tableau de ventilation par pilier (comptages de résultats par pilier et niveau de risque), diagramme d'architecture Mermaid, liste de contrôle priorisée liant tous les problèmes individuels (Élevé → Moyen → Faible), et critères de succès :
- Tous les résultats à risque élevé résolus
- Les résultats moyen ont des plans d'atténuation acceptés
- Pas de régression dans les alertes Azure Monitor existantes ou conformité Azure Policy
Gestion des Erreurs
- Aucun fichier IaC trouvé : Limiter la révision à la découverte de ressources actives via Azure CLI (
az resource list) et noter le gap - Permissions Azure insuffisantes : Lister les rôles en lecture seule requis pour la révision (Reader, Security Reader)
- Échec création GitHub : Afficher tous les résultats en markdown formaté à la console
Critères de Succès
- ✅ Les 5 piliers WAF révisés par rapport à IaC et infrastructure actifs
- ✅ Tous les résultats classifiés par niveau de risque et pilier
- ✅ Étapes de correction exploitables avec exemples IaC pour chaque résultat
- ✅ Problèmes GitHub créés pour suivi d'équipe
- ✅ Diagramme d'architecture généré pour contexte EPIC
- ✅ Références documentation Microsoft Learn incluses