CyberArk Glossary >

Qu'est-ce que le DevOps ?

DevOps est un terme utilisé pour décrire un ensemble de philosophies culturelles, de pratiques et d’outils qui unifie le développement logiciel (Dev) et les opérations informatiques (Ops), ce qui augmente la capacité des organisations à distribuer des applications et des services très rapidement.

Avec les méthodes DevOps, on délivre régulièrement de nouvelles fonctionnalités aux applications. L’infrastructure élastique du cloud s’adapte aux pics de demande grâce à des processus de montée en charge automatiques qui mobilisent de nouvelles ressources informatiques (machines virtuelles ou conteneurs) et déploient davantage d’instances d’une application donnée selon les besoins. Les organisations paient uniquement pour la puissance de calcul dont elles ont besoin.

De nombreuses entreprises du monde entier adoptent les méthodologies agiles et DevOps pour éliminer les silos fonctionnels et administratifs et automatiser la gestion des changements, la gestion des configurations et les processus de déploiement. Fondamentalement, le DevOps aide les organisations à réduire leurs délais de commercialisation, à améliorer la qualité de leurs produits, à éliminer les inefficacités, à accélérer la transformation numérique et à réagir plus vite aux besoins des clients.

Qu’est-ce que l’approche CI/CD ?

En fusionnant le développement et les opérations et en stimulant la collaboration entre ces fonctions, le DevOps réduit les cycles de développement pour mieux les aligner avec les objectifs commerciaux. En s’appuyant sur l’intégration continue (CI), les développeurs fusionnent les changements de code au sein d’un référentiel plusieurs fois par jour, et les changements sont automatiquement intégrés aux versions. La distribution continue (CD) requiert que le code se trouve toujours dans un état « déployable » qui permette de le déployer dans un environnement de production à tout moment, d’un simple clic.

Défis relatifs à la sécurité du DevOps

Malgré ses nombreux avantages, le DevOps présente de nouveaux risques et des changements culturels qui posent des problèmes de sécurité impossibles à résoudre en s’appuyant sur des solutions de gestion de la sécurité et des pratiques traditionnelles. Ces approches traditionnelles sont souvent trop lentes, trop coûteuses ou trop complexes pour soutenir l’automatisation de la distribution et du déploiement logiciel dans le cloud ou sous forme de conteneur. Parmi ces défis, on peut relever :

Les identifiants à privilèges utilisés en DevOps sont ciblés par les attaquants. L’un des plus grands défis de sécurité dans les environnements DevOps est la gestion des accès à privilèges. Les processus DevOps requièrent l’utilisation d’identifiants à privilèges humains et non-humains qui sont très puissants, et donc plus susceptibles d’être ciblés par des cyberattaques.

  • Accès humain : Avec des processus très rapides, les professionnels du DevOps requièrent un accès à privilèges dans les environnements de développement et de production.
  • Accès machine : Dans les processus automatisés, les machines et les outils requièrent des privilèges (ou permissions) élevés pour accéder aux ressources sans intervention humaine. Exemples :
    • Outils d’automatisation : Ansible, Puppet ou Chef
    • Outils CI/CD : Jenkins, Azure DevOps et Bamboo
    • Outils de gestion de conteneurs : Docker et Linux Containers (LXC)
    • Outils d’orchestration de conteneurs : Kubernetes, Red Hat OpenShift, Pivotal, Cloud Foundry

Les actifs de niveau zéro, tels que les actifs Ansible et Jenkins, ont accès à des identifiants utilisés par de nombreux autres outils.

Une fois que les attaquants accèdent à des identifiants à privilèges, ils peuvent accéder à tous les pipelines DevOps, à des bases de données sensibles, ou même à l’ensemble du cloud de l’organisation cible. Les attaquants le savent, et recherchent de plus en plus les identifiants à privilèges (mots de passe, clés d’accès, clés SSH ou tokens), ainsi que d’autres types de secrets comme les certificats, les clés de chiffrement ou les clés API. Les attaquants peuvent exploiter les identifiants non sécurisés dans les environnements DevOps, ce qui peut mener à des activités de type minage frauduleux de cryptomonnaies, fuites de données et destruction de propriété intellectuelle.

Les développeurs se concentrent sur la rapidité, et non sur la sécurité. Les équipes DevOps se concentrent sur la rapidité de production du code, et elles adoptent souvent des pratiques mal sécurisées qui échappent au champ d’action des équipes de sécurité. Parmi ces pratiques, il arrive de laisser des secrets et des identifiants dans les applications et les fichiers de configuration, de réutiliser du code tiers sans précautions suffisantes, d’adopter de nouveaux outils sans évaluer leurs problèmes de sécurité potentiels, ou encore de ne pas protéger suffisamment les outils et l’infrastructure DevOps.

La gestion des secrets centrée sur les outils crée des brèches de sécurité. Les outils DevOps disposent intègrent souvent des fonctionnalités destinées à protéger les secrets. Toutefois, ces fonctionnalités ne facilitent pas l’interopérabilité ou le partage sécurisé de secrets entre les outils, les clouds et les plateformes. Bien souvent, les équipes DevOps utilisent les fonctionnalités intégrées de leurs outils pour gérer les secrets. Cette approche peut rendre difficile la bonne protection des secrets, puisqu’il est impossible de les surveiller et de les gérer de façon homogène.

Étapes pour mettre en œuvre la sécurité du DevOps dans votre organisation

Vous trouverez ci-dessous les étapes qu’implémentent souvent les entreprises pour développer la sécurité du DevOps à grande échelle tout en gérant les risques liés aux accès à privilèges et en s’alignant sur la culture et les méthodes DevOps :

  • Instancier la politique de sécurité en tant que code. L’un des piliers du DevOps est le concept d’« infrastructure en tant que code » (parfois appelé infrastructure immuable), qui remplace le modèle traditionnel qui consiste à administrer et à configurer manuellement les serveurs et les logiciels. En appliquant ce concept à la sécurité (instancier et gérer la politique de sécurité en tant que code), les organisations éliminent les processus de configuration manuels intensifs et souvent sujets à l’erreur.
  • Établir la séparation des responsabilités. Dans une équipe DevOps, il est nécessaire de définir clairement des responsabilités et des rôles distincts :
    • Les développeurs doivent se concentrer sur la création d’applications pour développer les résultats commerciaux.
    • Les équipes opérationnelles doivent se concentrer sur le développement d’une infrastructure fiable et évolutive.
    • Les équipes de sécurité doivent se concentrer sur la protection des actifs et des données et sur la réduction des risques.

Les interactions entre chaque groupe peuvent être codifiées dans une politique de sécurité écrite. Par exemple, les développeurs peuvent créer une politique de sécurité qui déclare les privilèges requis par leur application ou leur service. L’équipe de sécurité passe en revue et approuve la politique de sécurité, puis les équipes opérationnelles s’assurent que le déploiement de l’application se déroule comme prévu.

  • Intégrer la sécurité dans les pratiques CI/CD. Dans le contexte DevOps, la sécurité est trop souvent considérée comme un aspect secondaire, dont on ne s’occupe que tardivement, dans le meilleur des cas. Les changements de dernière minute requis pour gérer les vulnérabilités (qui peuvent s’avérer conséquents) repoussent la sortie des produits. Les entreprises innovantes utilisent aujourd’hui des outils de planification et de gestion du workflow comme Kanban pour modéliser les flux, accélérer le développement et éliminer les inefficacités. En outre, les équipes de sécurité déconstruisent de plus en plus les applications en microservices afin de simplifier les contrôles de sécurité et les changements à apporter.
  • Adopter une approche proactive de la sécurité. Des pratiques de sécurité robustes doivent être mises en place tout au long du cycle de vie de l’application dans le but de réduire les vulnérabilités, d’améliorer la posture de sécurité et de réduire les risques. Les bonnes pratiques de sécurité de base pour le DevOps incluent les aspects suivants :
    • Traiter les exigences de sécurité et les vulnérabilités potentielles de façon holistique, car il suffit parfois aux attaquants d’une seule vulnérabilité pour poursuivre leur mission.
    • Réduire la concentration des privilèges dans les outils d’automatisation des versions et s’assurer que les référentiels de code n’exposent aucun secret.
    • Conserver les secrets utilisés par les machines et les personnes (mots de passe, certificats, clés API, tokens et clés SSH) dans un coffre-fort sécurisé et hautement disponible, en dehors du code source et en dehors des ordinateurs des développeurs et des systèmes de stockage accessibles par les utilisateurs. Renouveler régulièrement les secrets pour réduire l’exposition.
    • Appliquer le principe du moindre privilège pour garantir que les machines et les personnels peuvent uniquement accéder aux ressources dont ils ont absolument besoin.
    • Établir une base de référence des modèles d’utilisation normaux afin de détecter les anomalies de telle sorte que les utilisateurs mal intentionnés puissent être retrouvés et qu’ils ne puissent pas voler d’identifiants.
    • Introduire une notion de responsabilité en enregistrant la façon dont les identifiants sont utilisés. Par exemple, pour les utilisateurs humains, envisager d’enregistrer les frappes ou la vidéo pour la session.
    • Attribuer à chaque machine sa propre identité unique afin d’auditer et de superviser la façon dont elle accède aux différents secrets.
    • Exécuter des analyses de vulnérabilité et des tests de pénétration pour améliorer votre posture de cybersécurité.
    • Former les développeurs aux menaces de sécurité et aux meilleures pratiques.
    • Encourager la coopération et la collaboration étroite entre les équipes de sécurité et de développement.
  • Automatiser les processus de sécurité. Le DevOps utilise l’automatisation pour accélérer la gestion du cycle de vie des applications et éliminer la latence des opérations humaines. De même, la sécurité du DevOps doit s’appuyer sur l’automatisation pour réduire les interactions humaines et les interventions manuelles. Par exemple, en renouvelant automatiquement les secrets (mots de passe, clé, certificats), les organisations peuvent éviter que des attaquants n’accèdent aux outils DevOps, aux clés d’accès ou aux systèmes pendant longtemps. Il est également possible d’utiliser des procédures de sécurité automatisées en cas de détection d’une faille. Par exemple, les sessions à privilèges peuvent être automatiquement fermées et les identifiants automatiquement renouvelés dès lors qu’une faille de sécurité a été identifiée.

En savoir plus sur la sécurité du DevOps

AUTRES RUBRIQUES DU GLOSSAIRE