RessourcesDEVOPS · SÉCURITÉ

Sécurité et conformité dans les pipelines CI/CD

DevSecOps, SAST/SCA, IaC scanning et SBOM pour détecter les vulnérabilités au moment où le code est écrit.

STRALYA15 min de lecturejuillet 2026

Pourquoi intégrer la sécurité au pipeline CI/CD plutôt que la traiter après

La sécurité traditionnelle intervient souvent en fin de cycle, après le déploiement, quand corriger une vulnérabilité devient coûteuse et bloquante. Intégrer les contrôles de sécurité directement dans le pipeline CI/CD, une approche appelée DevSecOps, change radicalement cette dynamique. Les vulnérabilités sont détectées et corrigées au moment où le code est écrit et commité, pas des semaines ou des mois plus tard. Cela réduit drastiquement le coût des corrections, car un développeur qui reçoit immédiatement un feedback sur une dépendance non conforme peut la corriger en quelques minutes, tandis qu'une vulnérabilité découverte en production peut nécessiter des patches d'urgence, de la coordination multi-équipes et des déploiements hors processus. Du point de vue de la conformité, intégrer les audits dans le pipeline crée une traçabilité continue et documentée de chaque changement. Au lieu de dépendre de vérifications manuelles et de rapports rétrospectifs, vous disposez d'un journal automatisé de qui a fait quoi, quand et avec quels contrôles de sécurité validés. Cela transforme aussi la culture d'équipe : les développeurs deviennent responsables de la sécurité du code qu'ils écrivent, plutôt que de la voir comme une charge ajoutée par un tiers à la fin du processus.

Les trois piliers de la sécurité dans un pipeline CI/CD

Pour que la sécurité du pipeline soit efficace et praticable, elle repose sur trois piliers interconnectés: la détection, la conformité et l'audit. La détection concerne le scanning automatisé des artefacts à chaque étape (code source, dépendances, binaires). Un pipeline doit scanner le code à la recherche de patterns dangereux (via SAST, Static Application Security Testing), identifier les dépendances avec des vulnérabilités connues (via composition analysis ou SCA, Software Composition Analysis), et vérifier les images de conteneurs pour détecter des vulnérabilités ou des artefacts non autorisés (via scanning d'images). La conformité garantit que chaque changement respecte les règles métier et réglementaires. Cela inclut l'infrastructure-as-code (IaC) scanning, qui valide que votre configuration Terraform ou CloudFormation respecte les bonnes pratiques de sécurité AWS, l'accès aux secrets, et la conformité aux standards internes. L'audit crée une piste écrite. Chaque étape du pipeline doit être tracée: qui a déclenché le déploiement, quels contrôles de sécurité ont été appliqués, quels résultats ont été enregistrés, et a-t-on dérogé à une règle ou contourné une étape? Ces trois piliers ne sont pas isolés. Une image Docker non conforme (pilier 2) doit être détectée (pilier 1) et l'écart documenté (pilier 3) pour que vous puissiez le corriger et l'auditer.

Intégrer les scans SAST et SCA sans créer des goulots

Les scans SAST (Static Application Security Testing) et SCA (Software Composition Analysis) sont les premières barrières automatisées d'un pipeline sécurisé, mais si mal configurés, ils peuvent paralyser la livraison. Un scan SAST analyse le code source à la recherche de patterns dangereux: injections SQL, hardcoding de credentials, validation insuffisante d'entrées, etc. Outils populaires incluent Semgrep, SonarQube ou Snyk Code. Le piège courant est d'activer TOUS les règles avec un seuil de zéro tolérance, ce qui noie l'équipe dans des faux positifs et ralentit chaque commit. La bonne pratique est de commencer par un ensemble de règles critiques (les vulnérabilités réellement bloquantes pour votre contexte) et de progressivement élargir. Les faux positifs doivent être facilement suppressibles via une annotation de code (par exemple un commentaire) pour que les développeurs n'apprennent pas à ignorer les alertes légitimes. Un SCA scan examine les dépendances (packages npm, pip, Maven, etc.) et cross-check chaque version contre des bases de données de vulnérabilités connues (NVD, Snyk DB, etc.). Ici aussi, la majorité des alertes sont souvent des faux positifs: une dépendance avec une CVE connue n'est pas forcément exploitable si votre application n'utilise pas la fonction vulnérable. L'approche de Stralya est d'intégrer ces scans en mode non-bloquant initialement (warning seulement), puis progressivement passer en mode bloquant une fois que vous avez nettoyé les dépendances critiques. Techniquement, les scans doivent tourner en parallèle dans le pipeline, pas en séquence, pour ne pas multiplier les délais. Sur AWS, cela signifie utiliser CodeBuild avec plusieurs jobs parallèles ou déléguer à un orchestrateur comme Jenkins avec des agents distribués.

Validation infrastructure-as-code et gestion des secrets

Votre infrastructure (serveurs, bases de données, réseaux) est définie dans du code (Terraform, CloudFormation) qui doit être aussi sécurisée que votre code applicatif. Une fuite courante: oublier de chiffrer les volumes EBS, oublier de configurer les security groups avec les règles les plus restrictives, ou exposer accidentellement une base de données RDS sur Internet. Des outils comme Checkov, Bridgecrew ou TerraformCloud/Sentinel scannent votre IaC avant qu'elle soit appliquée et bloquent les configurations dangereuses. Le pipeline doit valider la configuration IaC à la fois lors du commit du code (dans la phase CI) et au moment du plan d'application (terraform plan) avec des gates de sécurité. Concernant les secrets (clés d'API, identifiants de base de données, certificats SSL), ils ne doivent JAMAIS être stockés en clair dans le code ou dans le pipeline. AWS propose AWS Secrets Manager et Parameter Store; une bonne pratique est de referencer les secrets depuis le pipeline (par exemple via une étape CodeBuild qui récupère le secret du Parameter Store, plutôt que de hardcoder la valeur). Les scans de secrets (outils comme Detect Secrets, Trivy, TruffleHog) doivent tourner sur chaque commit pour détecter les secrets accidentellement commités et empêcher le push. Combiné avec une politique GitHub/GitLab qui scanne les push avant qu'ils n'atteignent la branche protégée, cela crée une double barrière très efficace.

Scanning d'images de conteneurs et gestion du registre

Si vous déployez des conteneurs (Docker), chaque image doit être scannée avant d'atteindre la production. Une image malveillante ou mal configurée peut exposer des vulnérabilités système (version d'OS obsolète, librairies C dangereuses, etc.) indépendamment du code applicatif. AWS ECR (Elastic Container Registry) propose le scanning intégré d'images; des outils tiers comme Trivy, Aqua, ou Snyk offrent des contrôles plus granulaires. Le pipeline doit scanner l'image après le build Docker, avant le push au registre. Si des vulnérabilités critiques sont détectées, le pipeline rejette l'image. Les vulnérabilités mineures peuvent être tolérées avec une approbation explicite. Au-delà du scanning, le registre doit imposer une signature des images (Docker Content Trust ou Notary sur AWS) pour garantir que seules les images construites par votre pipeline autorisé ne sont déployées. Sans signature, un attaquant pourrait injecter une image malveillante au registre. Enfin, les images scannées et approuvées doivent être taguées de façon traçable (ex: tag avec l'ID du commit ou du build, jamais de tag latest flottant en production), pour que vous puissiez rapidement retracer quelle build a introduit un problème et rappeler une version compromised.

Audit et traçabilité: SBOM, logs et compliance reporting

La détection et la conformité ne valent que si elles sont tracées. Un auditeur externe ou un responsable de conformité (CISO) doit pouvoir répondre à la question: à quelle date cette version de l'application a-t-elle été déployée, quels contrôles de sécurité ont validé ce déploiement, et y a-t-il eu des dérogations approuvées? Cela exige un audit trail complet. Les SBOM (Software Bill of Materials) sont au cœur de cette traçabilité. Un SBOM est un fichier (format JSON ou XML, ex: Cyclone DX) qui énumère tous les composants et dépendances d'une build (quelles librairies, quelles versions, quels patches appliqués). Générer un SBOM pour chaque artefact déployé permet non seulement de savoir exactement ce qui tourne en production, mais aussi de rapidement réagir si une vulnérabilité est découverte: au lieu de scanner tout le code, vous consultez les SBOM des versions en place et identifier instantanément lesquelles sont affectées. AWS CodeBuild peut générer des SBOM via Syft ou d'autres outils, et les stocker aux côtés des artefacts. Les logs de pipeline doivent capturer chaque décision d'approbation, chaque contournement de gate de sécurité, et chaque échec d'un scan, avec le contexte (qui, quand, pourquoi). Ces logs doivent être centralisés (CloudWatch Logs, Splunk, ELK) et immuables (stockage long terme en S3 avec versioning activé et MFA Delete pour éviter une suppression accidentelle). Enfin, les rapports de conformité sont générés automatiquement: par exemple, chaque mois ou à chaque release, un rapport agrège les scans, les approvals, les incidents de sécurité et le taux de conformité des déploiements. Ces rapports sont essentiels pour les audits internes, externes (SOC 2, ISO 27001) et les démonstrations clients.

Mettre en place progressivement: roadmap et outils clés

Transformer un pipeline existant pour y intégrer la sécurité est un marathon, pas un sprint. Une approche progressive permet d'éviter de freiner l'équipe. Semaine 1-2: déployer les bases. Activer le scanning SAST et SCA sur les nouveaux commits en mode warning (non-bloquant). Choisir un outil (Semgrep pour SAST, Snyk ou Dependabot pour SCA). Parallèlement, configurer les logs du pipeline dans CloudWatch. Semaine 3-4: infrastructure et secrets. Mettre en place le scanning IaC (Checkov intégré à terraform apply). Implémenter la gestion des secrets (AWS Secrets Manager ou Parameter Store). Bloquer les secrets committés via pre-commit hooks sur les dépôts. Mois 2: conteneurs et signatures. Si vous utilisez Docker, activer le scanning d'images ECR et la signature Docker Content Trust. Générer les premiers SBOM. Mois 3+: maturation et reporting. Passer les gates SAST et SCA en mode bloquant, avec une période de transition pour que l'équipe nettoe les dépendances. Mettre en place les rapports de conformité automatisés. Intégrer avec votre système de ticketing interne (Jira, GitHub Issues) pour que chaque alerte de sécurité non-bloquante crée un ticket de remédiation assigné. Les outils clés pour une équipe AWS sont AWS CodeBuild (orchestration), Snyk ou Checkov (scanning), AWS Secrets Manager (secrets), ECR avec signing (images), CloudWatch Logs (audit), et un dashboard central (Grafana ou AWS CloudWatch Dashboard) pour la visibilité en temps réel de la posture de sécurité du pipeline. Stralya accompagne les équipes en design et implémentation de cette roadmap, en adaptant le tempo à votre maturité actuelle et à votre contexte de release (vous ne déployez pas à la même cadence que Netflix, probablement).

Gérer les exceptions et les dérogations de sécurité

Aucun ensemble de contrôles n'est parfait. Parfois, une dépendance vulnérable n'expose pas réellement votre application (si le code n'utilise pas la fonction vulnérable), ou une règle IaC très stricte vous bloque un besoin métier légitime. Sans un processus de dérogation structuré, il y a deux risques: soit l'équipe contourne les gates (les désactive), affaiblissant la sécurité, soit elle s'arrête à chaque alerte mineure, ralentissant la livraison. La bonne approche est un processus de dérogation documenté et limité dans le temps. Pour les dépendances vulnérables mais non-exploitables, ajouter une exception dans la configuration SCA (avec commentaire justifiant pourquoi c'est acceptable) et revoir cette exception trimestriellement. Pour une violation IaC justifiée (ex: une règle trop stricte pour un cas limité), documenter la dérogation dans le code IaC elle-même (commentaire Terraform + tag expliquant le besoin métier) et la signer. Toutes les dérogations doivent être approuvées par un pair et un responsable (ex: le CTO ou le responsable de conformité), et loggées automatiquement. Sur AWS, cela peut être implémenté via AWS Approval Step dans CodePipeline, qui crée un ticket approuver/rejeter avant de déployer une version avec dérogation. Les dérogations doivent aussi avoir une durée de validité: par exemple, une dérogation pour une vulnérabilité mineure expire automatiquement dans 90 jours, après laquelle il faut la renouveler ou corriger le problème. Cela évite l'accumulation de dettes de sécurité invisibles.

TEARDOWN AWS · GRATUIT

Recevez le Teardown AWS : où part vraiment votre facture.

Le guide qui liste les 12 postes de coût qui fuitent le plus chez les scale-ups, et comment les colmater. Gratuit, par mail, sans engagement.