Modifier

DevSecOps pour l’infrastructure en tant que code (IaC)

Microsoft Sentinel
Azure Monitor
GitHub

Idées de solution

Cet article présente une idée de solution. Si vous souhaitez que nous développions le contenu avec d’autres informations, telles que des cas d’usage potentiels, d’autres services, des considérations d’implémentation ou un guide des prix, adressez-nous vos commentaires GitHub.

Cette idée de solution illustre le pipeline DevSecOps à l’aide de GitHub pour l’IaC, et montre comment régir le workflow pour l’excellence, 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

Diagramme illustrant l’architecture de DevSecOps pour IaC.

Téléchargez un fichier Visio de cette architecture.

Dataflow

  1. Avec le développement piloté par les tests, vous effectuez le check-in des modifications du code au niveau des définitions d’infrastructure, comme les modèles IaC, dans les dépôts GitHub. Vous développez simultanément des tests unitaires, des tests d’intégration et une stratégie PaC pour tester la qualité de l’IaC.
  2. Les demandes de tirage (pull request) déclenchent des tests unitaires automatisés via GitHub Actions.
  3. Vous configurez le processus de workflow GitHub Actions pour tester l’IaC avec les états et les plans d’infrastructure déployés localement.
  4. Vous configurez GitHub Actions pour rechercher les problèmes de qualité et de sécurité du code. Vous utilisez ensuite des outils d’analyse de la sécurité basés sur CodeQL de GitHub pour rechercher les vulnérabilités de sécurité sur l’IaC. Si une vulnérabilité est détectée, GitHub envoie des alertes à l’organisation, ou aux propriétaires ou gestionnaires du dépôt.
  5. L’outil IaC provisionne et modifie les ressources pour chaque environnement, en adaptant 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.
  6. Lorsqu’une mise à jour manuelle de l’infrastructure est nécessaire, l’accès de l’administrateur désigné est élevé pour qu’il puisse effectuer les modifications. Après modification, l’accès avec élévation de privilèges est supprimé, et un problème doit être journalisé dans GitHub pour le rapprochement de l’IaC. Les étapes et la possibilité de rapprochement dépendent des outils IaC utilisés.
  7. 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.
  8. Lorsqu’une anomalie est détectée, un problème doit être signalé automatiquement dans GitHub en vue de sa résolution.

Components

  • GitHub est une plateforme d’hébergement de code pour la gestion de version et la collaboration. Un référentiel de contrôle de code source GitHub contient tous les fichiers projet et leur historique de révision. Les développeurs peuvent travailler ensemble pour contribuer, discuter et gérer le code dans le référentiel.
  • GitHub Actions fournit une suite de workflows de build et de version, couvrant l’intégration continue (CI), les tests automatisés et les déploiements de conteneurs.
  • La sécurité avancée GitHub fournit des fonctionnalités permettant de sécuriser votre IaC. Elle nécessite une autre licence.
  • CodeQL fournit des outils d’analyse de la sécurité qui s’exécutent sur du code statique pour détecter les erreurs de configuration de l’infrastructure.
  • Terraform est un produit partenaire développé par HashiCorp, qui permet l’automatisation d’infrastructure dans Azure, ainsi que dans d’autres environnements.
  • Microsoft Defender pour le cloud fournit une gestion unifiée de la sécurité et une protection avancée contre les menaces dans les charges de travail cloud hybrides.
  • Microsoft Sentinel est une solution native cloud de type SIEM et SOAR. Elle utilise une IA et une analytique de sécurité avancées pour détecter et répondre aux menaces dans les entreprises.
  • Le service Azure Policy permet aux équipes de gérer et d’éviter les problèmes informatiques grâce à des définitions de stratégie qui peuvent appliquer des règles pour des ressources cloud. Par exemple, si votre projet a trait au déploiement d’une machine virtuelle dont la référence (SKU) n’est pas reconnue, le service Azure Policy vous signale le problème et arrête le déploiement.
  • La plateforme Azure Monitor collecte et analyse la télémétrie des applications, comme les métriques de performances et les journaux d’activité. Lorsque ce service identifie des conditions irrégulières, il avertit les applications et le personnel.

Détails du scénario

D’un point de vue conceptuel, DevSecOps pour l’infrastructure en tant que code (IaC) est similaire à DevSecOps pour le code d’application sur AKS. Toutefois, avec l’IaC, vous aurez besoin d’un autre ensemble de pipelines et d’outils pour gérer et automatiser l’intégration continue et la livraison continue (CI/CD).

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 les états de configuration de l’infrastructure locale comme les états Terraform, ainsi que les plans permettant d’effectuer un développement piloté par les tests (TDD) pour l’IaC. Ces états de configuration émulent les déploiements réels. Vous pouvez exécuter des tests d’intégration pour l’IaC sur des déploiements d’infrastructure réels à l’aide de l’API REST Azure Resource Graph.

La stratégie en tant que code (PaC) est également une méthode importante qui permet de 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.

Le fait de sécuriser l’infrastructure au début de la phase de développement réduit les risques liés à une mauvaise configuration susceptible de créer des points d’attaque après le déploiement. Vous pouvez intégrer des outils d’analyse de code statique pour une infrastructure comme Synk ou Aquasecurity tfsec à l’aide de CodeQL de GitHub pour analyser les problèmes de sécurité dans le code de l’infrastructure. Ce processus est similaire aux tests statiques de sécurité des applications (SAST).

Lorsque l’infrastructure est déployée et opérationnelle, les dérives de configuration cloud peuvent être difficiles à 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 d’une configuration manuelle, procédez à une élévation des privilèges d’accès pour l’administrateur désigné, puis supprimez l’accès avec élévation de privilèges une fois la modification apportée. Vous devez configurer Azure Monitor pour signaler un problème dans GitHub afin que les développeurs effectuent un rapprochement de leurs modifications. Toutefois, la configuration manuelle doit être évitée autant que possible.

Pour éviter les incidents de sécurité, il est important de monitorer en continu l’environnement cloud à la recherche de menaces et de vulnérabilités. Vous pouvez utiliser les outils SIEM de protection contre les menaces pour détecter le trafic anormal. Ces outils alertent automatiquement les administrateurs de sécurité et signalent un problème devant être résolu dans 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 l’IaC, afin de garantir la sécurité et la qualité des déploiements. Vous souhaitez également suivre et auditer toutes les modifications apportées à l’infrastructure.

Contributeurs

Cet article est géré par Microsoft. Il a été écrit à l’origine par les contributeurs suivants.

Auteurs principaux :

Étapes suivantes