Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. DevSecOps - Développez et administrez vos services en toute sécurité

DevSecOps Développez et administrez vos services en toute sécurité

DevSecOps - Développez et administrez vos services en toute sécurité

Informations

Livraison possible dès le 05 juin 2023
  • Livraison à partir de 0,01 €
  • Version en ligne offerte pendant 1 an
Livres rédigés par des auteurs francophones et imprimés à Nantes

Caractéristiques

  • Livre (broché) - 17 x 21 cm
  • ISBN : 978-2-409-03918-8
  • EAN : 9782409039188
  • Ref. ENI : EPDEVSECOPS

Informations

  • Consultable en ligne immédiatement après validation du paiement et pour une durée de 10 ans.
  • Version HTML
Livres rédigés par des auteurs francophones et imprimés à Nantes

Caractéristiques

  • HTML
  • ISBN : 978-2-409-03919-5
  • EAN : 9782409039195
  • Ref. ENI : LNEPDEVSECOPS
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é.
Avant-propos
  1. 1. Public concerné par le livre
  2. 2. Prérequis
  3. 3. Objectifs et fil conducteur
Introduction au DevSecOps
  1. 1. Qu'est-ce que le DevOps ?
    1. 1.1 Bob le développeur
    2. 1.2 Alice l'opérationnelle
    3. 1.3 À la recherche d'une (bonne) définition du DevOps
    4. 1.4 Récapitulatif de ce qu’est le DevOps et ouverture vers le DevSecOps
  2. 2. Le CALMS et les cinq piliers du DevOps
    1. 2.1 Le « c » de la culture
    2. 2.2 L’automatisation : une méthode indispensable
    3. 2.3 Le Lean ou le zéro déchet
    4. 2.4 En DevOps, il faut tout mesurer
      1. 2.4.1 L’enseignement du TDD (Test Driven Development)
      2. 2.4.2 Quelques exemples de mesures
    5. 2.5 Le sharing (partage) au centre de toute la culture DevOps
    6. 2.6 Et le DevSecOps ?
  3. 3. La transformation des équipes par le DevSecOps
    1. 3.1 Le business d'aujourd’hui
    2. 3.2 Le fonctionnement dans « l’ancien monde » en silos
    3. 3.3 Les premiers changements apportés par le DevOps
    4. 3.4 Quelques optimisations apportées par le DevSecOps
    5. 3.5 Quelques clés pour faire adopter le DevSecOps par les équipes
    6. 3.6 L’avènement des T-Shaped Peoples
  4. 4. La gestion des plateformes Cloud de manière sécurisée
    1. 4.1 Segmentation des environnements et des applications
    2. 4.2 Gestion des accès et des identités (IAM) sur le Cloud
    3. 4.3 Gestion et analyse des logs
    4. 4.4 Utilisation de dépôts et d’artefacts restreints
  5. 5. La transformation du business par le DevSecOps
    1. 5.1 Une nouvelle façon de travailler
    2. 5.2 La règle du IN : Input, Involve et Invest (contribution, implication et investissement)
    3. 5.3 Le « Shift Left »
    4. 5.4 Quelques statistiques
    5. 5.5 DevSecOps, business et sécurité
  6. 6. Conclusion
Intégration et déploiement continus (CI/CD)
  1. 1. Présentation générale de Git
    1. 1.1 Concepts fondamentaux de Git
      1. 1.1.1 Histoire de Git
      2. 1.1.2 Système de gestion de versions centralisé
      3. 1.1.3 Système de gestion de versions distribué
      4. 1.1.4 Gestionnaire de versions et SCM (Source Control Management)
    2. 1.2 Maîtrise des principaux termes utilisés dans Git
    3. 1.3 Le workflow (les différentes étapes) de Git
  2. 2. L’intégration continue
    1. 2.1 La phase de build
    2. 2.2 Les phases de tests
    3. 2.3 Les prérequis à une bonne intégration continue
      1. 2.3.1 Le dépôt de code permettant de faire du versionning
      2. 2.3.2 Le standard de code
      3. 2.3.3 Le serveur d’intégration continue
  3. 3. Créer votre propre pipeline CI (Continuous Integration)
    1. 3.1 Architecture de GitLab-CI
      1. 3.1.1 Serveur GitLab et Runners
      2. 3.1.2 Les Shared Runners de GitLab.com
      3. 3.1.3 Pourquoi utiliser GitLab-CI ?
    2. 3.2 Développement d’un simple script Python
    3. 3.3 Installation de Git sur Windows
    4. 3.4 Push du code sur votre dépôt GitLab
    5. 3.5 Mise en œuvre du lint avec GitLab-CI
    6. 3.6 Mise en œuvre de tests de sécurité avec GitLab-CI
  4. 4. Aller plus loin avec GitLab-CI
    1. 4.1 Exécuter plusieurs jobs en parallèle
    2. 4.2 Gérer les « secrets » et les données confidentielles
  5. 5. Le Continuous Delivery
    1. 5.1 Les bénéfices du Continuous Delivery
    2. 5.2 Les différences avec le déploiement continu
  6. 6. Déploiement continu
    1. 6.1 Quelques règles de bonnes pratiques
    2. 6.2 Méthode Blue/Green
    3. 6.3 Méthode Canary Releases
  7. 7. Conclusion
Utilisation de Docker en DevSecOps
  1. 1. Introduction à Docker
    1. 1.1 L’histoire de la création de Docker
    2. 1.2 Les différentes éditions de Docker
    3. 1.3 L’utilisation de Docker sur Windows
    4. 1.4 L’installation étape par étape de Docker Desktop sur Windows
      1. 1.4.1 Vérification de votre version de Windows
      2. 1.4.2 Installation de WSLv2 et du Linux Kernel Package
      3. 1.4.3 Installation de Docker Desktop
      4. 1.4.4 Vérification de l’installation de Docker
    5. 1.5 La méthode alternative en cas d'anciennes versions de Windows
      1. 1.5.1 Téléchargement et installation de Docker Toolbox
      2. 1.5.2 Exécution et vérification de l'installation de Docker Toolbox
    6. 1.6 L’installation étape par étape de Docker sur Linux
      1. 1.6.1 Désinstallation de toutes les anciennes versions
      2. 1.6.2 Utilisation du script de Docker
      3. 1.6.3 Ajout de l’utilisateur actuel au groupe de Docker
      4. 1.6.4 Vérification de l’installation de Docker
      5. 1.6.5 Installation de docker-compose
    7. 1.7 La plateforme Play With Docker
    8. 1.8 Le point sur la virtualisation
    9. 1.9 Les conteneurs et leurs spécificités
  2. 2. Commencer à utiliser des conteneurs Docker
    1. 2.1 Les commandes de base
      1. 2.1.1 La commande docker version
      2. 2.1.2 La commande docker info
      3. 2.1.3 La commande docker
    2. 2.2 Les premières manipulations sur les conteneurs
      1. 2.2.1 Obtenir la liste des conteneurs
      2. 2.2.2 Lancer un simple serveur web
      3. 2.2.3 Arrêter et supprimer les conteneurs
      4. 2.2.4 Afficher les logs et les processus d’un conteneur
      5. 2.2.5 Obtenir plus d’informations sur un conteneur
      6. 2.2.6 Obtenir le taux d’utilisation des ressources d’un conteneur
      7. 2.2.7 Aller à l’intérieur de son conteneur
    3. 2.3 Les actions effectuées par un « docker container run »
    4. 2.4 Le premier exercice pour apprendre à lancer des conteneurs
      1. 2.4.1 Instructions de l'exercice
      2. 2.4.2 Correction de l'exercice
  3. 3. Configurer et utiliser les réseaux et le DNS de Docker
    1. 3.1 L’utilisation du NAT (Network Address Translation)
      1. 3.1.1 Les adresses IPv4 privées
      2. 3.1.2 La fonction du NAT
    2. 3.2 Le fonctionnement réseau de Docker
      1. 3.2.1 Les bonnes pratiques réseau
      2. 3.2.2 Les différents types de réseaux sur Docker
    3. 3.3 Les commandes réseau de Docker
      1. 3.3.1 Obtenir les informations d’un réseau de Docker
      2. 3.3.2 Créer de nouveaux réseaux Docker
      3. 3.3.3 Attacher un conteneur à un réseau spécifique
  4. 4. Trouver et créer ses propres images Docker
    1. 4.1 Utilisation de Docker Hub
    2. 4.2 Analyse du cache d’une image Docker
      1. 4.2.1 La commande docker image history
      2. 4.2.2 Les couches d’une image Docker
    3. 4.3 Éléments basiques d’un fichier Dockerfile
      1. 4.3.1 Contenu d’un fichier Dockerfile
      2. 4.3.2 Exemple de Dockerfile
    4. 4.4 Commandes pour taguer et pousser ses images
      1. 4.4.1 Taguer une image
      2. 4.4.2 Pousser une image sur le repository distant
      3. 4.4.3 S’authentifier auprès de Docker Hub (ou un autre dépôt)
      4. 4.4.4 Builder son image Docker
  5. 5. Faire persister les données au sein des conteneurs
    1. 5.1 Durée de vie d’un conteneur
    2. 5.2 Utilisation des volumes dans Docker
      1. 5.2.1 Comprendre quand utiliser les volumes dans Docker
      2. 5.2.2 Utiliser la commande docker volume prune
      3. 5.2.3 Vérifier les volumes configurés sur un conteneur
      4. 5.2.4 Obtenir la liste des volumes
      5. 5.2.5 Obtenir des informations détaillées sur un volume
      6. 5.2.6 Créer un nouveau volume
    3. 5.3 Utilisation du bind mounting dans Docker
      1. 5.3.1 Comprendre quand utiliser les bind mounts dans Docker
      2. 5.3.2 La syntaxe du bind mounting
  6. 6. Déployer un site WordPress avec Docker
    1. 6.1 Utilisation de WordPress
    2. 6.2 Composition de WordPress
    3. 6.3 Intérêts d’utiliser WordPress avec Docker
    4. 6.4 Contenu de la partie Front-End de Word Press
      1. 6.4.1 Les principaux fichiers du Front-End
      2. 6.4.2 Les principaux répertoires du Front-End
    5. 6.5 Organisation de la base de données
    6. 6.6 Communication entre Front-End et base de données
    7. 6.7 Configuration des conteneurs
    8. 6.8 Création d’un site WordPress sur Play With Docker
  7. 7. Sécuriser l’hôte Docker
    1. 7.1 Les CIS Benchmarks
      1. 7.1.1 Introduction aux CIS Benchmarks
      2. 7.1.2 Utilisation de l’outil Docker Bench for Security
    2. 7.2 Les erreurs de configuration les plus communes
      1. 7.2.1 Vérifier que le démon Docker est correctement audité
      2. 7.2.2 Vérifier que les logs sont stockés sur un support distant centralisé
      3. 7.2.3 Vérifier que les conteneurs ne peuvent acquérir de nouveaux privilèges
    3. 7.3 L’utilisation de Lynis pour auditer son système
  8. 8. Sécuriser les conteneurs et les images Docker
    1. 8.1 Architecture d’un pipeline CI/CD pour les images Docker
    2. 8.2 Construction d’un fichier Dockerfile
    3. 8.3 Mise en place du système de lint du Dockerfile
      1. 8.3.1 Utilisation de l’outil Hadolint
      2. 8.3.2 Création du dépôt Git
      3. 8.3.3 Paramétrage de Git pour préparer le job de lint
      4. 8.3.4 Vérification du job de lint
      5. 8.3.5 Correction du fichier Dockerfile
    4. 8.4 Mise en place du job de build de l’image Docker
      1. 8.4.1 Création de la nouvelle branche
      2. 8.4.2 Donner la possibilité aux jobs de faire du Docker
      3. 8.4.3 Configuration du fichier .gitlab-ci.yml
      4. 8.4.4 Vérification et merge de la nouvelle branche
    5. 8.5 Mise en place du job de test de l’image Docker
      1. 8.5.1 Création de la nouvelle branche
      2. 8.5.2 Réflexion autour des tests à réaliser
      3. 8.5.3 Configuration du fichier .gitlab-ci.yml
      4. 8.5.4 Vérification et merge de la nouvelle branche
    6. 8.6 Mise en place des tests de sécurité
      1. 8.6.1 Présentation des différents outils
      2. 8.6.2 Création de la nouvelle branche
    7. 8.7 Utilisation de Dockle pour les tests de sécurité
      1. 8.7.1 Configuration du fichier .gitlab-ci.yml pour le job de Dockle
      2. 8.7.2 Analyse des résultats pour Dockle
      3. 8.7.3 Correction du fichier Dockerfile
    8. 8.8 Utilisation de Trivy pour les tests de sécurité
      1. 8.8.1 Configuration du fichier .gitlab-ci.yml pour le job de Trivy
      2. 8.8.2 Analyse des résultats pour Trivy
      3. 8.8.3 Correction du fichier Dockerfile
  9. 9. Conclusion
Utilisation de Kubernetes en DevSecOps
  1. 1. Introduction
  2. 2. La prise en main de Kubernetes
    1. 2.1 Principe de déploiement
    2. 2.2 Kubernetes nous aide à déployer plus facilement
    3. 2.3 Kubernetes et le système de « replicas »
    4. 2.4 Mise à l'échelle grâce à Kubernetes
  3. 3. Le concept de Cluster
    1. 3.1 Les composants de Kubernetes
    2. 3.2 Le Control Plane et les Worker nodes
    3. 3.3 L’installation de notre premier cluster Kubernetes avec Play With Kubernetes
      1. 3.3.1 Installer et paramétrer notre Master node
      2. 3.3.2 Installer et paramétrer nos deux Worker nodes
    4. 3.4 L’installation de notre premier cluster Kubernetes avec des serveurs Ubuntu 22.04 LTS
  4. 4. La sécurité de son cluster Kubernetes
    1. 4.1 CIS Benchmarks
    2. 4.2 Utilisation de Kube-Bench
      1. 4.2.1 Exécuter Kube-Bench
      2. 4.2.2 Corriger les erreurs les plus communes
    3. 4.3 Utilisation de Kube-hunter
  5. 5. Les Objets dans Kubernetes
    1. 5.1 YAML
    2. 5.2 Description et utilisation des Pods
      1. 5.2.1 Les Pods avec un seul conteneur
      2. 5.2.2 Les Pods avec plusieurs conteneurs
    3. 5.3 Création d'un premier Pod sur notre cluster
      1. 5.3.1 En utilisant la commande kubectl run
      2. 5.3.2 En utilisant un fichier YAML
    4. 5.4 Utilisation des ReplicaSets
    5. 5.5 Utilisation des Deployments
      1. 5.5.1 Créer un Deployment avec YAML
      2. 5.5.2 Mettre à jour la version de l'image
      3. 5.5.3 Effectuer un rollback
    6. 5.6 Fonctionnement réseau avec Kubernetes
    7. 5.7 Utilisation des services
      1. 5.7.1 Comprendre ce qu'est un service
      2. 5.7.2 Déployer notre premier service
      3. 5.7.3 Utiliser les services NodePort
      4. 5.7.4 Utiliser les services ClusterIP
      5. 5.7.5 Utiliser les services LoadBalancer
    8. 5.8 Contrôle de la disponibilité grâce aux Probes
      1. 5.8.1 Fonctionnement et intérêt du LivenessProbe
      2. 5.8.2 Utilisation du LivenessProbe via une requête HTTP
      3. 5.8.3 Utilisation du LivenessProbe via une commande
      4. 5.8.4 Utilisation du ReadinessProbe
  6. 6. Les tests de Lint sur les objets Kubernetes
    1. 6.1 Présentation de l'outil KubeLinter
    2. 6.2 Configuration de notre pipeline
      1. 6.2.1 Paramétrage de Git pour préparer le job de lint
      2. 6.2.2 Vérification du job de lint
    3. 6.3 Correction de notre Manifest
      1. 6.3.1 Ajouter un tag à l'image Docker utilisée
      2. 6.3.2 Utiliser le readOnlyRootFilesystem
      3. 6.3.3 Utiliser le runAsNonRoot
      4. 6.3.4 Configurer les limites de CPU et de mémoire
  7. 7. Les tests de sécurité sur les objets Kubernetes
    1. 7.1 Présentation de l'outil Checkov
    2. 7.2 Configuration de notre pipeline
      1. 7.2.1 Paramétrage de Git pour préparer le job de Checkov
      2. 7.2.2 Vérification du job de Checkov
    3. 7.3 Correction de notre Manifest
      1. 7.3.1 CKV_K8S_38: "Ensure that Service Account Tokens are only mounted where necessary"
      2. 7.3.2 CKV_K8S_31: "Ensure that the seccomp profile is set to docker/default or runtime/default"
      3. 7.3.3 CKV_K8S_40: "Containers should run as a high UID to avoid host conflict"
      4. 7.3.4 CKV_K8S_20: "Containers should not run with allowPrivilegeEscalation"
      5. 7.3.5 CKV_K8S_8 & CKV_K8S_9 : Configurer le LivenessProbe et le ReadinessProbe
      6. 7.3.6 CKV_K8S_43: "Image should use digest"
      7. 7.3.7 CKV_K8S_28: "Minimize the admission of containers with the NET_RAW capability"
      8. 7.3.8 CKV_K8S_21: "The default namespace should not be used"
  8. 8. Conclusion
Culture et connaissances en cybersécurité
  1. 1. Quelques éléments de vocabulaire
    1. 1.1 Le CIA (Confidentialité, Intégrité et Disponibilité)
    2. 1.2 Le SIEM (Security Information and Event Management)
      1. 1.2.1 Agrégation et collecte des données
      2. 1.2.2 Processus de corrélation des données
  2. 2. Les principales attaques informatiques
    1. 2.1 Les attaques par reconnaissance
    2. 2.2 Le Social Engineering
    3. 2.3 Le phishing
    4. 2.4 Les attaques par brute force
      1. 2.4.1 Les différentes catégories de jeux de caractères
      2. 2.4.2 Comment résister aux attaques par brute force ?
  3. 3. Les attaques DoS (Denial of Service)
    1. 3.1 Qu'est-ce qu'une attaque par déni de service
    2. 3.2 Attaque par SYN Flood
    3. 3.3 Attaque par UDP Flooding
    4. 3.4 Attaque de type Smurfing
  4. 4. Les composants de la cryptographie
    1. 4.1 Principe de fonctionnement du chiffrement
    2. 4.2 Chiffrement par substitution monoalphabétique
      1. 4.2.1 Fonctionnement d'un algorithme de substitution monoalphabétique
      2. 4.2.2 Reconnaissance des substitutions avec l'indice de coïncidence
    3. 4.3 Chiffrement par substitution polyalphabétique
    4. 4.4 Chiffrement par transposition
    5. 4.5 Principes du chiffrement symétrique
    6. 4.6 Clé publique, clé privée et chiffrement asymétrique
    7. 4.7 Fonctionnement des algorithmes de hash
    8. 4.8 Stockage des mots de passe avec les hash
    9. 4.9 Les Rainbow Tables
    10. 4.10 L'algorithme de hash MD5
    11. 4.11 L'algorithme de hash SHA1
    12. 4.12 Les algorithmes de hash de la famille SHA2 et SHA3
  5. 5. Les certificats digitaux et les PKI
    1. 5.1 Qu’est-ce qu’un certificat digital ?
    2. 5.2 Standards des clés publiques utilisés
    3. 5.3 Introduction aux PKI (Public Key Infrastructure)
    4. 5.4 Les acteurs de la certification
    5. 5.5 Utilisation du certificat par les différents acteurs
    6. 5.6 Organisation des PKI et chaîne de certification
  6. 6. Conclusion
Sécurité du développement et bonnes pratiques
  1. 1. Introduction
  2. 2. Application de la sécurité au SDLC (Software Development Life Cycle)
    1. 2.1 SDLC et méthodologie
      1. 2.1.1 Planification & recueil des besoins
      2. 2.1.2 Conception/design du produit
      3. 2.1.3 Codage et tests
      4. 2.1.4 Déploiement et maintenance
    2. 2.2 SDLC et sécurité des applications
  3. 3. SSDLC (Secure Software Development Life Cycle)
    1. 3.1 Mise en œuvre du Threat Modeling
      1. 3.1.1 Déployer le Threat Modeling en entreprise
      2. 3.1.2 Utiliser le modèle STRIDE
    2. 3.2 Contraintes de sécurité en Agilité
    3. 3.3 Publication d’une Secure Coding Checklist
      1. 3.3.1 Input & Output Validation
      2. 3.3.2 Authentication and Password Management
      3. 3.3.3 Session Management
      4. 3.3.4 Cryptographic Practices
      5. 3.3.5 Data Protection & Communication Security
      6. 3.3.6 System and Database configuration and security
      7. 3.3.7 Files and memory management
    4. 3.4 Architecture d'une application Cloud sécurisée
      1. 3.4.1 Menaces et responsabilité partagée
      2. 3.4.2 Bénéfices du Cloud pour la sécurité des applications
    5. 3.5 Utilisation de différents environnements pour sécuriser le déploiement
      1. 3.5.1 Notions générales autour des environnements
      2. 3.5.2 Exemple avec une application web
  4. 4. TOP 10 de l'OWASP
    1. 4.1 Introduction au TOP 10 de l'OWASP
    2. 4.2 Présentation et installation de l’outil WebGoat
    3. 4.3 A1 Broken Access Control
      1. 4.3.1 Challenge numéro 2
      2. 4.3.2 Challenge numéro 3
      3. 4.3.3 Challenge numéro 4
    4. 4.4 A2 Cryptographic Failures
      1. 4.4.1 Challenge numéro 2
      2. 4.4.2 Challenge numéro 3
      3. 4.4.3 Challenge numéro 4
      4. 4.4.4 Challenge numéro 6
    5. 4.5 A3 Injection
      1. 4.5.1 Challenge numéro 2
      2. 4.5.2 Challenge numéro 3
      3. 4.5.3 Challenge numéro 4
      4. 4.5.4 Challenge numéro 5
      5. 4.5.5 Challenge numéro 9
      6. 4.5.6 Challenge numéro 10
      7. 4.5.7 Challenge numéro 11
      8. 4.5.8 Challenge numéro 12
  5. 5. Gestion des évènements de votre infrastructure
    1. 5.1 Mettre en place un système de centralisation des logs
    2. 5.2 Créer des logs efficaces pour vos applications
    3. 5.3 Générer des logs en Python
      1. 5.3.1 Introduction au module Logging
      2. 5.3.2 Utilisation du module
  6. 6. Supervision de la stack applicative avec Prometheus et Grafana
    1. 6.1 Supervision et métriques
    2. 6.2 Utilisation de Prometheus et Grafana pour superviser ses services
      1. 6.2.1 Installer Docker, Grafana et Prometheus sur Ubuntu 22.04 LTS
      2. 6.2.2 Accéder à la visualisation sur Grafana
      3. 6.2.3 Exporter vos métriques systèmes dans Prometheus
      4. 6.2.4 Exporter vos métriques applicatives dans Prometheus
  7. 7. Conclusion
Implémenter le DevSecOps en entreprise
  1. 1. Introduction
  2. 2. Définir des objectifs de sécurité au sein d’une organisation
    1. 2.1 Utiliser le CIA en entreprise
    2. 2.2 Identifier les éléments les plus critiques de votre SI
    3. 2.3 Mettre en œuvre des métriques et des propriétés
    4. 2.4 Diffuser la connaissance auprès des collaborateurs
  3. 3. Développer une culture de la cybersécurité
    1. 3.1 Mise à disposition d'outils d'entraînement pour les développeurs
    2. 3.2 Créer des Security Champions au sein des équipes
    3. 3.3 Formation des collaborateurs non techniques à la cybersécurité
    4. 3.4 Organisation de post-mortem « blameless » lors d’incidents
  4. 4. Implémenter un dépôt d'images et d'artefacts
    1. 4.1 Utilisation d’un dépôt d'artefacts
    2. 4.2 Utilisation du GitLab Container Registry
      1. 4.2.1 Pusher nos images sur le GitLab Container Registry
      2. 4.2.2 Utiliser les images du GitLab Container Registry
      3. 4.2.3 Mettre en place une politique du cycle de vie des images
  5. 5. Définir les bons processus de déploiement d’une application
    1. 5.1 Mise en œuvre de processus de décommissionnement
    2. 5.2 Automatisation du déploiement
    3. 5.3 Solutions de déploiement avec Kubernetes
  6. 6. Gérer de façon sécurisée le versionning du code
    1. 6.1 Scanner les dépôts Git à la recherche de secrets
    2. 6.2 Utiliser des branches et des tags protégés
    3. 6.3 Signer vos commits à l'aide des clés SSH
  7. 7. Sécuriser un serveur Nginx
    1. 7.1 Effectuer un premier scan de serveur Nginx
    2. 7.2 Implémenter l'anti-clickjacking
    3. 7.3 Implémenter l'anti Drive-By Download
  8. 8. Sécuriser un serveur web Apache
    1. 8.1 Effectuer un premier scan de serveur Apache
    2. 8.2 Implémenter l'anti-clickjacking et l'anti Drive-By Download
    3. 8.3 Désactiver les méthodes HTTP non utilisées
  9. 9. Conclusion
Analyse de sécurité en DevSecOps
  1. 1. Introduction
  2. 2. SCA (Software Composition Analysis)
    1. 2.1 État de l'utilisation de l'open source
    2. 2.2 Utilisation du SCA directement dans votre IDE
    3. 2.3 SCA avec PHP
    4. 2.4 SCA avec Golang
    5. 2.5 Quelques autres outils pour le SCA
  3. 3. SAST (Static Application Security Testing)
    1. 3.1 Introduction au SAST
    2. 3.2 SAST avec Golang
    3. 3.3 SAST générique avec Semgrep
    4. 3.4 Quelques autres outils pour le SAST
  4. 4. DAST (Dynamic Application Security Testing)
    1. 4.1 Introduction au DAST
    2. 4.2 Zed Attack Proxy
    3. 4.3 Utilisation de Zed sur une application vulnérable
    4. 4.4 Quelques autres outils pour le DAST
  5. 5. Sécurité de l'Infrastructure as Code
    1. 5.1 Introduction à Terraform
    2. 5.2 Déploiement d'une topologie sur Google Cloud Platform avec Terraform
      1. 5.2.1 Configuration initiale de GCP
      2. 5.2.2 Création de trois VM Compute Engine avec Terraform
    3. 5.3 Vérification de la sécurité des fichiers Terraform
  6. 6. Développement d'une application Python au sein d'un pipeline DevSecOps
    1. 6.1 Objectifs
    2. 6.2 Développer une application Web Python avec Flask
    3. 6.3 Vérifier la sécurité et la syntaxe du code
      1. 6.3.1 Vérification de la syntaxe par rapport au Flake8
      2. 6.3.2 Exécution du SAST avec Bandit
      3. 6.3.3 Vérification du SCA avec Safety
    4. 6.4 Construire et sécuriser notre image Docker
      1. 6.4.1 Lint du fichier Dockerfile avec Hadolint
      2. 6.4.2 Build de l'image Docker
      3. 6.4.3 Tests de l'image Docker
      4. 6.4.4 Premiers tests de sécurité de l'image avec Dockle
      5. 6.4.5 Seconds tests de sécurité de l'image avec Trivy
      6. 6.4.6 Terminer le pipeline avec un push de la release
    5. 6.5 Construire notre déploiement Kubernetes
      1. 6.5.1 Effectuer le lint de notre déploiement
      2. 6.5.2 Corriger notre déploiement
      3. 6.5.3 Effectuer l'analyse de sécurité de notre déploiement
      4. 6.5.4 Corriger les alertes de sécurité
    6. 6.6 Construire et scanner notre service Kubernetes
    7. 6.7 Finaliser notre pipeline
    8. 6.8 Récapitulatif des différents fichiers du dépôt
      1. 6.8.1 Fichier .docker.gitlab-ci.yml
      2. 6.8.2 Fichier .gitlab-ci.yml
      3. 6.8.3 Fichier .kubernetes.gitlab-ci.yml
      4. 6.8.4 Fichier Dockerfile
      5. 6.8.5 Fichier deployment.yaml
      6. 6.8.6 Fichier main.py
      7. 6.8.7 Fichier requirements.txt
      8. 6.8.8 Fichier service.yaml
      9. 6.8.9 Fichier templates/password.html
  7. 7. Conclusion
  8. Index
Auteur : Jordan  ASSOULINE

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

Nos nouveautés

voir plus