Impossible de donner un avis, je viens à peine de le recevoir mais "Avis vérifié" demande à réagir rapidement... Pour ne pas pénaliser ENI je mets donc 5 étoiles en me basant sur d'autres lectures que j'ai eu, mais ce serait bien de demander un avis plus tard... Je ne suis pas une machine à dévorer 4 bouquins de 500 pages, qui plus est techniques, en une semaine.
AnonymeDevSecOps Développez et administrez vos services en toute sécurité
1 avis
Ce livre sur DevSecOps s'adresse à tous les membres des équipes IT ou de développement qui souhaitent intégrer la sécurité dans leur pratique quotidienne et sécuriser leurs développements à chaque étape du cycle de vie des services. L'auteur explique en quoi l'implémentation de la sécurité transforme le fonctionnement des équipes. Le lecteur est invité à implémenter son propre pipeline d'intégration continue en Python en utilisant Gitlab-CI. Les chapitres suivants présentent Docker et...
Consulter des extraits du livre en ligne
Aperçu du livre papier
- Niveau Expert
- Nombre de pages 618 pages
- Parution mars 2023
- Niveau Expert
- Parution mars 2023
Cet ouvrage sur l’approche DevSecOps est destiné à tout membre d’une équipe opérationnelle IT ou de développement qui souhaite intégrer la sécurité dans sa pratique quotidienne et disposer des bons outils pour sécuriser ses développements, à chaque étape du cycle de vie des services.
L’auteur commence par expliquer en quoi l’implémentation de la sécurité transforme en profondeur le fonctionnement des équipes au sein d’une entreprise, notamment les équipes de développement, avant de présenter en détail les notions d’intégration continue et de déploiement continu (CI/CD). En guise de mise en pratique, il propose au lecteur d’implémenter étape par étape son propre pipeline d’intégration continue en Python en utilisant Gitlab-CI.
Deux chapitres présentent ensuite en quoi Docker et Kubernetes sont des outils incontournables dans une approche DevSecOps. Pour en détailler l’installation, la configuration et l’utilisation, l’auteur s’appuie sur plusieurs exemples : déploiement d’un site Wordpress avec Docker Compose, analyse de la sécurité des images Docker avec Dockle et Trivy, sécurisation d’un cluster Kubernetes avec Kube-Bench, Kube-Hunter et les CIS Benchmark, analyse de la sécurité des fichiers YAML décrivant les objets Kubernetes avec KubeLinter et Checkov. Les vulnérabilités appréhendées dans ces exemples sont détaillées afin que vous puissiez les reconnaître et les corriger.
Les notions importantes du domaine de la cybersécurité sont explicitées, notamment le vocabulaire associé et les différents types d’attaques en mettant l’accent sur le Denial of Service et le Brute Force, ainsi que les principaux composants de la cryptographie (chiffrement symétrique, asymétrique, algorithmes de hash, Rainbow Table, fonctionnement des PKI et des certificats digitaux).
Un chapitre explore la sécurité du développement et les bonnes pratiques à mettre en oeuvre autour du SDLC et du SSDLC avec le Threat Modeling et la publication d’une Secure Coding Checklist. L’auteur y détaille également les différents environnements à mettre à disposition des développeurs, ainsi que l’utilisation de l’outil WebGoat, pour créer un environnement de Pentest à partir duquel les trois premières catégories du TOP10 de l’OWASP seront étudiées. Les bonnes pratiques liées à la gestion des évènements et à la supervision de la stack applicative sont parcourues.
L’ouvrage se termine par la mise en oeuvre concrète de l’approche DevSecOps au sein d’une entreprise (définition des objectifs de sécurité, développement d’une culture de la cybersécurité, implémentation d’un dépôt certifié d’images et d’artefacts, gestion du versioning de manière sécurisée et sécurisation des serveurs web), ainsi que par une présentation des pratiques de SCA, SAST, DAST et de l’utilisation de Terraform en contexte sécurisé.
L’auteur commence par expliquer en quoi l’implémentation de la sécurité transforme en profondeur le fonctionnement des équipes au sein d’une entreprise, notamment les équipes de développement, avant de présenter en détail les notions d’intégration continue et de déploiement continu (CI/CD). En guise de mise en pratique, il propose au lecteur d’implémenter étape par étape son propre pipeline d’intégration continue en Python en utilisant Gitlab-CI.
Deux chapitres présentent ensuite en quoi Docker et Kubernetes sont des outils incontournables dans une approche DevSecOps. Pour en détailler l’installation, la configuration et l’utilisation, l’auteur s’appuie sur plusieurs exemples : déploiement d’un site Wordpress avec Docker Compose, analyse de la sécurité des images Docker avec Dockle et Trivy, sécurisation d’un cluster Kubernetes avec Kube-Bench, Kube-Hunter et les CIS Benchmark, analyse de la sécurité des fichiers YAML décrivant les objets Kubernetes avec KubeLinter et Checkov. Les vulnérabilités appréhendées dans ces exemples sont détaillées afin que vous puissiez les reconnaître et les corriger.
Les notions importantes du domaine de la cybersécurité sont explicitées, notamment le vocabulaire associé et les différents types d’attaques en mettant l’accent sur le Denial of Service et le Brute Force, ainsi que les principaux composants de la cryptographie (chiffrement symétrique, asymétrique, algorithmes de hash, Rainbow Table, fonctionnement des PKI et des certificats digitaux).
Un chapitre explore la sécurité du développement et les bonnes pratiques à mettre en oeuvre autour du SDLC et du SSDLC avec le Threat Modeling et la publication d’une Secure Coding Checklist. L’auteur y détaille également les différents environnements à mettre à disposition des développeurs, ainsi que l’utilisation de l’outil WebGoat, pour créer un environnement de Pentest à partir duquel les trois premières catégories du TOP10 de l’OWASP seront étudiées. Les bonnes pratiques liées à la gestion des évènements et à la supervision de la stack applicative sont parcourues.
L’ouvrage se termine par la mise en oeuvre concrète de l’approche DevSecOps au sein d’une entreprise (définition des objectifs de sécurité, développement d’une culture de la cybersécurité, implémentation d’un dépôt certifié d’images et d’artefacts, gestion du versioning de manière sécurisée et sécurisation des serveurs web), ainsi que par une présentation des pratiques de SCA, SAST, DAST et de l’utilisation de Terraform en contexte sécurisé.
Avant-propos
- 1. Public concerné par le livre
- 2. Prérequis
- 3. Objectifs et fil conducteur
Introduction au DevSecOps
- 1. Qu'est-ce que le DevOps ?
- 1.1 Bob le développeur
- 1.2 Alice l'opérationnelle
- 1.3 À la recherche d'une (bonne) définition du DevOps
- 1.4 Récapitulatif de ce qu’est le DevOps et ouverture vers le DevSecOps
- 2. Le CALMS et les cinq piliers du DevOps
- 2.1 Le « c » de la culture
- 2.2 L’automatisation : une méthode indispensable
- 2.3 Le Lean ou le zéro déchet
- 2.4 En DevOps, il faut tout mesurer
- 2.4.1 L’enseignement du TDD (Test Driven Development)
- 2.4.2 Quelques exemples de mesures
- 2.5 Le sharing (partage) au centre de toute la culture DevOps
- 2.6 Et le DevSecOps ?
- 3.1 Le business d'aujourd’hui
- 3.2 Le fonctionnement dans « l’ancien monde » en silos
- 3.3 Les premiers changements apportés par le DevOps
- 3.4 Quelques optimisations apportées par le DevSecOps
- 3.5 Quelques clés pour faire adopter le DevSecOps par les équipes
- 3.6 L’avènement des T-Shaped Peoples
- 4.1 Segmentation des environnements et des applications
- 4.2 Gestion des accès et des identités (IAM) sur le Cloud
- 4.3 Gestion et analyse des logs
- 4.4 Utilisation de dépôts et d’artefacts restreints
- 5.1 Une nouvelle façon de travailler
- 5.2 La règle du IN : Input, Involve et Invest (contribution, implication et investissement)
- 5.3 Le « Shift Left »
- 5.4 Quelques statistiques
- 5.5 DevSecOps, business et sécurité
Intégration et déploiement continus (CI/CD)
- 1. Présentation générale de Git
- 1.1 Concepts fondamentaux de Git
- 1.1.1 Histoire de Git
- 1.1.2 Système de gestion de versions centralisé
- 1.1.3 Système de gestion de versions distribué
- 1.1.4 Gestionnaire de versions et SCM (Source Control Management)
- 1.1 Concepts fondamentaux de Git
- 1.2 Maîtrise des principaux termes utilisés dans Git
- 1.3 Le workflow (les différentes étapes) de Git
- 2.1 La phase de build
- 2.2 Les phases de tests
- 2.3 Les prérequis à une bonne intégration continue
- 2.3.1 Le dépôt de code permettant de faire du versionning
- 2.3.2 Le standard de code
- 2.3.3 Le serveur d’intégration continue
- 3.1 Architecture de GitLab-CI
- 3.1.1 Serveur GitLab et Runners
- 3.1.2 Les Shared Runners de GitLab.com
- 3.1.3 Pourquoi utiliser GitLab-CI ?
- 4.1 Exécuter plusieurs jobs en parallèle
- 4.2 Gérer les « secrets » et les données confidentielles
- 5.1 Les bénéfices du Continuous Delivery
- 5.2 Les différences avec le déploiement continu
- 6.1 Quelques règles de bonnes pratiques
- 6.2 Méthode Blue/Green
- 6.3 Méthode Canary Releases
Utilisation de Docker en DevSecOps
- 1. Introduction à Docker
- 1.1 L’histoire de la création de Docker
- 1.2 Les différentes éditions de Docker
- 1.3 L’utilisation de Docker sur Windows
- 1.4 L’installation étape par étape de Docker Desktop sur Windows
- 1.4.1 Vérification de votre version de Windows
- 1.4.2 Installation de WSLv2 et du Linux Kernel Package
- 1.4.3 Installation de Docker Desktop
- 1.4.4 Vérification de l’installation de Docker
- 1.5 La méthode alternative en cas d'anciennes versions de Windows
- 1.5.1 Téléchargement et installation de Docker Toolbox
- 1.5.2 Exécution et vérification de l'installation de Docker Toolbox
- 1.6 L’installation étape par étape de Docker sur Linux
- 1.6.1 Désinstallation de toutes les anciennes versions
- 1.6.2 Utilisation du script de Docker
- 1.6.3 Ajout de l’utilisateur actuel au groupe de Docker
- 1.6.4 Vérification de l’installation de Docker
- 1.6.5 Installation de docker-compose
- 1.7 La plateforme Play With Docker
- 1.8 Le point sur la virtualisation
- 1.9 Les conteneurs et leurs spécificités
- 2.1 Les commandes de base
- 2.1.1 La commande docker version
- 2.1.2 La commande docker info
- 2.1.3 La commande docker
- 2.2.1 Obtenir la liste des conteneurs
- 2.2.2 Lancer un simple serveur web
- 2.2.3 Arrêter et supprimer les conteneurs
- 2.2.4 Afficher les logs et les processus d’un conteneur
- 2.2.5 Obtenir plus d’informations sur un conteneur
- 2.2.6 Obtenir le taux d’utilisation des ressources d’un conteneur
- 2.2.7 Aller à l’intérieur de son conteneur
- 2.4.1 Instructions de l'exercice
- 2.4.2 Correction de l'exercice
- 3.1 L’utilisation du NAT (Network Address Translation)
- 3.1.1 Les adresses IPv4 privées
- 3.1.2 La fonction du NAT
- 3.2.1 Les bonnes pratiques réseau
- 3.2.2 Les différents types de réseaux sur Docker
- 3.3.1 Obtenir les informations d’un réseau de Docker
- 3.3.2 Créer de nouveaux réseaux Docker
- 3.3.3 Attacher un conteneur à un réseau spécifique
- 4.1 Utilisation de Docker Hub
- 4.2 Analyse du cache d’une image Docker
- 4.2.1 La commande docker image history
- 4.2.2 Les couches d’une image Docker
- 4.3.1 Contenu d’un fichier Dockerfile
- 4.3.2 Exemple de Dockerfile
- 4.4.1 Taguer une image
- 4.4.2 Pousser une image sur le repository distant
- 4.4.3 S’authentifier auprès de Docker Hub (ou un autre dépôt)
- 4.4.4 Builder son image Docker
- 5.1 Durée de vie d’un conteneur
- 5.2 Utilisation des volumes dans Docker
- 5.2.1 Comprendre quand utiliser les volumes dans Docker
- 5.2.2 Utiliser la commande docker volume prune
- 5.2.3 Vérifier les volumes configurés sur un conteneur
- 5.2.4 Obtenir la liste des volumes
- 5.2.5 Obtenir des informations détaillées sur un volume
- 5.2.6 Créer un nouveau volume
- 5.3.1 Comprendre quand utiliser les bind mounts dans Docker
- 5.3.2 La syntaxe du bind mounting
- 6.1 Utilisation de WordPress
- 6.2 Composition de WordPress
- 6.3 Intérêts d’utiliser WordPress avec Docker
- 6.4 Contenu de la partie Front-End de Word Press
- 6.4.1 Les principaux fichiers du Front-End
- 6.4.2 Les principaux répertoires du Front-End
- 7.1 Les CIS Benchmarks
- 7.1.1 Introduction aux CIS Benchmarks
- 7.1.2 Utilisation de l’outil Docker Bench for Security
- 7.2.1 Vérifier que le démon Docker est correctement audité
- 7.2.2 Vérifier que les logs sont stockés sur un support distant centralisé
- 7.2.3 Vérifier que les conteneurs ne peuvent acquérir de nouveaux privilèges
- 8.1 Architecture d’un pipeline CI/CD pour les images Docker
- 8.2 Construction d’un fichier Dockerfile
- 8.3 Mise en place du système de lint du Dockerfile
- 8.3.1 Utilisation de l’outil Hadolint
- 8.3.2 Création du dépôt Git
- 8.3.3 Paramétrage de Git pour préparer le job de lint
- 8.3.4 Vérification du job de lint
- 8.3.5 Correction du fichier Dockerfile
- 8.4.1 Création de la nouvelle branche
- 8.4.2 Donner la possibilité aux jobs de faire du Docker
- 8.4.3 Configuration du fichier .gitlab-ci.yml
- 8.4.4 Vérification et merge de la nouvelle branche
- 8.5.1 Création de la nouvelle branche
- 8.5.2 Réflexion autour des tests à réaliser
- 8.5.3 Configuration du fichier .gitlab-ci.yml
- 8.5.4 Vérification et merge de la nouvelle branche
- 8.6.1 Présentation des différents outils
- 8.6.2 Création de la nouvelle branche
- 8.7.1 Configuration du fichier .gitlab-ci.yml pour le job de Dockle
- 8.7.2 Analyse des résultats pour Dockle
- 8.7.3 Correction du fichier Dockerfile
- 8.8.1 Configuration du fichier .gitlab-ci.yml pour le job de Trivy
- 8.8.2 Analyse des résultats pour Trivy
- 8.8.3 Correction du fichier Dockerfile
Utilisation de Kubernetes en DevSecOps
- 1. Introduction
- 2. La prise en main de Kubernetes
- 2.1 Principe de déploiement
- 2.2 Kubernetes nous aide à déployer plus facilement
- 2.3 Kubernetes et le système de « replicas »
- 2.4 Mise à l'échelle grâce à Kubernetes
- 3. Le concept de Cluster
- 3.1 Les composants de Kubernetes
- 3.2 Le Control Plane et les Worker nodes
- 3.3 L’installation de notre premier cluster Kubernetes avec Play With Kubernetes
- 3.3.1 Installer et paramétrer notre Master node
- 3.3.2 Installer et paramétrer nos deux Worker nodes
- 3.4 L’installation de notre premier cluster Kubernetes avec des serveurs Ubuntu 22.04 LTS
- 4.1 CIS Benchmarks
- 4.2 Utilisation de Kube-Bench
- 4.2.1 Exécuter Kube-Bench
- 4.2.2 Corriger les erreurs les plus communes
- 5.1 YAML
- 5.2 Description et utilisation des Pods
- 5.2.1 Les Pods avec un seul conteneur
- 5.2.2 Les Pods avec plusieurs conteneurs
- 5.3.1 En utilisant la commande kubectl run
- 5.3.2 En utilisant un fichier YAML
- 5.5.1 Créer un Deployment avec YAML
- 5.5.2 Mettre à jour la version de l'image
- 5.5.3 Effectuer un rollback
- 5.7.1 Comprendre ce qu'est un service
- 5.7.2 Déployer notre premier service
- 5.7.3 Utiliser les services NodePort
- 5.7.4 Utiliser les services ClusterIP
- 5.7.5 Utiliser les services LoadBalancer
- 5.8.1 Fonctionnement et intérêt du LivenessProbe
- 5.8.2 Utilisation du LivenessProbe via une requête HTTP
- 5.8.3 Utilisation du LivenessProbe via une commande
- 5.8.4 Utilisation du ReadinessProbe
- 6.1 Présentation de l'outil KubeLinter
- 6.2 Configuration de notre pipeline
- 6.2.1 Paramétrage de Git pour préparer le job de lint
- 6.2.2 Vérification du job de lint
- 6.3.1 Ajouter un tag à l'image Docker utilisée
- 6.3.2 Utiliser le readOnlyRootFilesystem
- 6.3.3 Utiliser le runAsNonRoot
- 6.3.4 Configurer les limites de CPU et de mémoire
- 7.1 Présentation de l'outil Checkov
- 7.2 Configuration de notre pipeline
- 7.2.1 Paramétrage de Git pour préparer le job de Checkov
- 7.2.2 Vérification du job de Checkov
- 7.3.1 CKV_K8S_38: "Ensure that Service Account Tokens are only mounted where necessary"
- 7.3.2 CKV_K8S_31: "Ensure that the seccomp profile is set to docker/default or runtime/default"
- 7.3.3 CKV_K8S_40: "Containers should run as a high UID to avoid host conflict"
- 7.3.4 CKV_K8S_20: "Containers should not run with allowPrivilegeEscalation"
- 7.3.5 CKV_K8S_8 & CKV_K8S_9 : Configurer le LivenessProbe et le ReadinessProbe
- 7.3.6 CKV_K8S_43: "Image should use digest"
- 7.3.7 CKV_K8S_28: "Minimize the admission of containers with the NET_RAW capability"
- 7.3.8 CKV_K8S_21: "The default namespace should not be used"
Culture et connaissances en cybersécurité
- 1. Quelques éléments de vocabulaire
- 1.1 Le CIA (Confidentialité, Intégrité et Disponibilité)
- 1.2 Le SIEM (Security Information and Event Management)
- 1.2.1 Agrégation et collecte des données
- 1.2.2 Processus de corrélation des données
- 2.1 Les attaques par reconnaissance
- 2.2 Le Social Engineering
- 2.3 Le phishing
- 2.4 Les attaques par brute force
- 2.4.1 Les différentes catégories de jeux de caractères
- 2.4.2 Comment résister aux attaques par brute force ?
- 3.1 Qu'est-ce qu'une attaque par déni de service
- 3.2 Attaque par SYN Flood
- 3.3 Attaque par UDP Flooding
- 3.4 Attaque de type Smurfing
- 4.1 Principe de fonctionnement du chiffrement
- 4.2 Chiffrement par substitution monoalphabétique
- 4.2.1 Fonctionnement d'un algorithme de substitution monoalphabétique
- 4.2.2 Reconnaissance des substitutions avec l'indice de coïncidence
- 5.1 Qu’est-ce qu’un certificat digital ?
- 5.2 Standards des clés publiques utilisés
- 5.3 Introduction aux PKI (Public Key Infrastructure)
- 5.4 Les acteurs de la certification
- 5.5 Utilisation du certificat par les différents acteurs
- 5.6 Organisation des PKI et chaîne de certification
Sécurité du développement et bonnes pratiques
- 1. Introduction
- 2. Application de la sécurité au SDLC (Software Development Life Cycle)
- 2.1 SDLC et méthodologie
- 2.1.1 Planification & recueil des besoins
- 2.1.2 Conception/design du produit
- 2.1.3 Codage et tests
- 2.1.4 Déploiement et maintenance
- 2.1 SDLC et méthodologie
- 2.2 SDLC et sécurité des applications
- 3.1 Mise en œuvre du Threat Modeling
- 3.1.1 Déployer le Threat Modeling en entreprise
- 3.1.2 Utiliser le modèle STRIDE
- 3.3.1 Input & Output Validation
- 3.3.2 Authentication and Password Management
- 3.3.3 Session Management
- 3.3.4 Cryptographic Practices
- 3.3.5 Data Protection & Communication Security
- 3.3.6 System and Database configuration and security
- 3.3.7 Files and memory management
- 3.4.1 Menaces et responsabilité partagée
- 3.4.2 Bénéfices du Cloud pour la sécurité des applications
- 3.5.1 Notions générales autour des environnements
- 3.5.2 Exemple avec une application web
- 4.1 Introduction au TOP 10 de l'OWASP
- 4.2 Présentation et installation de l’outil WebGoat
- 4.3 A1 Broken Access Control
- 4.3.1 Challenge numéro 2
- 4.3.2 Challenge numéro 3
- 4.3.3 Challenge numéro 4
- 4.4.1 Challenge numéro 2
- 4.4.2 Challenge numéro 3
- 4.4.3 Challenge numéro 4
- 4.4.4 Challenge numéro 6
- 4.5.1 Challenge numéro 2
- 4.5.2 Challenge numéro 3
- 4.5.3 Challenge numéro 4
- 4.5.4 Challenge numéro 5
- 4.5.5 Challenge numéro 9
- 4.5.6 Challenge numéro 10
- 4.5.7 Challenge numéro 11
- 4.5.8 Challenge numéro 12
- 5.1 Mettre en place un système de centralisation des logs
- 5.2 Créer des logs efficaces pour vos applications
- 5.3 Générer des logs en Python
- 5.3.1 Introduction au module Logging
- 5.3.2 Utilisation du module
- 6.1 Supervision et métriques
- 6.2 Utilisation de Prometheus et Grafana pour superviser ses services
- 6.2.1 Installer Docker, Grafana et Prometheus sur Ubuntu 22.04 LTS
- 6.2.2 Accéder à la visualisation sur Grafana
- 6.2.3 Exporter vos métriques systèmes dans Prometheus
- 6.2.4 Exporter vos métriques applicatives dans Prometheus
Implémenter le DevSecOps en entreprise
- 1. Introduction
- 2. Définir des objectifs de sécurité au sein d’une organisation
- 2.1 Utiliser le CIA en entreprise
- 2.2 Identifier les éléments les plus critiques de votre SI
- 2.3 Mettre en œuvre des métriques et des propriétés
- 2.4 Diffuser la connaissance auprès des collaborateurs
- 3. Développer une culture de la cybersécurité
- 3.1 Mise à disposition d'outils d'entraînement pour les développeurs
- 3.2 Créer des Security Champions au sein des équipes
- 3.3 Formation des collaborateurs non techniques à la cybersécurité
- 3.4 Organisation de post-mortem « blameless » lors d’incidents
- 4. Implémenter un dépôt d'images et d'artefacts
- 4.1 Utilisation d’un dépôt d'artefacts
- 4.2 Utilisation du GitLab Container Registry
- 4.2.1 Pusher nos images sur le GitLab Container Registry
- 4.2.2 Utiliser les images du GitLab Container Registry
- 4.2.3 Mettre en place une politique du cycle de vie des images
- 5.1 Mise en œuvre de processus de décommissionnement
- 5.2 Automatisation du déploiement
- 5.3 Solutions de déploiement avec Kubernetes
- 6.1 Scanner les dépôts Git à la recherche de secrets
- 6.2 Utiliser des branches et des tags protégés
- 6.3 Signer vos commits à l'aide des clés SSH
- 7.1 Effectuer un premier scan de serveur Nginx
- 7.2 Implémenter l'anti-clickjacking
- 7.3 Implémenter l'anti Drive-By Download
- 8.1 Effectuer un premier scan de serveur Apache
- 8.2 Implémenter l'anti-clickjacking et l'anti Drive-By Download
- 8.3 Désactiver les méthodes HTTP non utilisées
Analyse de sécurité en DevSecOps
- 1. Introduction
- 2. SCA (Software Composition Analysis)
- 2.1 État de l'utilisation de l'open source
- 2.2 Utilisation du SCA directement dans votre IDE
- 2.3 SCA avec PHP
- 2.4 SCA avec Golang
- 2.5 Quelques autres outils pour le SCA
- 3. SAST (Static Application Security Testing)
- 3.1 Introduction au SAST
- 3.2 SAST avec Golang
- 3.3 SAST générique avec Semgrep
- 3.4 Quelques autres outils pour le SAST
- 4. DAST (Dynamic Application Security Testing)
- 4.1 Introduction au DAST
- 4.2 Zed Attack Proxy
- 4.3 Utilisation de Zed sur une application vulnérable
- 4.4 Quelques autres outils pour le DAST
- 5. Sécurité de l'Infrastructure as Code
- 5.1 Introduction à Terraform
- 5.2 Déploiement d'une topologie sur Google Cloud Platform avec Terraform
- 5.2.1 Configuration initiale de GCP
- 5.2.2 Création de trois VM Compute Engine avec Terraform
- 5.3 Vérification de la sécurité des fichiers Terraform
- 6.1 Objectifs
- 6.2 Développer une application Web Python avec Flask
- 6.3 Vérifier la sécurité et la syntaxe du code
- 6.3.1 Vérification de la syntaxe par rapport au Flake8
- 6.3.2 Exécution du SAST avec Bandit
- 6.3.3 Vérification du SCA avec Safety
- 6.4.1 Lint du fichier Dockerfile avec Hadolint
- 6.4.2 Build de l'image Docker
- 6.4.3 Tests de l'image Docker
- 6.4.4 Premiers tests de sécurité de l'image avec Dockle
- 6.4.5 Seconds tests de sécurité de l'image avec Trivy
- 6.4.6 Terminer le pipeline avec un push de la release
- 6.5.1 Effectuer le lint de notre déploiement
- 6.5.2 Corriger notre déploiement
- 6.5.3 Effectuer l'analyse de sécurité de notre déploiement
- 6.5.4 Corriger les alertes de sécurité
- 6.8.1 Fichier .docker.gitlab-ci.yml
- 6.8.2 Fichier .gitlab-ci.yml
- 6.8.3 Fichier .kubernetes.gitlab-ci.yml
- 6.8.4 Fichier Dockerfile
- 6.8.5 Fichier deployment.yaml
- 6.8.6 Fichier main.py
- 6.8.7 Fichier requirements.txt
- 6.8.8 Fichier service.yaml
- 6.8.9 Fichier templates/password.html
Jordan ASSOULINE
Jordan ASSOULINE travaille depuis plus de 10 ans au sein de contextes innovants autour du DevOps et du DevSecOps. Tour à tour enseignant, auteur ou conférencier, il a accompagné de nombreuses entreprises et professionnels pour l’intégration de la sécurité au cœur de leur pratique. Il a notamment été à l'origine de la création et de la direction d'un Centre Technique d'Excellence d'une ESN spécialisée en DevOps et en cybersécurité. Aujourd'hui, ingénieur chez Google Cloud, il conseille les start-up et les licornes françaises dans la modernisation de leur architecture technique.
En savoir plus