Aller au contenu
Culture DevOps high
🚧 Section en cours de réécriture — Le contenu est en cours de restructuration et peut évoluer.

Shift-Left Sécurité

11 min de lecture

Le Shift-Left Sécurité consiste à intégrer les contrôles de sécurité le plus tôt possible dans le cycle de développement. Plutôt que de découvrir les failles en production (ou pire, après une attaque), on les détecte dès l’écriture du code. C’est l’application du principe DevOps « fail fast » à la sécurité.

Les études (IBM, Ponemon Institute) convergent : plus une faille est découverte tard, plus elle coûte cher. Ce n’est pas linéaire, c’est exponentiel.

Phase de découverteCoût relatifExemple concret
Design / Architecture1xRevue de conception : 2h de discussion
Développement5xRefactoring d’un module : 1 jour
Tests / QA10xCorrection + régression : 3 jours
Staging / Pré-prod15xRollback + correctif urgent : 1 semaine
Production30-100xIncident + forensics + communication : semaines

Le shift-left qualité (TDD, tests unitaires) est aujourd’hui la norme. Personne n’imagine livrer sans tests automatisés. Le shift-left sécurité suit la même logique :

Shift-Left QualitéShift-Left Sécurité
Tests unitairesSAST dans l’IDE
Code review fonctionnelSecurity review sur les PR
Tests d’intégrationDAST en environnement de test
Tests E2EPentest périodique
Lint / formatageDétection de secrets en pre-commit

La différence ? Le shift-left sécurité est moins mature dans la plupart des organisations. C’est une opportunité de progression.

Le shift-left ne se limite pas à « installer un scanner ». C’est une approche qui couvre tout le cycle de développement.

Le Threat Modeling est le shift-left ultime : identifier les menaces avant d’écrire une seule ligne de code. C’est la phase où le coût de correction est minimal (1x).

Quand le faire ?

  • À chaque nouvelle fonctionnalité importante
  • Lors de l’intégration d’un service externe
  • Quand les flux de données changent significativement

Questions clés :

  • Quelles données sensibles sont manipulées ?
  • Quels sont les points d’entrée (API, formulaires, fichiers) ?
  • Quelles menaces STRIDE s’appliquent ?

→ Voir Menaces, risques et vulnérabilités pour les méthodologies détaillées.

Le shift-left réussit quand il aide les développeurs, pas quand il les bloque. La différence entre adoption et rejet tient souvent à l’expérience utilisateur.

CritèreObjectifSi non respecté
RapiditéSAST IDE < 5s, CI < 5minContourné ou désactivé
Précision< 10% faux positifsAlertes ignorées
ActionnableExplication + fix suggéréFrustration, escalade
ContextuelDans l’IDE/PR, pas un rapport séparéFeedback non lu

Le shift-left est un marathon, pas un sprint. Une implémentation trop agressive sera rejetée.

  1. Semaine 1-2 : Détection de secrets

    Commencez par le plus critique et le moins controversé. Personne ne défend le droit de committer des secrets.

    Fenêtre de terminal
    # Installation
    pip install pre-commit
    pre-commit install
    # Test immédiat
    pre-commit run gitleaks --all-files
  2. Semaine 3-4 : SAST dans l’IDE

    Installez l’extension Semgrep (ou équivalent) dans les IDE de l’équipe. Configurez uniquement les règles critiques.

    • VS Code : Extension « Semgrep »
    • JetBrains : Plugin « Semgrep »
    • Configurez avec p/security-audit uniquement
  3. Mois 2 : SAST en CI (mode warning)

    Ajoutez le scan en CI, mais en mode warning. Le pipeline ne bloque pas, il informe.

    - name: SAST scan
    run: semgrep --config p/security-audit --error # Mode strict viendra plus tard
    continue-on-error: true # Ne bloque pas encore
  4. Mois 3 : Durcissement progressif

    Une fois l’équipe habituée, passez en mode blocking sur les vulnérabilités critiques.

    - name: SAST scan
    run: semgrep --config p/security-audit --severity ERROR --error
  5. Continu : Formation et ajustement

    • Sessions mensuelles sur les nouvelles vulnérabilités
    • Revue des faux positifs pour affiner la configuration
    • Ajout progressif de règles selon la maturité

Ce workflow implémente un shift-left progressif avec trois niveaux de gates :

.github/workflows/security.yml
name: Security Shift-Left
on:
pull_request:
branches: [main, develop]
jobs:
# Gate 1 : Secrets (bloquant immédiatement)
secrets:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Detect secrets
uses: gitleaks/gitleaks-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Gate 2 : SAST (bloquant sur critical/high)
sast:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: SAST - Critical only (blocking)
uses: returntocorp/semgrep-action@v1
with:
config: p/security-audit
generateSarif: true
env:
SEMGREP_RULES: "--severity ERROR"
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: semgrep.sarif
# Gate 3 : Dépendances (warning sur medium, block sur critical)
dependencies:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Scan dependencies
run: |
# Block on critical
trivy fs --severity CRITICAL --exit-code 1 .
# Warn on high (ne bloque pas)
trivy fs --severity HIGH --exit-code 0 .
PiègeConséquenceSolution
Tout bloquer dès le débutRejet massif, contournementsCommencer en mode warning
Trop de faux positifsAlertes ignorées, fatigueAffiner la config, moins de règles
Outils lents (> 10 min)DésactivationScans parallèles, règles légères
Sécurité en silo« C’est leur problème »Security champions dans chaque équipe
Pas de formationAlertes incomprisesSessions régulières, exemples concrets
Règles non maintenuesDrift, obsolescenceRevue trimestrielle de la config

Le shift-left sécurité n’est pas une révolution technique, c’est un changement de culture. Les outils sont disponibles, la vraie difficulté est l’adoption.

Les clés du succès :

  • Feedback rapide (secondes, pas minutes)
  • Résultats actionnables (pas juste « vulnérabilité détectée »)
  • Progression graduelle (warning → blocking)
  • Formation continue des développeurs
  • Ownership partagé (pas « l’équipe sécu s’en occupe »)