Mettre en place un Pipeline DevSecOps avec GitHub Actions
Comment intégrer des outils de sécurité comme Trivy, Semgrep et Gitleaks directement dans vos pipelines CI/CD.
Introduction au DevSecOps 🛡️
En tant que développeur et ingénieur sécurité, j'ai souvent constaté que la sécurité était reléguée à la fin du cycle de développement. L'approche DevSecOps consiste à intégrer la sécurité au cœur même du pipeline CI/CD (le fameux Shift-Left).
Dans cet article, nous allons voir comment automatiser la détection de vulnérabilités et de fuites de secrets directement dans GitHub Actions.
Pourquoi intégrer la sécurité dans la CI/CD ?
- Détection précoce : Trouver une faille avant le déploiement coûte infiniment moins cher.
- Automatisation : Plus besoin de lancer les scans manuellement.
- Sensibilisation : Les développeurs voient directement leurs erreurs dans leurs Pull Requests.
Les Outils Indispensables
Pour construire notre "Aegis-CI", nous utiliserons 3 outils open-source puissants :
- Gitleaks : Détection de secrets et de mots de passe codés en dur.
- Semgrep : SAST (Static Application Security Testing) ultra rapide.
- Trivy : SCA (Software Composition Analysis) pour scanner les dépendances et les images Docker.
1. Scanner les secrets avec Gitleaks 🔑
La fuite de tokens API est l'une des failles les plus critiques (et fréquentes). Voici comment ajouter Gitleaks dans votre .github/workflows/security.yml :
name: Security Pipeline
on: [push, pull_request]
jobs:
secret-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Gitleaks
uses: gitleaks/gitleaks-action@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2. Analyse de code statique avec Semgrep 🕵️♂️
Semgrep est un outil exceptionnel pour identifier les failles logiques, les mauvaises pratiques ou les vulnérabilités de type OWASP Top 10 (comme les injections SQL).
sast-scan:
runs-on: ubuntu-latest
container:
image: returntocorp/semgrep
steps:
- uses: actions/checkout@v3
- run: semgrep ci
3. Analyse des dépendances et conteneurs avec Trivy 🐳
Trivy permet d'analyser le code de vos applications, mais aussi les dépendances npm / pip et les images Docker !
dependency-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run Trivy vulnerability scanner
uses: aquasecurity/trivy-action@master
with:
scan-type: 'fs'
format: 'table'
exit-code: '1'
ignore-unfixed: true
severity: 'CRITICAL,HIGH'
Conclusion
En quelques lignes de YAML, vous avez ajouté un véritable bouclier de sécurité à votre repository GitHub !
N'hésitez pas à aller jeter un œil à mon projet Aegis-CI sur mon GitHub, où j'ai développé un template plus poussé intégrant toutes ces fonctionnalités.
Stay safe, code secure! 🔒