CybersécuritéDevOpsCI/CD

DevSecOps : intégrer la sécurité dans le pipeline sans ralentir les livraisons

30 décembre 2025 · Sphinx-Digital

Le DevSecOps a mauvaise réputation dans certaines équipes de développement : des scans qui ralentissent les pipelines, des faux positifs à la pelle, et des rapports que personne ne lit. Cette mauvaise expérience vient d’une mise en œuvre incorrecte.

Principe fondamental : fast fail, silent pass

Un contrôle de sécurité dans un pipeline doit :

  1. Échouer rapidement si un problème grave est détecté (et bloquer le build)
  2. Passer silencieusement si tout est en ordre (aucun bruit pour l’équipe)

Un scan qui génère 500 warnings “Low” que personne ne regarde est du bruit, pas de la sécurité.

SAST : l’analyse statique dans la CI

# .gitlab-ci.yml
sast:
  stage: test
  image: python:3.11
  script:
    - pip install semgrep
    - semgrep --config=p/owasp-top-ten --error --json src/ | jq '.results | length'
  rules:
    - if: $CI_MERGE_REQUEST_ID

Semgrep est rapide (secondes, pas minutes) et précis. Configurez-le uniquement sur les règles HIGH/CRITICAL pour éviter les faux positifs. Limitez aux MRs pour ne pas bloquer les branches de feature.

SCA : les vulnérabilités dans les dépendances

dependency-scan:
  stage: test
  script:
    - pip install safety
    - safety check --full-report --json > safety-report.json
    - python -c "
        import json, sys
        report = json.load(open('safety-report.json'))
        criticals = [v for v in report['vulnerabilities'] if v['severity'] == 'critical']
        if criticals:
            print(f'{len(criticals)} vulnérabilités critiques trouvées')
            sys.exit(1)
      "
  artifacts:
    reports:
      dependency_scanning: safety-report.json

Ne bloquez que sur les CVE CRITICAL — les LOW et MEDIUM vont dans un rapport pour revue hebdomadaire.

Scan d’image Docker : Trivy en pratique

container-scan:
  stage: build
  script:
    - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
    - trivy image 
        --exit-code 1 
        --severity HIGH,CRITICAL 
        --ignore-unfixed
        $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA

L’option --ignore-unfixed ne bloque que sur les CVE pour lesquelles un correctif existe. Sans cette option, vous blocquez sur des vulnérabilités pour lesquelles vous n’avez rien à faire.

Secrets scanning : éviter les fuites de credentials

secrets-detection:
  stage: test
  script:
    - gitleaks detect --source . --exit-code 1
  rules:
    - if: $CI_MERGE_REQUEST_ID

Gitleaks détecte les secrets dans le code (clés API, tokens, mots de passe). Intégrez-le systématiquement sur les MRs — c’est là que les fuites arrivent le plus souvent.

La politique de sécurité-as-code

Centralisez vos politiques de sécurité dans un dépôt dédié (.security-policies) et incluez-les dans tous vos pipelines. Quand une politique change, elle se propage à tous les projets qui l’incluent.

Notre formation Cybersécurité aborde DevSecOps avec des labs sur pipelines réels.