Aller au contenu
CI/CD & Automatisation medium

Lab : pipeline GitHub sécurisé de bout en bout

10 min de lecture

logo github

Ce lab construit de zéro un projet Python dont le pipeline GitHub Actions passe les quatre scanners de workflow (actionlint, zizmor, poutine, plumber) à zéro finding, publie une image signée avec une provenance SLSA et un SBOM vérifiables, et maximise honnêtement OpenSSF Scorecard. Il se compose de 5 guides à suivre dans l'ordre, adossés à un dépôt public reproductible. Les vulnérabilités applicatives sont couvertes par Trivy. Il s'adresse à un lecteur avancé qui veut une référence exécutable, pas une recette magique : chaque décision est expliquée, pourquoi ce réglage, quel contrôle il satisfait, quel piège il évite.

Le lab produit une chaîne complète : cinq jobs de CI, un build attesté, une publication sur GHCR et une double mesure de posture. Le schéma ci-dessous la résume : quatre analyses lancées en parallèle (lint, tests, SAST, audit) plus un build-check, soit les cinq jobs du CI, un build attesté (provenance SLSA, SBOM, signature Cosign), une publication sur GHCR, puis une double mesure, la posture avec OpenSSF Scorecard et l'exploitabilité réelle avec Plumber.

Vue d'ensemble du pipeline sécurisé : quatre analyses CI en parallèle, build attesté SLSA/SBOM/Cosign, publication GHCR, puis mesure Scorecard et Plumber

Le projet fil rouge est une API Python (FastAPI) volontairement minimale. Ce n'est pas l'application qui compte, mais la chaîne qui la construit, l'atteste et la publie. À la fin du lab, chaque image publiée porte :

  • une attestation de provenance SLSA signée (Sigstore keyless, log Rekor) ;
  • un SBOM (CycloneDX) attesté et lié au digest dans le registre ;
  • une signature Cosign vérifiable, plus un provenance.intoto.jsonl attaché à la release.

Et le dépôt lui-même est gouverné : protection de branche par ruleset, revue code-owner obligatoire, Dependabot avec quarantaine, et une posture mesurée par OpenSSF Scorecard.

Tout le lab s'appuie sur le dépôt public stephrobert/secure-python-pipeline, que vous pouvez consulter, cloner et forker pour reproduire chaque étape à l'identique. Rien n'y est masqué : les workflows publiés sont ceux que les guides commentent, ligne par ligne.

Vous le trouvez à l'adresse github.com/stephrobert/secure-python-pipeline. github.com/stephrobert/secure-python-pipeline.

Fenêtre de terminal
git clone https://github.com/stephrobert/secure-python-pipeline

Vous y trouverez les sept workflows (CI, release, CodeQL, Scorecard, fuzzing, plumber, vérification SLSA), le Dockerfile durci, les dépendances hash-lockées et les fichiers de gouvernance (SECURITY.md, CODEOWNERS, dependabot.yml). Les guides qui suivent citent le code de ce dépôt tel quel : aucun extrait n'est reconstruit de mémoire, chaque commande a été exécutée et validée avant d'être documentée.

Ce lab s'adresse aux personnes qui écrivent déjà des workflows GitHub Actions et veulent les porter au niveau d'une référence de sécurité. Si vous n'avez encore jamais écrit de workflow, commencez par les fondations GitHub Actions : le lab suppose acquis la syntaxe, les jobs et les secrets.

La connaissance des concepts de supply chain (SLSA, SBOM, Sigstore) aide, mais chaque notion est rappelée au fil des étapes.

Quels sont les 5 guides du lab, et dans quel ordre les suivre ?

Section intitulée « Quels sont les 5 guides du lab, et dans quel ordre les suivre ? »

Le lab se suit dans l'ordre, du bootstrap au scoring : chaque guide consomme ce que le précédent a produit. Commencer par le pipeline sans avoir posé le socle mène au même endroit à chaque fois, un workflow qui échoue sur des dépendances non verrouillées et un Dockerfile qui tourne en root.

  1. Bootstrap sécurisé pose le socle : dépôt, gouvernance, application FastAPI, dépendances verrouillées par hash, Dockerfile non-root. Tout est validé en local avant le moindre workflow.

  2. Pipeline CI durci écrit le workflow d'intégration et le fait passer les quatre scanners de workflow, actionlint, zizmor, poutine et plumber, sans exception tolérée.

  3. Build vérifiable ajoute la provenance SLSA native, le SBOM attesté et la signature Cosign keyless, toutes vérifiables par un tiers.

  4. Protection et gouvernance protège la branche par un ruleset, impose la revue code-owner et outille les scanners avec un token GitHub App.

  5. Scoring et durcissement maximise honnêtement OpenSSF Scorecard et vise le badge OpenSSF Best Practices sur bestpractices.dev.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn