Aller au contenu

08. Sécurité DevSecOps & CI/CD

08. Sécurité DevSecOps & CI/CD

Pipeline DevSecOps complet : Sécurité shift-left

Le Shift-Left consiste à intégrer les contrôles de qualité et de sécurité le plus tôt possible dans le cycle de développement afin de détecter et corriger les problèmes avant la mise en production.

Slide 232

Static application

Security Testing

Static application security testing (SAST)

OutilType
SemgrepOpen source
SonarQubeQualité & sécurité
GitHub Advanced SecurityIntégré GitHub
CheckmarxCommercial
Fortify SCACommercial
Veracode Static AnalysisSaaS
CodeQLOpen source (GitHub)

Fonctionnement

Slide 235

Dynamic application

Security Testing

Dynamic application security testing (DAST)

OutilType
OWASP ZAPOpen source
Burp SuiteRéférence du marché
Invicti (Netsparker)Commercial
AcunetixCommercial
Rapid7 InsightAppSecSaaS
StackHawkCloud Native

Slide 238

Nuclei : Scanner de vulnérabilités applicatives

ConceptDétecteCas d’usage cloud
• Outil open source développé par
ProjectDiscovery
• Scanner de vulnérabilités basé sur
des templates YAML
• Fonctionne comme un DAST léger
et automatisable
• Très utilisé en prime aux bogues,
pentest et CI/CD
• Plus de 8 000 templates
communautaires
• Vulnérabilités connues (CVE)
• Mauvaises configurations
• Secrets exposés
• Endpoints sensibles
• Headers de sécurité manquants
• Expositions cloud (S3, Kubernetes,
API, etc.)
• Scan d’API REST et GraphQL
• Vérification de buckets S3 publics
• Détection d’API Gateway exposées
• Contrôle d’environnements
Kubernetes
• Validation de services cloud
accessibles depuis Internet
• Contrôle de sécurité avant mise en
production

Slide 241

Software composition analysis

  • Le Software Composition Analysis (SCA) consiste à analyser les bibliothèques et dépendances open source utilisées par une application afin d’identifier les vulnérabilités connues, les composants obsolètes et les risques liés à la chaîne d’approvisionnement logicielle.
  • Objectif : détecter et corriger les vulnérabilités introduites indirectement par les dépendances tierces.
Ce que vérifie un SCADépendances directes et transitives
• Dépendances directes et transitives
• Versions utilisées
• Vulnérabilités connues (CVE)
• Composants obsolètes
• Licences open source
• Présence dans un SBOM
Mon application
└── express
Mon application
└── express
├── body-parser
├── send
└── debug

Slide 244

Comparaison de solutions

SnykDependabotOWASP Dependency-Check
Version gratuite et payanteIntégré nativement à GitHubOpen source
Plugin VS Code et IntelliJCréation automatique de Pull RequestsSupport multi-langages
Analyse des dépendances et CVEDétection des dépendances vulnérablesAnalyse basée sur les bases
NVD/CVE
Contrôles dans les Pull RequestsMise à jour automatique des versions
vulnérables
Calcul des scores CVSS
Correctifs automatiques via Pull
Requests
Intégration GitHub simpleIntégration CI/CD
Support conteneurs, IaC et codeFocalisé sur les dépendances GitHubRapports détaillés de vulnérabilités
Approche DevSecOps complèteSolution simple et automatiséeRéférence open source pour le SCA

Renovate : Gestion automatisée des dépendances

Renovate : Fonctionnement

Slide 247

Software bill of materials (SBOM)

Pourquoi utiliser un SBOM ?
SécuritéConformitéGouvernance
• Identification rapide des
composants vulnérables
• Réponse accélérée aux nouvelles
CVE
• Amélioration de la visibilité sur la
Supply Chain
• Gestion des licences open source
• Réponse aux exigences réglementaires
• Facilitation des audits
• Inventaire logiciel centralisé
• Suivi des versions utilisées
• Gestion des risques fournisseurs
Un SBOM fournit la liste complète des composants d’un logiciel afin d’améliorer la visibilité, la sécurité et la
maîtrise de la chaîne d’approvisionnement logicielle.

Slide 250

Comparatif des formats SBOM

SPDXCycloneDXSWID
OrigineLinux Foundation (2010)OWASP Foundation (2017)ISO/IEC 19770-2
Format principalJSON, RDF, Tag-ValueJSON (recommandé), XMLXML
OrientationLicences & conformitéSécurité & Supply ChainInventaire logiciel
StandardISO/IEC 5962Standard OWASPISO/IEC 19770-2
Points fortsGestion des licences, conformité open source,
gouvernance
Vulnérabilités, VEX, dépendances, CI/CD, conteneursGestion d’actifs, inventaire,
déploiement
Support CVEOui (moins riche)Excellent support natifLimité
Support VEXPartielNatifNon
ÉcosystèmeGitHub, NTIA, conformité fournisseursAWS, Docker, GitHub, Trivy, Snyk, Dependency-TrackITAM, SAM, grands SI
Points faiblesPlus verbeux et complexeMoins centré sur les licencesPeu utilisé pour la sécurité
applicative
Cas d’usage idéalAudit, conformité, licencesDevSecOps, SBOM sécurité, CI/CDInventaire logiciel d’entreprise

Choix du format

Vulnerability Exploitability eXchange (VEX)

VEX permet au créateur d’un logiciel de communiquer si une CVE connue est réellement exploitable dans son produit. Intégré nativement dans CycloneDX 1.4+.

Information VEXUtilité sécurité
RôleFournir un statut d’exploitabilité pour une vulnérabilité identifiée dans un produit ou composant
Lien avec le SBOMLe SBOM liste les composants et VEX précise si les vulnérabilités associées ont un impact réel
Vulnérabilité concernéeRéférencer une CVE ou une faille connue analysée dans un contexte précis
Statut d’impactIndiquer si le produit est affecté, non affecté, corrigé ou encore en cours d’analyse
JustificationExpliquer pourquoi une vulnérabilité est ou n’est pas exploitable dans ce produit
PriorisationConcentrer les efforts sur les vulnérabilités réellement exploitables
Réduction du bruitLimiter les faux positifs générés par les scanners SCA ou les analyses SBOM
AutomatisationPermettre aux outils de sécurité de trier automatiquement les vulnérabilités selon leur impact réel
Décision sécuritéJustifier une absence d’action, déclencher une correction, appliquer une mitigation ou surveiller un risque

Slide 217

Dependency-Track : Plateforme de gestion continue des sboms

ConceptWorkflow intégréArchitecture
• Plateforme SBOM-native (OWASP) :
ingère SPDX et CycloneDX
• Corrèle chaque composant avec
NVD, OSV, VulnDB, GitHub Advisory
• Alerte proactive : nouveau CVE =
notification immédiate
• Dashboard de risque par projet /
équipe / organisation
• API REST pour intégration CI/CD et
SIEM
• Alternatives : Snyk (commercial) ·
Mend · FOSSA
• éploiement : Docker self-hosted ou
Dependency-Track Cloud
• Plateforme SBOM-native (OWASP) :
ingère SPDX et CycloneDX
• Corrèle chaque composant avec
NVD, OSV, VulnDB, GitHub Advisory
• Alerte proactive : nouveau CVE =
notification immédiate
• Dashboard de risque par projet /
équipe / organisation
• API REST pour intégration CI/CD et
SIEM
• Alternatives : Snyk (commercial) ·
Mend · FOSSA
• éploiement : Docker self-hosted ou
Dependency-Track Cloud
• CI/CD génère SBOM (Syft/cdxgen) à
chaque build
• Upload automatique vers
Dependency-Track (API)
• D-Track corrèle avec toutes les bases CVE
• Si CVE critique → webhook → alert
Slack/PagerDuty
• VEX peut être émis directement depuis
D-Track
• Tableau de bord CISO : risque agrégé par
portfolio
• Historique : évolution du score de risque
dans le temps
• Frontend : Vue.js SPA (UI de gestion
• Backend : Quarkus (Java) REST API
• Base de données : PostgreSQL
• Message queue : Alpine (events asy
• Intégrations : Jira · GitHub · GitLab
Slack · Teams
• Auth : OIDC / LDAP / AD (SSO
enterprise)
• Déploiement : docker-compose ou
Helm chart

La sécurité en continue

Approche consistant à surveiller, vérifier et améliorer en permanence la sécurité des systèmes, applications, infrastructures et identités tout au long de leur cycle de vie.

Slide 255

Lambda, Step Functions, Cloud Run

Sans serveur, sans réseau traditionnel, sans OS à patcher mais avec une surface d’attaque radicalement différente centrée sur les permissions IAM et les déclencheurs d’événements. Paradigme Serverless : Pas de serveur à gérer → Pas de port 22 → Pas d’OS à patcher. MAIS : chaque fonction = 1 identité IAM · chaque déclencheur = 1 vecteur d’attaque · chaque variable d’env = 1 risque de secret exposure.

Sécurité du serverless

Le serverless réduit la gestion de l’infrastructure, mais déplace les risques vers les identités, les événements, les permissions, les dépendances, les secrets et l’observabilité.

DimensionEnjeu de sécurité
Identités d’exécutionChaque fonction ou service serverless doit utiliser une identité dédiée avec des permissions minimales
DéclencheursLes sources capables d’invoquer une fonction doivent être strictement contrôlées
ÉvénementsLes messages entrants doivent être filtrés, validés et limités pour éviter les traitements non prévus
SecretsLes secrets ne doivent pas être stockés dans le code ou exposés dans les variables d’environnement
DépendancesLes bibliothèques, layers, images ou packages utilisés par les fonctions doivent être scannés et maintenus
Réseau privéLes fonctions doivent accéder aux ressources sensibles via VPC/VNet, points de terminaison privés ou connectivité maîtrisée
JournalisationLes logs doivent permettre l’audit sans exposer de secrets, tokens ou données sensibles
RésilienceRetries, timeouts, quotas et dead-letter queues doivent éviter les boucles, pertes ou surcoûts
Surface d’attaqueAPIs, points de terminaison publics, permissions excessives et intégrations événementielles deviennent les principaux points d’exposition

Secrets Management & architecture sécurisée Lambda

Une fonction Lambda ne doit jamais embarquer de secrets en dur : elle doit récupérer des secrets à la demande, avec une identité IAM limitée et des accès réseau contrôlés.

ÉlémentDescription
PrincipeLa fonction Lambda utilise son rôle IAM pour récupérer uniquement les secrets nécessaires
Stockage des secretsAWS Secrets Manager ou Systems Manager Parameter Store
Accès aux secretsRécupération dynamique, éventuellement avec cache via l’extension AWS Parameters and Secrets Lambda Extension
PermissionsRôle IAM dédié, principe du moindre privilège, accès limité par secret, ressource et action
RéseauLambda placée dans un VPC si elle doit accéder à des ressources privées
Accès privéVPC Endpoint / PrivateLink pour accéder à Secrets Manager sans passer par Internet public
JournalisationLogs CloudWatch sans exposition de secrets dans les traces, erreurs ou variables affichées

Cas d’usage :

  • Connexion sécurisée à une base de données depuis Lambda
  • Récupération d’un mot de passe, token API ou certificat depuis Secrets Manager
  • Rotation centralisée des secrets sans redéployer le code
  • Accès privé à une base RDS, un cache Redis ou une API interne
  • Suppression des secrets stockés dans le code, les variables CI/CD ou les dépôts Git
  • Contrôle fin des permissions par fonction Lambda

Sécurité des architectures serverless et événementielles

Les orchestrateurs serverless (Step Functions, Cloud Run, EventBridge) enchaînent des fonctions. Une faille dans la chaîne = compromission de l’ensemble du pipeline.

Composant serverlessObjectif de sécuritéAWSAzureGCP
Source d’événementAutoriser uniquement les événements issus de sources légitimesS3, EventBridge, SNSEvent Grid, Blob Storage, Service BusEventarc, Cloud Storage, Pub/Sub
Routage événementielFiltrer les événements pour éviter les déclenchements non prévusEventBridge rulesEvent Grid subscriptionsEventarc triggers
Traitement serverlessExécuter le traitement avec une identité dédiée et des droits minimauxLambdaAzure FunctionsCloud Functions, Cloud Run
OrchestrationEncadrer les étapes, conditions, erreurs, retries et compensationsStep FunctionsDurable Functions, Logic AppsWorkflows
File / message brokerDécoupler les traitements et absorber les pics sans perte d’événementsSQS, SNSService Bus, Storage QueuesPub/Sub
Messages en échecIsoler les événements non traités pour analyse, reprise ou investigationSQS DLQ, EventBridge DLQService Bus DLQ, Event Grid dead-letterPub/Sub dead-letter topic
Retries automatiquesMaîtriser les relances pour éviter doublons, boucles ou surconsommationLambda retries, EventBridge retriesAzure Functions retries, Event Grid retry policyEventarc retries, Pub/Sub retry policy
Payload événementielLimiter les données sensibles et valider le contenu avant traitementValidation applicative, IAM, KMSManaged identities, Key Vault, RBACIAM, Secret Manager, Cloud KMS
TraçabilitéSuivre le cycle complet d’un événement, du déclenchement au traitementCloudWatch, X-Ray, CloudTrailMonitor, Application Insights, Activity LogsCloud Logging, Cloud Trace, Audit Logs

Prêt pour lundi

#ActionCommandeDurée / CoûtImpact
1Installer Gitleaks en pre-commit hookpip install pre-commit && echo 'repos:\n- repo: https://github.com/gitleaks/gitleaks\n hooks:\n - id: gitleaks' > .pre-commit-config.yaml15 min / GratuitBloque les secrets avant le commitcloud
2Remplacer les clés statiques par OIDC federation# GitHub Actions: permissions: id-token: write + aws-actions/configure-aws-credentials@v4 avec role-to-assume1h / GratuitPlus jamais de clé AWS dans votre pipeline (credentials temporaires uniquement)
3Générer un SBOM sur votre application principalesyft . -o cyclonedx-json > sbom.json && grype sbom:sbom.json20 min / GratuitInventaire de toutes vos dépendances + CVEs connues en une commande