SDLC dans le contexte Agile et DEVOPS --> Objectif: DEVSECOPS Par: Etienne T. Sadio ISACA Québec – Conférences Sécurité des systèmes d'information dès leur conception 05 décembre 2018
SDLC dans le contexte Agile et DEVOPS --> Objectif:
DEVSECOPS
Par:
Etienne T. Sadio
ISACA Québec – Conférences Sécurité des systèmes d'information dès leur conception05 décembre 2018
@Me
Etienne SadioConseiller principal en sécurité de information – In Fidem
Enseignant au département informatique – Ulaval
Chercheur au Laboratoire de sécurité informatique (LSI) - Ulaval
- 2 -
@[email protected]@ift.ulaval.ca
ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne Sadio
Agenda
• SDLC (Systems development life cycle) et sécurité• SDLC dans un contexte Agile• SDLC + Agile => DevOps• DEVSECOPS: Culture• DEVSECOPS: Comment?
• Conteneurisation• Transformation de l'espace de développement• Déploiement continu
• Infrastructure as Code
• Continuous configuration automation (CCA)
• Automatisation des tests de sécurité• Mise en place de tests de sécurité en contexte d'intégration continu• Intégration des tests de sécurité au pipeline de livraison
- 3 -ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne
Sadio
Cycle de vie des applications
Proposition Planification Exigences Conception Développement Tests Déploiement Exécution Réformer
• Quel est notre objectif?
• À quel moment faut-il intégrer la sécurité?
Maintenir/Améliorer
ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne Sadio
4
Améliorer la sécurité tout au long du cycle de vie
Proposition
Proposition de sécurité
Planification
Planification de sécurité
Exigences
Exigences de sécurité
Conception
Architecture de sécurité
Développement
Programmation.sécurisée
Tests
Tests de la sécurité
Déploiement
CM de la sécurité
Exécution
Surveillance
Réformer
Maintenir/Améliorer
ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne Sadio
5
Agenda
• SDLC (Systems development life cycle) et sécurité• SDLC dans un contexte Agile• SDLC + Agile => DevOps• DEVSECOPS: Culture• DEVSECOPS: Comment?
• Conteneurisation• Transformation de l'espace de développement• Déploiement continu
• Infrastructure as Code
• Continuous configuration automation (CCA)
• Automatisation des tests de sécurité• Mise en place de tests de sécurité en contexte d'intégration continu• Intégration des tests de sécurité au pipeline de livraison
- 6 -ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne
Sadio
SDLC dans un contexte Agile
• L’industrie du logiciel a adopté massivement les méthodes Agile,
• L’agilité a des impactes sur les pratiques de production des applications
• L’agilité entraine une évolution:• du cycle du développement;
• des tests;
• des méthodes de livraison applicative.
• …
- 7 -ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne
Sadio
SDLC dans un contexte Agile
Product Backlog Sprint planngmeeting
Sprint Backlog
Product owner Team
Scrum master réunion quotidienne
stand-up
Sprint review
Sprint rétrospective
Répartition des tâches
L’équipe s’engage à traiter autant de
fonctionnalités de priorité élevée qu’il
peut être complété à la fin du sprint
Inputs from:• Les clients,• Équipe,• Manageur,• …
1-3 weekSprint
«
« «Liste priorisée des fonctionnalités requises et des bugs à corriger
Livraison des fonctionnalités etMAJ de la version
du produit
- 8 -ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne
Sadio
Agenda
• SDLC (Systems development life cycle) et sécurité• SDLC dans un contexte Agile• SDLC + Agile => DevOps• DEVSECOPS: Culture• DEVSECOPS: Comment?
• Conteneurisation• Transformation de l'espace de développement• Déploiement continu
• Infrastructure as Code
• Continuous configuration automation (CCA)
• Automatisation des tests de sécurité• Mise en place de tests de sécurité en contexte d'intégration continu• Intégration des tests de sécurité au pipeline de livraison
- 9 -ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne
Sadio
SDLC + Agile => DevOps
Dev Team Ops Team
DevOps
Organisation classique
Dev Team Ops Team
DevOps Team
Transformation ou Fusion
• Transformer l'équipe Dev en une équipe de DevOps• Formation• Responsabilité• Confiance
• Fusion l'équipe Dev et l'équipe Ops Team pour créer une nouvelle équipe DevOps• Transfert de connaissances interne et progressif• Apprendre les uns des autres• Formation
- 10 -ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne
Sadio
SDLC + Agile => DevOps
- 11 -ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne
Sadio
Agenda
• SDLC (Systems development life cycle) et sécurité• SDLC dans un contexte Agile• SDLC + Agile => DevOps• DEVSECOPS: Culture• DEVSECOPS: Comment?
• Conteneurisation• Transformation de l'espace de développement• Déploiement continu
• Infrastructure as Code
• Continuous configuration automation (CCA)
• Automatisation des tests de sécurité• Mise en place de tests de sécurité en contexte d'intégration continu• Intégration des tests de sécurité au pipeline de livraison
- 12 -ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne
Sadio
La Culture DEVSECOPS
“The purpose and intent of DevSecOps, is to build on the mindset that ‘everyone is responsible for security’ with the goal of safely distributing security decisions at speed and scale to those who hold the highest level of context without sacrificing the safety required.”
Shannon Lietz
Source: Hypergrid
- 13 -
• DevOps + Security = DevSecOps
• SecDevOps ou DevSecOps?
• Pour Nous: SecDevOps = DevSecOps.
• Mais il faut comprendre: SecDevSecOpsSec
ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne Sadio
La Culture DEVSECOPS
Architecte de sécurité
- 14 -
Product Backlog Sprint planngmeeting
Sprint Backlog
Product owner Team
Scrum master réunion quotidienne
stand-up
Sprint review
Sprint rétrospective
Répartition des tâches
L’équipe s’engage à traiter autant de
fonctionnalités de priorité élevée qu’il
peut être complété à la fin du sprint
Inputs from:• Les clients,• Équipe,• Manageur,• …
1-3 weekSprint
«
« «Liste priorisée des fonctionnalités requises et des bugs à corriger
Livraison des fonctionnalités etMAJ de la version
du produit
• La sécurité devient une préoccupation partagée.
• Intégrer un spécialiste « AppSec » pour aider l'équipe.
La sécurité devient une fonctionnalité
ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne Sadio
Agenda
• SDLC (Systems development life cycle) et sécurité• SDLC dans un contexte Agile• SDLC + Agile => DevOps• DEVSECOPS: Culture• DEVSECOPS: Comment?
• Conteneurisation• Transformation de l'espace de développement• Déploiement continu
• Infrastructure as Code
• Continuous configuration automation (CCA)
• Automatisation des tests de sécurité• Mise en place de tests de sécurité en contexte d'intégration continu• Intégration des tests de sécurité au pipeline de livraison
- 15 -ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne
Sadio
Transformation
DEVSECOPS: Comment?
• Transformation de l’équipe
DevOpsTeam
La sécurité devient une préoccupation partagée..
DevOpsTeam
Intégration d’un expert en sécurité
Formation
« L'apprentissage est le travail des développeurs »
DevSecOpsTeam
Integrating security into DevOps to deliver "DevSecOps" requires changing mindsets, processes and technology. Security and risk management leaders must adhere to the collaborative, agile nature of DevOps to be seamless and transparent in the development process, making the Sec in DevSecOps silent.
Neil MacDonald – Gartner
- 16 -ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne
Sadio
DEVSECOPS: Comment?
• Adaptez vos outils et processus de test de sécurité aux développeurs, et non l'inverse;
• Arrêtez d'essayer d'éliminer toutes les vulnérabilités pendant le développement;
• Concentrez-vous d'abord sur l'identification et l'élimination des vulnérabilités critiques connues
• Ne vous attendez pas à utiliser DAST / SAST traditionnel sans modifications;
• Formez tous les développeurs sur les bases du codage sécurisé, mais ne vous attendez pas à ce qu'ils deviennent des experts en sécurité;
• Adopter un modèle éprouvé de la sécurité et implémenter un outil de collecte des exigences de sécurité simples;
• Éliminer l'utilisation de composants vulnérables connus à la source;
• Sécuriser et appliquer la discipline opérationnelle aux scripts d'automatisation
• Implémenter un contrôle de version fort sur tous les codes et composants
• Adopter une mentalité d'infrastructure immuable
- 17 -ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne
Sadio
DEVSECOPS: Comment?
• L'automatisation est un impératif dans tout environnement DevSecOps, du moins là où cela a du sens.• Système de contrôle de version
• Intégration continue
• Test continu
• Gestion de la configuration et déploiement (CMD)
• Contrôle continu
• Conteneurisation
• Orchestration
- 18 -ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne
Sadio
Agenda
• SDLC (Systems development life cycle) et sécurité• SDLC dans un contexte Agile• SDLC + Agile => DevOps• DEVSECOPS: Culture• DEVSECOPS: Comment?
• Conteneurisation• Transformation de l'espace de développement• Déploiement continu
• Infrastructure as Code
• Continuous configuration automation (CCA)
• Automatisation des tests de sécurité• Mise en place de tests de sécurité en contexte d'intégration continu• Intégration des tests de sécurité au pipeline de livraison
- 19 -ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne
Sadio
Conteneurisation
Source: redhat
- 20 -ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne
Sadio
Conteneurisation
- 21 -
Les conteneurs vous permettent d'assembler et d'isoler des applications avec leurenvironnement d'exécution complet contenant tous les fichiers nécessaires pour lesexécuté.
Les applications conteneurisées sont faciles à déplacer d'un environnement à un autre(développement, tests, production, etc.), tout en conservant toutes leurs fonctions.
CRI-O - minikube
Docker
LXC
ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne Sadio
Transformation de l'espace de développement
• Le post développeur devient un écosystème
• Testez votre code dans un contexte plus réaliste avant de le pousser dans un dépôt (GIT, SVN).
• le développeur devient plus indépendant.
dans
- 22 -ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne
Sadio
Déploiement continu - Infrastructure as Code
Dev Team Ops Team
Organisation classique DevOps
Dev Team Ops Team
DevOps Team
Transformation ou Fusion
IAC
• Moins d'erreur• Vitesse• Répétition - industrialisation• Standardisation• Impératif pour une équipe DevSecOps• Iaas: portabilité
- 23 -
• IAC est un type d'infrastructure informatique que les équipes opérationnelles peuvent administrer et mettre à disposition automatiquement, par code plutôt que par traitement manuel.
• Pourquoi?
ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne Sadio
Déploiement continu – Continuousconfiguration automation (CCA)
- 24 -
• IaC a besoin d’un CCA
• Automatisation continue de la configuration (CCA) est la méthodologie ou le processus d'automatisation du déploiement et de la configuration des paramètres du logiciel.
• Les outils de gestion de la configuration sont utilisés pour contrôler les modifications et les mises à jour des paramètres de l'infrastructure ou des applications..
ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne Sadio
Automatisation des tests de sécurité
Pas de problème!! J'aime écrire des
scripts
- 25 -
• Dans les projets réalisés en intégration continue, la livraison du projet induit à la fois la livraison de l'infrastructure et de l'application.
• Un déploiement doit se faire de manière automatique. • Les tests de sécurité doivent faire partie du processus de déploiement.• Chaque fois qu‘une nouvelle version d'une application doit être livrée
dans un environnement, il faut:• Tester l'infrastructure qui accueille l’application; • une fois que l’application est déployée, faire des tests de sécurité d'applicative;
• Objectif: Intégration des tests de sécurité au pipeline de livraison.
ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne Sadio
- 26 -
Comment?
Intégration des tests de sécurité au pipeline de livraison
Création du projet
•Ajouter IaC + scripts des tests de sécurité
•Création de l’inventaire de configuration et de déploiement
•Scripts de déploiement de l’application
Développement
•Configurer le monitoring pour les tests dynamiques
•Configurer la journalisation
Commit and Push
•Demander une revue de code par ses paires
Compilation
•Analyse statique du code source
•Tester les librairies externes
•Publier les rapports
Déploiement
•Test l’infrastructure
•'Test de sécurité applicative (analyste dynamique, injection, fuzzing...)
•Publier les rapports
Tag
•Étiquetage d’une nouvelle version
•Publier une release note qui intègre les liens vers les rapports de sécurité
CodeFactor
Spring Boot Actuator
ASVS 3.0
ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne Sadio
- 27 -
Composition minimale d’un projet DevSecOps
Intégration des tests de sécurité au pipeline de livraison
Pro
jet
Dev
SecO
ps • Dockerfile
• jenkinsfile
• deploy.Jenkinsfile
• delivery.Jenkinsfile
• tag.Jenkinsfile
• dependency-check-suppression
• requirements.yml
• scanApp.Jenkinsfile
ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne Sadio
Merci
@[email protected]@ift.ulaval.ca
- 28 -ISACA Québec – Conférences AppSec - 05 Dec 2018 - Étienne
Sadio