pipeline ci/cd : scanner les vulnérabilités de votre SaaS Node.js avec Snyk et Trivy
06/07/2025
pipeline ci/cd : scanner les vulnérabilités de votre SaaS Node.js avec Snyk et Trivy
Dans un contexte SaaS, la rapidité de livraison ne doit pas primer sur la sécurité. Intégrer un scan de vulnérabilités automatisé dans votre pipeline CI/CD garantit que chaque commit est contrôlé. Nous verrons comment combiner Snyk pour vos dépendances Node.js et Trivy pour vos images Docker, le tout orchestré via GitHub Actions.
Pourquoi automatiser le scan de vulnérabilités ?
- Détection précoce des failles : corrigez avant déploiement en production (OWASP Top 10, CVSS ≥ 7.0).
- Conformité & confiance : respectez les exigences GDPR/ISO 27001 et rassurez vos clients.
- Réduction du coût de remédiation : corriger une vulnérabilité en dev coûte en moyenne 30 € contre 1 000 € après production.
1. Scanner les dépendances Node.js avec Snyk
Snyk se concentre sur la sécurité des librairies JavaScript (npm/yarn). Voici comment l’ajouter à votre projet :
// 1. Installer Snyk globalement ou en dev-dependency
npm install --save-dev snyk
// 2. Authentifier (token obtenu depuis https://app.snyk.io)
npx snyk auth $SNYK_TOKEN
// 3. Lancer l’analyse
npx snyk test --severity-threshold=high
Exemple de rapport Snyk en JSON :
{
"vulnerabilities": [
{
"id": "npm:lodash:20201215",
"severity": "high",
"cvssScore": 7.5,
"packageName": "lodash"
}
]
}
2. Analyser les images Docker avec Trivy
Trivy scanne à la fois OS et dépendances applicatives. Installez-le localement ou en tant que container :
# Exécution locale
brew install aquasecurity/trivy/trivy # macOS
trivy image myapp:latest
# Ou via Docker
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock aquasec/trivy image myapp:latest
Un rapport typique :
Vulnerability | Package | Severity |
---|---|---|
CVE-2021-44228 | log4j | critical |
CVE-2022-24706 | openssl | high |
3. Intégrer Snyk & Trivy dans GitHub Actions
Voici un workflow YAML minimal qui échoue si une vulnérabilité critique est décelée :
name: Security Scan
on:
push:
branches: [ main ]
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
# Node.js & Snyk
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install dependencies
run: npm ci
- name: Snyk Test
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
run: npx snyk test --severity-threshold=high
# Build Docker image
- name: Build Docker
run: docker build -t myapp:${{ github.sha }} .
# Scan with Trivy
- name: Trivy Scan
uses: aquasecurity/trivy-action@v0.4.0
with:
image-ref: myapp:${{ github.sha }}
exit-code: '1'
severity: CRITICAL,HIGH
En cas d’erreur, le job security
échouera et empêchera la mise en production.
Bonnes pratiques et optimisations
- Cache Snyk et les dépendances : améliorez les performances (action
actions/cache@v3
). - Multi-stage Docker : réduisez la surface d'attaque en excluant les outils de build de l’image finale.
- Alerting & reporting : intégrez les résultats dans votre dashboard SaaS ou Slack.
- Revues régulières : réanalysez trimestriellement pour couvrir les nouvelles CVE.
Conclusion
Avec Snyk et Trivy intégrés en amont, votre application Node.js SaaS gagne en robustesse et conformité. Ce pipeline CI/CD renforce la confiance de vos clients et optimise votre delivery.
Pour aller plus loin, découvrez nos offres d’intégration DevSecOps et sécurisez chaque étape de votre chaîne.
Envie d’un audit personnalisé ? Réservez une séance de consulting IT offerte.