Table des Matières
-
Objectifs et Résumé de la Leçon
-
Pourquoi Sécuriser l’Environnement de Développement ?
-
Configuration Sécurisée d’un IDE
-
Paramètres de Base, Extensions de Sécurité
-
Plugins d’Analyse Statique (Fortify, SonarLint, etc.)
-
Hooks de Contrôle et Formatage Automatique
-
-
Bonnes Pratiques sur Git et la Traçabilité du Code
-
Configuration de Git, Signatures de Commit
-
Hooks Git Pré-Commit, Pré-Push pour des Scans Sécuritaires
-
Gestion des Branches, Politiques de Merge Request
-
-
Gestion des Secrets et des Identifiants
-
Problématique : Fuite de Clés ou de Credentials
-
Méthodes de Stockage (Vault, Pass, Git-crypt)
-
Contrôles Automatisés : Scans de Secrets dans le Code
-
-
Intégration de Fortify (OpenText) dès l’Écriture du Code
-
Présentation de Fortify et ses Capacités (SAST)
-
Exemples d’Installation et d’Exécution en Local
-
Analyse Automatisée : Remontée d’Alerte dans l’IDE et le Pipeline
-
-
Études de Cas Professionnels
-
Exemple 1 : Développeur Configurant Visual Studio Code et Fortify dans un Projet Python
-
Exemple 2 : Pipeline Jenkins Intégrant Fortify au Momenta de la Phase Build
-
-
Exercices Pratiques et Corrigés
-
Exercice 1 : Configurer Git pour la Sécurité (Hooks, Signatures)
-
Exercice 2 : Installer Fortify et Analyser un Petit Projet Python
-
Exercice 3 : Gestion des Secrets avec un Outil (ex. Git-crypt, pass, ou Vault)
-
-
Quiz de Révision
-
Conclusion et Prévisualisation de la Leçon 5
1. Objectifs et Résumé de la Leçon
Objectifs
-
Découvrir les bonnes pratiques de sécurisation d’un IDE (Visual Studio Code, PyCharm, etc.), ainsi que l’ajout de plugins de sécurité.
-
Configurer Git pour assurer la traçabilité et éviter les fuites de secrets (hooks pré-commit, signatures GPG).
-
Gérer et protéger les secrets (clés, tokens, credentials), notamment pour ne pas les commiter par erreur.
-
Intégrer Fortify (OpenText) dans la phase de développement pour détecter précocement les vulnérabilités.
Résumé
Cette leçon montre comment mettre en place un environnement de développement sécurisé et de quelle manière Fortify (solution SAST) peut s’exécuter très tôt, depuis l’IDE ou via des hooks Git. On verra également la gestion des secrets et la configuration de Git (signatures, hooks) pour améliorer la confiance et la traçabilité. Des exemples concrets et des exercices permettront de tester l’installation de Fortify, l’utilisation de vaults pour les secrets, ou la configuration de Git.
2. Pourquoi Sécuriser l’Environnement de Développement ?
Dans un pipeline DevSecOps, on pense parfois d’abord aux pipelines CI/CD, à Docker, etc. Mais la sécurité doit commencer dès l’environnement de développement, là où le code est écrit. Protéger cet environnement permet :
-
D’éviter les fuites de secrets dans le code source.
-
De détecter les vulnérabilités pendant la saisie ou juste après un commit (shift left).
-
D’assurer la traçabilité et l’authenticité des commits (signatures GPG).
-
De faciliter le respect de la politique de sécurité.
3. Configuration Sécurisée d’un IDE
Paramètres de Base, Extensions de Sécurité
Exemple : Visual Studio Code
-
Installation : Charger l’extension Python, configurer l’interpréteur.
-
Extensions de Sécurité :
-
SonarLint ou Semgrep LSP pour alerter en temps réel.
-
Contrôle orthographique ou linting (Flake8) pour éviter les coquilles.
-
Plugin GPG pour signer les commits.
-
Plugins d’Analyse Statique (Fortify, SonarLint, etc.)
-
Fortify (OpenText) propose des plugins intégrés pour certains IDE.
-
Avantage : Détecter et corriger les failles logiques (injections, buffer overflow potentiels) avant même le commit.
-
On peut configurer des “rules” spécifiques selon le langage, par exemple Python, Java, etc.
Hooks de Contrôle et Formatage Automatique
-
Un hook pré-commit peut exécuter un script de vérification.
-
Ex. : script s’assurant qu’aucun secret en clair n’est commité (avec gitleaks).
-
-
Formatage automatique (Black en Python) aide à respecter des conventions de code, facilitant la lisibilité et la détection d’anomalies.
4. Bonnes Pratiques sur Git et la Traçabilité du Code
Configuration de Git, Signatures de Commit
-
Signatures GPG : Permettent de prouver que l’auteur du commit est bien celui qu’il prétend être, évitant les commits malveillants.
-
Fichier .gitconfig : Ajuster user.name, user.email, et key GPG.
-
Bonne Pratique : “Une fonctionnalité = une branche = une merge request”.
Hooks Git Pré-Commit, Pré-Push pour des Scans Sécuritaires
-
Pré-commit : Lancement de Semgrep ou d’un script Fortify local.
-
Pré-push : Exécution d’un scan rapide sur les dépendances.
-
Exemples d’outils : gitleaks pour déceler des secrets, checkov ou tfsec pour IaC si le repo contient des fichiers Terraform.
Gestion des Branches, Politiques de Merge Request
-
Établir des règles : pas de merge si un scan SAST détecte des vulnérabilités critiques non corrigées.
-
Obligations d’approbation par un reviewer (Sec champion ou autre) pour toute modification de la configuration sensible.
-
On peut configurer un “pull request check” : exécution de Fortify + container scanning.
5. Gestion des Secrets et des Identifiants
Problématique : Fuite de Clés ou de Credentials
Les fuites de secrets dans un repo public figurent parmi les principales causes de failles. Un simple token d’API commité peut exposer la plateforme à un usage non autorisé.
Méthodes de Stockage (Vault, Pass, Git-crypt)
-
HashiCorp Vault : Outil complet pour stocker et gérer dynamiquement les credentials, rotater les clés.
-
pass (Linux Password Store) : Système de chiffrement basé sur GPG.
-
git-crypt : Permet de chiffrer certains fichiers dans un repo Git, utiles pour .env ou credentials.
Contrôles Automatisés : Scans de Secrets dans le Code
-
Gitleaks, Trufflehog, ou des plugins GitHub/GitLab qui détectent les patterns (ex. format de clés AWS).
-
Possible de bloquer la pipeline si un secret en clair est trouvé.
6. Intégration de Fortify (OpenText) dès l’Écriture du Code
Présentation de Fortify et ses Capacités (SAST)
Fortify (aujourd’hui sous OpenText) est une solution de Static Application Security Testing reconnue, capable d’analyser plusieurs langages :
-
Corrélation des vulnérabilités (ex. injection, XSS) selon un modèle de flux de données.
-
Rapports détaillés avec priorisation (critique, élevé, moyen, faible).
-
Plugins IDE (Visual Studio Code, Eclipse, IntelliJ) pour la détection en temps réel.
Exemples d’Installation et d’Exécution en Local
-
Installation du plugin Fortify pour VS Code ou PyCharm.
-
Configuration d’un “ruleset” pour Python (Fortify propose un ruleset standard).
-
Lancement de l’analyse sur un petit projet Python.
-
Lecture du rapport et correction des vulnérabilités, par exemple injection de commande si on utilise
os.system()sans validation.
Analyse Automatisée : Remontée d’Alerte dans l’IDE et le Pipeline
-
En plus de l’analyse locale, on peut configurer un job Jenkins ou GitLab CI :
-
Si Fortify détecte une vulnérabilité haute, la pipeline échoue. Le développeur doit corriger puis re-committer.
7. Études de Cas Professionnels
Exemple 1 : Développeur Configurant Visual Studio Code et Fortify dans un Projet Python
-
Contexte : Une startup manipule des données client confidentielles.
-
Action : Installation du plugin Fortify dans VS Code, configuration du ruleset de base pour Python.
-
Résultat : Le dev voit directement les alertes de vulnérabilité pendant le codage, corrige sur-le-champ. Moins de retouches en fin de cycle.
Exemple 2 : Pipeline Jenkins Intégrant Fortify au Moment de la Phase Build
-
Contexte : Une PME a un pipeline Jenkins, code Python, container Docker.
-
Pipeline :
-
Stage “Build” (docker build)
-
Stage “SAST” (Fortify scanne le code)
-
Stage “Test unitaires + container scanning (Trivy)”
-
Stage “Deploy”
-
-
Avantages : Des failles logiques (ex. injection, buffer overflow potentiel) détectées immédiatement. Gains de temps et de sérénité avant déploiement.
8. Exercices Pratiques et Corrigés
Exercice 1 : Configurer Git pour la Sécurité (Hooks, Signatures)
Objectif : Mettre en place un hook pré-commit qui exécute un script de check basique, et configurer la signature GPG.
-
Consigne :
-
Installer GPG, créer une clé.
-
Configurer Git pour signer les commits.
-
Créer un hook pré-commit qui lance par ex.
semgrepsur le dossier src.
-
-
Corrigé :
-
Montre la commande
git config commit.gpgsign true, la config du.git/hooks/pre-commit, etc. -
Exemple de script :
-
Exercice 2 : Installer Fortify et Analyser un Petit Projet Python
Objectif : Découvrir Fortify (OpenText) et lancer une analyse sur un répertoire.
-
Consigne :
-
Installer Fortify (ou utiliser une version d’évaluation).
-
Configurer un ruleset Python (si dispo).
-
Scanner un mini-projet de 2-3 fichiers.
-
-
Corrigé :
-
Expliquer la commande basique :
fortify_scan --source . --ruleset python -
Montrer le rapport HTML ou XML, commenter les alertes (injection, path traversal).
-
Exercice 3 : Gestion des Secrets avec un Outil (Vault, Git-crypt)
Objectif : Découvrir un outil de management de secrets.
-
Consigne :
-
Choisir HashiCorp Vault (ou Git-crypt).
-
Stocker un token d’API dans Vault, récupérer-le dynamiquement dans un script.
-
Vérifier que le token n’apparaît plus en clair dans le repo.
-
-
Corrigé :
-
Fournir un exemple de
vault kv put secret/api token=123456. -
Script Python
vault token lookupou usage de l’API REST. -
Montre l’output de
git status(aucune fuite de token).
-
9. Quiz de Révision
-
Citez deux bonnes pratiques pour sécuriser la configuration de Git.
-
Pourquoi est-il recommandé d’exécuter des hooks pré-commit ou pré-push ?
-
Donnez un exemple de système de gestion des secrets.
-
Qu’est-ce que Fortify (OpenText) et dans quel type d’analyse s’illustre-t-il particulièrement ?
-
Comment assurer que les identifiants critiques (API keys) ne soient jamais committés dans le code ?
(Vous pouvez proposer 5 à 10 questions au total.)
10. Conclusion et Prévisualisation de la Leçon 5
Conclusion de la Leçon 4
Nous avons vu comment sécuriser l’environnement de développement : configurer l’IDE (VS Code, PyCharm) avec des plugins de détection d’anomalies, mettre en place des hooks Git pour refuser les commits non conformes, gérer et protéger les secrets, et intégrer Fortify (OpenText) pour une analyse statique robuste. Les exemples démontrent qu’une bonne configuration initiale réduit énormément les risques de fuites et de vulnérabilités.
Prévisualisation de la Leçon 5
Dans la Leçon 5 (50 pages), nous aborderons la gestion des dépendances et la sécurité des packages open source. Nous découvrirons notamment comment Nexus ou Artifactory peuvent servir de repository manager, et comment effectuer un scanning des librairies tiers (Software Composition Analysis) pour éviter d’introduire des failles via la supply chain.