Partager via


Application de l’approche Continuous Security Development Lifecycle (SDL continue)

L’innovation est la force vitale d’une organisation à l’ère numérique et doit être à la fois encouragée et protégée. La sécurité de l’innovation protège les processus et les données de l’innovation contre les cyberattaques. L’innovation à l’ère numérique prend la forme de développement d’applications à l’aide de la méthode DevOps ou DevSecOps. Cette approche permet aux organisations d’innover rapidement sans attendre les planifications traditionnelles des navires en cascade qui peuvent prendre des mois ou des années entre les versions.

Cœur DevSecOps

De nouvelles capacités et applications nécessitent de réussir à répondre à trois différents types d’exigences :

  • Fonctionnel (Dév) : Votre application doit répondre aux besoins de l’entreprise et des utilisateurs, qui évoluent souvent rapidement.
  • Sécurité (Sec) : Votre application doit être résiliente aux attaques d’attaquants qui évoluent rapidement et tirer parti des innovations en matière de défenses de sécurité.
  • Fiables (Ops) : Votre application doit être fiable et fonctionner efficacement.

La fusion de ces trois exigences et la création d’une culture commune sont très importantes, mais souvent difficiles. Les responsables des équipes chargées du développement, de l’informatique et de la sécurité doivent collaborer pour conduire ce changement.

Regardez la vidéo suivante pour en savoir plus sur la méthode DevSecOps pour une innovation sécurisée et rapide.

Intégrer la sécurité tout au long du cycle de vie du développement

Il est essentiel d’intégrer la sécurité tout au long du cycle de vie du développement afin d’identifier et de corriger rapidement la conception, le code et d’autres problèmes pendant que les personnes travaillent sur cette partie du processus. Cette approche évite les correctifs plus coûteux et difficiles qui se présenteraient ultérieurement, ce qui peut entraîner une grande quantité de travaux de reprise.

Diagramme du cycle de vie du développement logiciel avec architecture et superposition de gouvernance Confiance Zéro.

Les risques de sécurité (et la nécessité de les atténuer) peuvent se produire à tout moment dans le cycle de vie du développement :

  • Conception – assurez-vous que la conception n’autorise pas naturellement les attaquants à accéder facilement sans autorisation à la charge de travail, à ses données ou à d’autres ressources métier de l’organisation.
  • Code – assurez-vous que l’écriture (et la réutilisation) du code n’autorise pas les attaquants à prendre facilement le contrôle de l’application pour effectuer des actions non autorisées qui portent préjudice aux clients, aux employés, aux systèmes, aux données ou à d’autres ressources métier. Les développeurs doivent également travailler dans un environnement sécurisé qui ne permet pas aux attaquants de prendre le contrôle sans leur connaissance.
  • Générer et déployer – assurez-vous que les processus d’intégration continue et de déploiement continu (CI/CD) n’autorisent pas les utilisateurs non autorisés à modifier le code et autoriser les attaquants à le compromettre.
  • Exécuter – assurez-vous que l’environnement exécutant le code (cloud, serveurs, appareils mobiles, autres) suit les meilleures pratiques de sécurité entre les personnes, les processus et la technologie pour éviter les attaquants de compromettre la charge de travail et d’en faire une mauvaise utilisation. Ce processus inclut l’adoption des meilleures pratiques bien établies, des configurations de base de référence de sécurité et bien plus encore.
  • Architecture et gouvernance Confiance Zéro – toutes ces étapes doivent suivre les principes Confiance Zéro pour supposer une violation (compromission), pour vérifier explicitement l’approbation et pour accorder le moins de privilèges requis pour chaque compte d’utilisateur, identité de machine/service et composant d’application.

Qu’est-ce que DevSecOps ?

L’innovation technologique est fréquemment développée dans le contexte d’une approche de développement rapide, maigre et agile qui combine le développement et les opérations ensemble dans un processus DevOps et l’intégration de la sécurité dans ce processus est essentielle pour atténuer les risques liés au processus d’innovation, à la croissance de l’organisation et aux ressources existantes de l’organisation. L’intégration de la sécurité au processus crée un processus DevSecOps.

Sécurité dès la conception et déplacement vers la gauche

À mesure que les organisations adoptent DevOps et d’autres méthodologies d’innovation rapide, la sécurité doit être un fil tissé tout au long de la tapisserie de l’organisation et de ses processus de développement. L’intégration tardive de la sécurité au processus est coûteuse et difficile à corriger.

Déplacez la sécurité vers la gauche dans la chronologie pour l’intégrer à la vision, à la conception, à l’implémentation et au fonctionnement des services et des produits. À mesure que les équipes de développement passent au DevOps et adoptent les technologies du cloud, la sécurité doit faire partie de cette transformation.

Sécurité tout au long du processus

Dans le modèle en cascade, la sécurité était traditionnellement une barrière de qualité une fois le développement terminé.

DevOps a élargi le modèle de développement traditionnel (personnes, processus et technologie) pour inclure les équipes des opérations. Ce changement a permis de réduire les frictions résultant de la séparation des équipes de développement et des opérations. De même, DevSecOps prolonge DevOps pour réduire les frictions dues à des équipes de sécurité séparées ou disparates.

DevSecOps est l’intégration de la sécurité à chaque étape du cycle de vie DevOps, de l’introduction de l’idée à l’exploitation, en passant par la conception architecturale et le développement itératif de l’application. Les équipes doivent s’aligner simultanément sur les objectifs de vitesse d’innovation, de fiabilité et de résilience de la sécurité. Grâce à une compréhension mutuelle et au respect des besoins de chacun, les équipes travailleront d’abord sur les questions les plus importantes, quelle que soit la source.

La méthodologie d’Organisation du Cloud Adoption Framework fournit davantage de contexte sur les structures DevSecOps dans une organisation. Pour plus d’informations, consultez Comprendre la sécurité des applications et les fonctions DevSecOps.

Pourquoi DevSecOps ?

Si DevOps offre l’agilité, DevSecOps offre l’agilité sécurisée.

Presque toutes les organisations de la planète se tournent vers le développement de logiciels pour obtenir un avantage concurrentiel grâce à l’innovation. La sécurisation du processus DevOps est essentielle au succès de l’organisation. Les attaquants ont remarqué cette évolution tournée vers les applications personnalisées et s’en prennent de plus en plus à ces dernières lors de leurs attaques. Ces nouvelles applications sont souvent de riches sources de propriété intellectuelle qui contiennent de nouvelles idées précieuses qui ne sont pas encore une commodité sur le marché.

Pour protéger cette innovation, les organisations doivent corriger les faiblesses de sécurité et les attaques potentielles tant dans le processus de développement que dans l’infrastructure hébergeant les applications. Cette approche doit s’appliquer aussi bien au cloud qu’aux ressources locales.

Occasions pour les attaquants

Les attaquants peuvent atteindre leurs objectifs en exploitant des faiblesses dans le processus de développement, dans l’infrastructure sous-jacente pour les charges de travail ou dans les deux :

  • Attaques de développement utilisant des faiblesses dans le processus de conception et de développement de l’application. Par exemple, les attaquants peuvent trouver du code qui ne valide pas l’entrée (autorisant des attaques courantes telles que l’injection SQL) ou ils peuvent trouver que l’application utilise un chiffrement faible (ou aucun chiffrement) pour les communications. En outre, les attaquants peuvent implanter des portes dérobées dans le code, ce qui leur permet de revenir ultérieurement pour accéder aux ressources dans votre environnement ou celui de votre client.
  • Attaques de l’infrastructure qui peuvent compromettre les éléments de point de terminaison et d’infrastructure sur lesquels le processus de développement est hébergé en utilisant des attaques standard. Les attaquants peuvent également mener une attaque en plusieurs étapes qui utilise des informations d’identification volées ou des programmes malveillants pour accéder à l’infrastructure de développement à partir d’autres parties de l’environnement.

En outre, le risque d’attaques de la chaîne d’approvisionnement des logiciels rend indispensable l’intégration de la sécurité à votre processus pour les deux :

  • Protection de votre organisation contre les codes malveillants et les vulnérabilités dans votre chaîne d’approvisionnement en code source
  • Protection de vos clients contre tout problème de sécurité dans vos applications et systèmes qui pourrait nuire à votre réputation, engager votre responsabilité ou avoir d’autres répercussions négatives sur votre entreprise.

Le parcours DevSecOps

La plupart des organisations trouvent que DevOps ou DevSecOps pour une charge de travail ou une application donnée est en fait un processus en deux phases. Les idées sont d’abord incubées dans un espace sûr et sont ultérieurement publiées en production en tant que produit minimum viable (MVP). Elles sont ensuite itératives et mises à jour en continu.

Ce diagramme illustre le cycle de vie de ce type d’approche de la fabrique d’innovation :

Phases DevSecOps

L’innovation sécurisée est une approche intégrée pour les deux phases suivantes :

  • L’incubation d’idées où une idée initiale est construite, validée et rendue prête pour une première utilisation en production. Cette phase commence par une nouvelle idée et se termine lorsque la première version de production répond aux critères du produit minimum viable (MVP) dans les domaines suivants :
    • Développement : Les fonctionnalités répondent aux exigences métier minimales.
    • Sécurité : Les capacités répondent aux exigences réglementaires en matière de conformité, de sécurité et de sûreté pour une utilisation en production.
    • Opérations : Les fonctionnalités répondent aux exigences minimales de qualité, de performances et de prise en charge d’un système de production.
  • DevOps : Cette phase correspond au processus de développement itératif en cours de l’application ou de la charge de travail qui permet une innovation et une amélioration continues.

L’impératif de la direction : fusionner les cultures

Pour répondre à ces trois exigences, il faut fusionner ces trois cultures afin de s’assurer que tous les membres de l’équipe valorisent tous les types d’exigences et travaillent ensemble pour atteindre des objectifs communs.

L’intégration de ces cultures et de ces objectifs dans une véritable approche DevSecOps peut être difficile, mais l’investissement en vaut la peine. De nombreuses organisations connaissent un niveau élevé de frictions malsaines entre les équipes de développement, d’exploitation informatique et de sécurité qui travaillent de manière indépendante, ce qui crée des problèmes tels que :

  • Livraison lente et agilité faible
  • Problèmes de qualité et de performances
  • Problèmes de sécurité

Si quelques problèmes sont normaux et prévisibles dans le cadre d’un nouveau développement, les conflits entre les équipes augmentent souvent considérablement le nombre et la gravité de ces problèmes. Les conflits surviennent souvent parce qu’une ou deux équipes ont un avantage politique et passent sans cesse outre les exigences des autres équipes. Au fil du temps, les problèmes qui ont été négligés augmentent en volume et en gravité. Si elle n’est pas résolue, cette dynamique pourrait s’aggraver avec DevOps, car la vitesse de prise de décision augmente pour répondre à l’évolution rapide des besoins métier et des préférences des clients.

Pour résoudre ces problèmes, vous devez créer une culture commune qui valorise les exigences des équipes de développement, de sécurité et d’exploitation, soutenues par la direction. Cette approche permettra à vos équipes de mieux travailler ensemble et contribuera à résoudre les problèmes les plus urgents sur un sprint donné, qu’il s’agisse d’améliorer la sécurité, la stabilité opérationnelle ou d’ajouter des fonctionnalités métier critiques.

Techniques de direction

Ces techniques clés peuvent aider les dirigeants à créer une culture commune :

  1. Personne ne remporte tous les arguments : Les dirigeants doivent s’assurer qu’aucun état d’esprit ne domine toutes les décisions, ce qui pourrait provoquer un déséquilibre ayant un impact négatif sur l’entreprise.
  2. Attendez-vous à une amélioration continue, pas à la perfection : Les dirigeants doivent définir une attente en matière d’amélioration continue et d’apprentissage permanent. La création d’un programme DevSecOps réussi ne se fait pas du jour au lendemain. Il s’agit d’un voyage continu avec une progression incrémentielle.
  3. Célébrez à la fois les intérêts communs et les valeurs individuelles uniques : Veillez à ce que les équipes puissent voir qu’elles travaillent à des résultats communs et que chaque individu apporte quelque chose que les autres ne peuvent pas apporter. Tous les types d’exigences visent à créer et à protéger la même valeur commerciale. Les équipes de développement essaient de créer une nouvelle valeur, tandis que les équipes d’exploitation et de sécurité essaient de protéger et de préserver cette valeur contre différents scénarios de risque. Les dirigeants à tous les niveaux de l’organisation doivent communiquer sur ce point commun et sur l’importance de répondre à tous les types d’exigences pour un succès immédiat et à long terme.
  4. Développez une compréhension commune : Tous les membres de l’équipe doivent avoir une compréhension de base des éléments suivants :
    • Urgence commerciale : L’équipe doit avoir une image claire du chiffre d’affaires en jeu. Cette vue doit inclure le chiffre d’affaires actuel (si le service est hors ligne) et le futur chiffre d’affaires possible affecté par un retard dans la livraison des applications et des fonctionnalités. Cette vue doit être directement basée sur les signaux des parties prenantes de la direction.
    • Risques et menaces probables : À partir de la contribution de l’équipe de renseignement sur les menaces, le cas échéant, l’équipe doit se faire une idée des menaces probables auxquelles le portefeuille d’applications sera confronté.
    • Exigences en matière de disponibilité : L’équipe doit avoir une idée commune des exigences opérationnelles telles que la durée requise de bon fonctionnement et la durée de vie prévue de l’application ainsi que des exigences en matière de résolution des problèmes et de maintenance, par exemple la mise à jour corrective pendant que le service est en ligne.
  5. Montrez et incarnez le comportement souhaité : Les dirigeants doivent incarner publiquement le comportement qu’ils attendent de leurs équipes. Par exemple, faire preuve d’humilité, se concentrer sur l’apprentissage et valoriser les autres disciplines. Autre exemple : des responsables du développement discutent de la valeur de la sécurité et des applications de haute qualité ou des responsables de la sécurité discutent de la valeur de l’innovation rapide et de la performance des applications.
  6. Surveillez le niveau de friction relatif à la sécurité : La sécurité crée naturellement des frictions qui ralentissent les processus. Il est essentiel pour les dirigeants de surveiller le niveau et le type de friction que la sécurité génère :
    • Friction saine : De la même manière que l’exercice renforce les muscles, l’intégration d’un niveau approprié de friction de sécurité dans le processus DevOps renforce l’application en forçant une réflexion critique au moment opportun. Si les équipes apprennent et utilisent ces apprentissages pour améliorer la sécurité, par exemple, en examinant comment et pourquoi un attaquant pourrait tenter de compromettre une application et en trouvant et corrigeant les bogues de sécurité importants, alors elles sont sur la bonne voie.
    • Friction malsaine : Faites attention aux frictions qui entravent davantage la valeur qu’elles ne la protègent. Ce problème se produit souvent lorsque des bogues de sécurité générés par des outils présentent un taux élevé de faux positifs ou de fausses alarmes ou lorsque l’effort de sécurité pour corriger quelque chose dépasse l’impact potentiel d’une attaque.
  7. Intégrez la sécurité dans la planification budgétaire : Assurez-vous que le budget de sécurité est alloué proportionnellement à d’autres investissements en matière de sécurité. Ce concept est analogue à un événement physique comme un concert où le budget de l’événement inclut la sécurité physique comme une norme. Certaines organisations allouent 10 % du coût total à la sécurité de manière générale pour garantir l’application cohérente des meilleures pratiques en matière de sécurité.
  8. Établissez des objectifs communs : Assurez-vous que les mesures de performance et de réussite pour les charges de travail des applications reflètent les objectifs de développement, de sécurité et d’exploitation.

Remarque

Dans l’idéal, ces équipes doivent créer collectivement ces objectifs communs afin de maximiser l’adhésion, que ce soit pour l’ensemble de l’organisation ou pour un projet ou une application en particulier.

Identifier le MVP DevSecOps

Lors du passage d’une idée à la mise en production, il est essentiel de s’assurer que la capacité est conforme à la configuration minimale requise, ou au produit minimum viable (MVP), pour chaque type d’exigence :

  • Les développeurs (dev) se concentrent sur la représentation des besoins métier pour une livraison rapide des capacités qui répondent aux attentes des utilisateurs, des clients et des chefs d’entreprise. Identifiez la configuration minimale requise pour garantir que la capacité contribue à la réussite de l’organisation.
  • La sécurité (sec) met l’accent sur le respect des obligations de conformité et la défense contre les attaquants qui cherchent continuellement à tirer un profit illicite des ressources de l’organisation. Identifiez la configuration minimale requise pour respecter les exigences réglementaires en matière de conformité, maintenir la posture de sécurité et garantir que les opérations de sécurité peuvent rapidement détecter une attaque active et y répondre.
  • Les opérations (ops) se concentrent sur les performances, la qualité et l’efficacité, en veillant à ce que la charge de travail puisse continuer à fournir de la valeur à long terme. Identifiez la configuration minimale requise pour garantir que la charge de travail peut fonctionner et être prise en charge sans nécessiter de changements importants dans l’architecture ou la conception dans un avenir prévisible.

Les définitions du MVP peuvent changer au fil du temps et avec différents types de charges de travail, à mesure que l’équipe apprend de sa propre expérience et de celle d’autres organisations.

Intégrer la sécurité en mode natif dans le processus

Les exigences en matière de sécurité doivent être axées sur l’intégration native au processus et aux outils existants. Par exemple :

  • Les activités de conception telles que la modélisation des menaces doivent être intégrées à la phase de conception.
  • Les outils d’analyse de la sécurité doivent être intégrés aux systèmes d’intégration continue et livraison continue (CI/CD) comme Azure DevOps, GitHub et Jenkins.
  • Les problèmes de sécurité doivent être signalés à l’aide des mêmes processus et systèmes de suivi des bogues (par exemple, le schéma de hiérarchisation) que les autres bogues.

La façon dont la sécurité est intégrée au processus doit être continuellement améliorée, à mesure que les équipes apprennent et que les processus mûrissent. Les révisions de sécurité et les évaluations de risques doivent garantir l’intégration des mesures d’atténuation aux processus de développement de bout en bout, au service de production final et à l’infrastructure sous-jacente.

Pour plus d’informations sur DevSecOps, consultez Contrôles techniques DevSecOps.

Astuces pour naviguer sur le parcours

La transformation nécessite de se rapprocher progressivement de cet état idéal au cours d’un parcours. De nombreuses organisations doivent faire face à la complexité et aux défis de ce parcours. Cette section décrit quelques-uns des défis les plus courants auxquels elles sont confrontées.

  • La formation et les changements de culture sont des étapes initiales essentielles : vous partez en guerre avec l’armée dont vous disposez. L’équipe dont vous disposez devra souvent développer de nouvelles compétences et adopter de nouvelles perspectives pour comprendre les autres parties du modèle DevSecOps. Cette formation et ce changement de culture nécessitent du temps, de la concentration, un parrainage de la direction et un suivi régulier pour aider les individus à comprendre et à voir pleinement la valeur du changement. Changer radicalement de culture et de compétences peut parfois toucher à l’identité professionnelle des individus, créant ainsi un potentiel de forte résistance. Il est essentiel de comprendre et d’exprimer le pourquoi, le quoi et le comment du changement pour chaque individu et sa situation.
  • Le changement prend du temps : vous ne pouvez avancer qu’aussi vite que votre équipe peut s’adapter à ce qu’implique l’adoption de nouvelles méthodes de travail. Les équipes devront toujours faire leur travail actuel tout en se transformant. Il est essentiel de privilégier soigneusement ce qui est le plus important et de gérer les attentes quant à la vitesse à laquelle ce changement peut se produire. Une stratégie de type « ramper, marcher, courir », où les éléments les plus importants et les plus fondamentaux sont utilisés en premier, servira bien à votre organisation.
  • Des ressources limitées : un défi auquel les organisations sont généralement confrontées dès le début est de trouver des talents et des compétences en matière de sécurité et de développement d’applications. À mesure que les organisations commencent à collaborer plus efficacement, elles peuvent découvrir des talents cachés, comme des développeurs avec une mentalité axée sur la sécurité ou des professionnels de la sécurité ayant une formation en développement.
  • La nature changeante des applications, du code et de l’infrastructure : la définition technique et la composition d’une application changent fondamentalement avec l’introduction de technologies telles que les modèles serverless, les services cloud, les API cloud et les applications sans code, comme Power Apps. Cette évolution modifie les pratiques de développement et la sécurité des applications et permet même aux non-développeurs de créer des applications.

Remarque

Certaines implémentations associent les responsabilités liées aux opérations et à la sécurité à un rôle Ingénieur en fiabilité des sites (SRE) .

Bien que la fusion de ces responsabilités en un seul rôle puisse être l’état final idéal pour certaines organisations, il s’agit souvent d’un changement extrême par rapport aux pratiques, à la culture, aux outils et aux ensembles de compétences actuels de l’entreprise.

Même si vous ciblez un modèle SRE, nous vous recommandons de commencer par incorporer la sécurité dans DevOps à l’aide de mesures pratiques à effet rapide et de la progression incrémentielle présentées dans cette aide afin de garantir un bon retour sur investissement (ROI) et de répondre aux besoins immédiats. Cela permet d’ajouter progressivement des responsabilités en matière de sécurité à votre personnel d’exploitation et de développement, ce qui rapprochera vos employés de l’état final d’un SRE (si votre organisation prévoit d’adopter ce modèle ultérieurement).

Étapes suivantes

Pour obtenir des instructions plus détaillées sur DevSecOps, consultez les contrôles techniques DevSecOps.

Pour plus d’informations sur la façon dont la sécurité avancée de GitHub intègre la sécurité à vos pipelines d’intégration continue et livraison continue (CI/CD), consultez About GitHub advanced security (À propos de la sécurité avancée de GitHub).

Pour plus d’informations et d’outils sur la façon dont l’organisation informatique de Microsoft a implémenté DevSecOps, consultez Secure DevOps toolkit (Boîte à outils DevOps sécurisée).