Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Idées de solution
Cet article présente une idée de solution. Votre architecte cloud peut s’appuyer sur ces conseils pour visualiser les principaux composants d’une implémentation typique de cette architecture. Utilisez cet article comme point de départ pour concevoir une solution bien conçue qui répond aux exigences spécifiques de votre charge de travail.
Cette idée de solution illustre le pipeline DevSecOps qui utilise GitHub pour l’infrastructure en tant que code (IaC). Il décrit également comment régir le flux de travail pour l’excellence opérationnelle, la sécurité et l’optimisation des coûts.
Terraform est une marque de Hashicorp. L’utilisation de cette marque n’implique aucune approbation de sa part.
Architecture
Téléchargez un fichier Visio de cette architecture.
Flux de données
Le flux de données suivant correspond au diagramme précédent :
Les développeurs utilisent le développement piloté par les tests pour vérifier les modifications de code pour les définitions d’infrastructure, telles que les modèles IaC, dans les référentiels GitHub. Ils développent des tests unitaires, des tests d’intégration et une stratégie en tant que code (PaC) simultanément pour tester la qualité de l’IaC.
Les demandes de tirage déclenchent des tests unitaires automatisés via GitHub Actions.
Configurez le processus de flux de travail GitHub Actions pour tester l’iaC à l’aide des états et plans d’infrastructure générés localement.
Configurez GitHub Actions pour rechercher des problèmes de qualité et de sécurité du code. Analysez à l’aide de vos propres requêtes GitHub CodeQL personnalisées ou d’autres outils de sécurité pour analyser les modèles IaC et détecter les vulnérabilités de sécurité potentielles. Si une vulnérabilité est détectée, GitHub envoie des alertes à l’organisation, ou aux propriétaires ou gestionnaires du dépôt.
L’outil IaC provisionne et modifie les ressources pour chaque environnement en personnalisant la taille, le nombre d’instances et d’autres propriétés. Vous pouvez exécuter des tests d’intégration automatisés pour l’IaC sur des ressources provisionnées.
Lorsqu’une mise à jour manuelle de l’infrastructure est nécessaire, l’administrateur désigné élève son accès pour effectuer les modifications. Après modification, l’accès avec élévation de privilèges est supprimé. Vous devez également consigner un problème GitHub pour la rapprochement de l’IaC. Les étapes et approches de rapprochement dépendent des outils IaC spécifiques.
SecOps monitore et défend continuellement le système contre les menaces et les vulnérabilités de sécurité. Azure Policy applique la gouvernance cloud.
Lorsque le système détecte une anomalie, il journalise automatiquement un problème GitHub pour la résolution.
Composants
GitHub est une plateforme d’hébergement de code pour la gestion de version et la collaboration. Dans cette architecture, il stocke les modèles IaC et sert de référentiel central pour le développement, les tests et les workflows de gouvernance.
GitHub Actions est un outil d’automatisation d’intégration continue et de déploiement continu (CI/CD) qui permet aux flux de travail de générer, tester et déployer du code directement à partir de dépôts GitHub. Dans cette architecture, GitHub Actions automatise les tests unitaires, l’analyse de la sécurité et l’approvisionnement d’infrastructure pour les pipelines IaC.
GitHub Advanced Security est une suite de fonctionnalités de sécurité qui incluent l’analyse statique et la détection des vulnérabilités pour le code stocké dans GitHub. Dans cette architecture, elle améliore la sécurité IaC en analysant les modèles et en mettant en garde contre les erreurs de configuration ou les risques.
CodeQL est un moteur d’analyse de code sémantique qui permet aux requêtes personnalisées de détecter les vulnérabilités et les configurations incorrectes dans le code. Dans cette architecture, CodeQL analyse les artefacts de référentiel pour identifier les problèmes de sécurité potentiels avant le déploiement.
Note
CodeQL ne prend pas en charge l’analyse native de tous les fichiers IaC, tels que Terraform. Toutefois, vous pouvez utiliser le projet de la communauté extracteur IaC CodeQL ou des alternatives fournies par les fournisseurs comme Trivy d'Aqua Security.
Terraform est un outil d’automatisation de l’infrastructure open source développé par HashiCorp qui permet l’approvisionnement déclaratif dans les environnements cloud. Dans cette architecture, Terraform provisionne et modifie les ressources Azure en fonction des définitions IaC et prend en charge les flux de travail de développement pilotés par les tests.
Microsoft Defender pour cloud est une plateforme de gestion de la sécurité qui fournit une protection contre les menaces sur les charges de travail cloud hybrides. Dans cette architecture, elle surveille en permanence l’infrastructure déployée pour les vulnérabilités.
Microsoft Sentinel est une solution SIEM (Security Information and Event Management) native cloud et d’orchestration de la sécurité (SOAR) qui utilise l’IA et l’analytique pour détecter et répondre aux menaces. Dans cette architecture, Microsoft Sentinel surveille l’activité de l’infrastructure et déclenche des alertes ou des problèmes GitHub quand des anomalies sont détectées.
Azure Policy est un service de gouvernance qui applique les règles et la conformité entre les ressources Azure. Dans cette architecture, Azure Policy valide les déploiements IaC par rapport aux normes organisationnelles et aux normes de charge de travail et bloque les configurations non conformes. Par exemple, si votre projet est sur le point de déployer une machine virtuelle qui a une référence SKU non reconnue, Azure Policy vous avertit et arrête le déploiement.
Azure Monitor est une plateforme de télémétrie et d’observabilité qui collecte les métriques de performances et les journaux d’activité à partir de ressources Azure. Dans cette architecture, Azure Monitor détecte des conditions irrégulières dans l’infrastructure et déclenche des alertes afin que le triage et la correction puissent démarrer.
Détails du scénario
DevSecOps pour IaC est conceptuellement similaire à DevSecOps pour le code d’application sur Azure Kubernetes Service (AKS). Toutefois, vous avez besoin d’un ensemble différent de pipelines et d’outils pour gérer et automatiser l’intégration continue et la livraison continue pour IaC.
Lorsque vous adoptez l’IaC, il est important de créer des tests d’automatisation à mesure que vous développez le code. Ces tests réduisent la complexité des tests IaC lorsque votre charge de travail est mise à l’échelle. Vous pouvez utiliser des états de configuration d’infrastructure locaux comme les états Terraform et les plans pour le développement piloté par les tests. Ces états de configuration émulent les déploiements réels. Vous pouvez exécuter des tests d’intégration pour IaC sur les déploiements d’infrastructure réels à l’aide de l’API REST Azure Resource Graph.
PaC est une autre méthode importante pour fournir une infrastructure conforme aux réglementations et à la gouvernance d’entreprise. Vous pouvez ajouter des workflows PaC dans vos pipelines pour automatiser la gouvernance cloud.
La sécurisation de l’infrastructure au début de la phase de développement réduit les risques liés à une infrastructure mal configurée qui expose les points d’attaque après le déploiement. Vous pouvez intégrer des outils d’analyse de code statiques tels que Snyk ou Aqua Security Trivy à GitHub Advanced Security pour rechercher les vulnérabilités de sécurité dans le code d’infrastructure. Ce processus est similaire au test de sécurité des applications statiques.
Lorsque l’infrastructure est déployée et opérationnelle, la dérive de configuration cloud peut être difficile à résoudre, en particulier dans les environnements de production.
Configurez des principaux de service dédiés pour déployer ou modifier l’infrastructure cloud des environnements de production. Supprimez ensuite tous les autres accès qui autorisent la configuration manuelle de l’environnement. Si vous avez besoin de configurations manuelles, élever l’accès pour l’administrateur désigné, puis supprimer l’accès élevé une fois la modification effectuée. Vous devez configurer Azure Monitor pour déclencher un problème GitHub afin que les développeurs puissent rapprocher les modifications. Évitez la configuration manuelle si possible.
Il est important de surveiller en permanence l’environnement cloud pour identifier les menaces et les vulnérabilités afin d’empêcher les incidents de sécurité. Vous pouvez utiliser la protection contre les menaces et les outils SIEM pour détecter le trafic anormal. Ces outils alertent automatiquement les administrateurs de sécurité et déclenchent un problème GitHub.
Cas d’usage potentiels
Vous faites partie d’une équipe centrale de développeurs IaC qui utilise une stratégie multicloud pour la société fictive Contoso. Vous souhaitez déployer une infrastructure cloud dans une nouvelle zone d’atterrissage Azure à l’aide de DevSecOps pour IaC pour garantir la sécurité et la qualité des déploiements. Vous souhaitez également suivre et auditer toutes les modifications apportées à l’infrastructure.
Contributeurs
Microsoft gère cet article. Les contributeurs suivants ont écrit cet article.
Auteurs principaux :
- Vito Chin | Architecte de solution cloud senior
- Yee Shian Lee | Architecte de solution cloud senior
Pour afficher les profils LinkedIn non publics, connectez-vous à LinkedIn.
Étapes suivantes
- Pensez aux outils IaC que vous souhaitez utiliser pour DevSecOps et vérifiez qu’ils sont fournis avec des extensions permettant d’effectuer l’analyse de la sécurité IaC.
- Pensez aux langages ou aux modèles IaC préférés, Bicep ou Terraform sur Azure.
- Guide GitHub pour les organisations
- Utiliser GitHub Actions pour se connecter à Azure
- Actions GitHub
- Qu’est-ce que nous entendons par la conformité confiance zéro ?
- AzOps pour les modèles Azure Resource Manager
- Module et solutions des zones d’atterrissage Terraform
- Présentation de l’iaC à l’aide de Bicep