Aller au contenu
English
Compte : non connecté, synchronisation possible Mon apprentissage
Selectionner le thème
English

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

  • 10 min

Par mis à jour le

Améliorer cette page

Logo GitHub

Ce lab construit de zéro un projet Python dont les workflows passent à zéro finding les quatre scanners de workflow, actionlint, zizmor et poutine lancés en local, plumber en gate bloquant dans la CI, 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.

Pipeline sécurisé : quatre analyses CI en parallèle (lint avec ruff, tests avec pytest, SAST avec bandit, audit avec pip-audit et Trivy), puis un build attesté (provenance SLSA, SBOM Syft, signature Cosign), une publication sur GHCR par digest avec attestations et signature, et enfin la mesure de posture par OpenSSF Scorecard et de l'exploitabilité réelle par Plumber.CI : analyses en parallèleBuild + AttestDocker, provenance SLSA, SBOM (Syft), signature CosignGHCRimage @sha256 + attestations + signatureOpenSSF Scorecardposture (18 contrôles)Plumberexploitabilité réelleLint(ruff)Test(pytest)SAST(bandit)Audit(pip-audit + Trivy)
Source · SVG
Échap pour fermer, + et − pour zoomer, défilement pour se déplacer. 100 %

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.

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.

  • Le lab ne vaut pas par son application FastAPI, mais par la chaîne qui la construit, l'atteste et la publie.
  • Les cinq guides se suivent dans l'ordre : chacun consomme ce que le précédent a produit.
  • Les workflows passent les quatre scanners, actionlint, zizmor, poutine et plumber, sans exception tolérée.
  • Chaque image publiée porte une provenance SLSA, un SBOM attesté et une signature Cosign vérifiables par un tiers.
  • Le dépôt de référence est public : tout extrait cité se compare au code réellement exécuté.

Ce projet vous est utile ?

Les guides, formations, quiz et labs restent gratuits. Si vous les utilisez régulièrement, vous pouvez contribuer à leur maintenance et à leur développement.

Devenir membre de soutien (nouvel onglet) Soutenir une fois (nouvel onglet) En savoir plus

Suivez aussi le projet sur LinkedIn