Partager via


Sécuriser l’environnement de plateforme DevOps pour Confiance Zéro

Cet article vous aide, en tant que membre de l’équipe DevOps, à implémenter le principe de Confiance Zéro de privilège minimum et à sécuriser l’environnement de plateforme DevOps. Il propose du contenu de notre livre électronique Sécuriser les environnements DevOps d’entreprise et met en évidence les meilleures pratiques pour la gestion des secrets et des certificats.

Les entreprises modernes s'appuient sur les plateformes DevOps pour le déploiement, y compris les pipelines et les environnements de production dont les développeurs ont besoin pour être productifs. Dans le passé, les méthodes de sécurité des applications ne tenaient pas compte de la surface d'attaque accrue à laquelle les pipelines et les environnements de production actuels exposent. Lorsque les pirates se déplacent vers la gauche et ciblent amont outils, vous avez besoin d’approches innovantes pour sécuriser vos environnements de plateforme DevOps.

Dans le diagramme suivant, notez que l’environnement de plateforme DevOps se connecte à l’environnement d’application et aux extensions de pipeline d’intégration continue et de livraison continue (CI/CD).

Le diagramme illustre les environnements de la plateforme DevOps et les menaces de sécurité tels que décrits dans le eBook cité ci-dessus et résumées dans les articles connexes cités dans le présent article.

Les extensions de pipeline CI/CD offrent aux pirates des opportunités d’escalader les privilèges à partir de l’environnement d’application. Les extensions et les intégrations augmentent les vulnérabilités de la surface d’attaque. Il est essentiel de se défendre contre les menaces d’intrusion contre les programmes malveillants.

Comment et pourquoi les attaquants ciblent des pipelines

Les pipelines et les environnements de production peuvent être indépendants des pratiques et processus standard de sécurité des applications. Ils nécessitent généralement des informations d’identification d’accès de haut niveau qui peuvent fournir un accès profond et explicite aux attaquants.

Bien que les attaquants trouvent de nouvelles façons de compromettre les systèmes, les vecteurs d’attaque les plus courants pour les pipelines sont les suivants :

  • Extraction de variables d’exécution et d’injection d’arguments.
  • Scripts qui récupèrent des principes de service ou des informations d’identification à partir de pipelines.
  • Jetons d’accès personnels mal configurés qui permettent à toute personne disposant de la clé d’accéder à l’environnement de plateforme DevOps.
  • Vulnérabilités et configurations incorrectes dans les outils intégrés qui nécessitent l’accès au code (souvent en lecture seule, mais parfois en écriture). Les outils intégrés peuvent inclure des frameworks de test, des tests de sécurité des applications statiques (SAST) et des tests de sécurité des applications dynamiques (DAST).

Meilleures pratiques pour la gestion des secrets et des certificats

Éviter une violation catastrophique peut être aussi simple que la gestion efficace des secrets. Le diagramme suivant illustre un exemple de secret, de mot de passe, de jeton d’accès et de gestion des certificats effectifs.

Le diagramme illustre la gestion des secrets et des certificats.

Comme illustré dans le diagramme ci-dessus, le développeur démarre une build pour une demande client. GitHub démarre ensuite un exécuteur avec l’ID de rôle et l’ID de secret d’un rôle d’application vault. L’entité approuvée demande régulièrement un nouvel ID de secret à partir du coffre et obtient l’ID de secret secret GitHub à partir de GitHub. Le coffre utilise l’ID de rôle de secrets GitHub et l’ID de secret pour se connecter et obtenir des ressources de signature de code. L’exécuteur personnalise et signe le code de l’application mobile.

Les meilleures pratiques suivantes vous aident à créer une configuration sécurisée qui réduit l’exposition des secrets et des paramètres.

  • Fournissez un stockage sécurisé pour les secrets et les certificats à chaque étape du cycle de vie de l’application. Développez toujours comme s’il s’agit d’un projet open source. Assurez-vous que les équipes stockent des secrets dans des coffres de clés plutôt que dans le code ou dans les environnements d’équipe. Utilisez le service cloud Azure Key Vault pour stocker et accéder aux secrets en toute sécurité.
  • Configurez Azure pour approuver l’OIDC de GitHub en tant qu’identité fédérée. OpenID Connect (OIDC) permet à vos flux de travail GitHub Action d’accéder aux ressources dans Azure sans avoir à stocker les informations d’identification Azure en tant que secrets GitHub à longue durée de vie.

Meilleures pratiques pour la sécurité de l’environnement DevOps

Pour vous défendre contre les incidents de sécurité, passez en revue les meilleures pratiques suivantes pour fortifier vos environnements de plateforme DevOps. Trouvez une discussion détaillée de ces recommandations dans notre livre électronique De sécurisation des environnements DevOps d’entreprise.

  • Équipez chaque environnement de plateforme DevOps avec des pistes d’audit.Passez en revue les journaux d’audit pour suivre qui a obtenu l’accès, quelle modification s’est produite et la date/heure de tout système actif. Incluez spécifiquement les plateformes DevOps avec des pipelines CI/CD qui passent en production. Les pistes d’audit pour les outils DevOps offrent des moyens robustes de corriger les menaces plus rapidement, de trouver et d’alerter sur des activités suspectes en cas d’éventuelles violations ou vulnérabilités, et de repérer de mauvaises utilisations de données ou de privilèges. Assurez-vous que les pistes de contrôle et d’audit granulaires sont disponibles dans chaque environnement.
  • Sécurisez la chaîne logistique logicielle. Avec chaque bibliothèque que vous apportez dans votre base de code, vous développez la chaîne d’approvisionnement logicielle et héritez des dépendances de chaque projet ou outil open source. Avec précaution, supprimez les bibliothèques inutiles et les composants open source pour réduire la surface d’attaque de votre chaîne d’approvisionnement logicielle.
  • Automatiser les analyses de modèle IaC (Infrastructure-as-Code). Avec les environnements IaC, il est facile d’analyser les erreurs de configuration, les audits de conformité et les problèmes de stratégies. L’implémentation des case activée de conformité et des contrôles d’accès déclenche la posture de sécurité de l’ensemble de votre infrastructure. Vérifiez la sécurité des intégrations d’outils qui répondent aux exigences système d’automatisation.
  • Automatiser les flux de travail d’approbation. Pour tout flux de travail d’approbation pour envoyer du code en production, certaines case activée automatiques ou manuelles doivent confirmer la sécurité, la valeur métier, l’état et la qualité de chaque requête. Ces case activée fonctionnent comme une porte entre le développement et la production pour empêcher les attaques par déni de service et les pirates injectant du code dans des environnements de production sans marquer ou déclencher une alerte.
  • Autorisez uniquement les intégrations d’outils DevOps vérifiées. Comme dans les environnements de développement, les outils DevOps sont fournis avec des extensions et des intégrations pour rendre l’équipe DevOps efficace et sécurisée. Vérifiez que les intégrations vérifiées nécessitent le moins de privilèges possibles pour exécuter leur travail. Implémentez l’accès au privilège minimum lorsque cela est possible et assurez le niveau approprié d’autorisations en lecture/écriture. Découvrez comment désactiver ou limiter les actions GitHub pour votre organisation.

Étapes suivantes