// RETURN_TO_BASE
2024-05-15

Mettre en place un Pipeline DevSecOps avec GitHub Actions

#devsecops#github-actions#security#ci-cd

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 :

  1. Gitleaks : Détection de secrets et de mots de passe codés en dur.
  2. Semgrep : SAST (Static Application Security Testing) ultra rapide.
  3. 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! 🔒