Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

secure-python-pipeline

CI CodeQL Scorecard Plumber OpenSSF Scorecard Plumber Score SLSA 3 License: MIT

Une référence de la sécurité d'un pipeline CI/CD GitHub Actions. Ce dépôt montre, sur une API Python (FastAPI) volontairement minimale, à quoi ressemble une chaîne d'approvisionnement logicielle sécurisée de bout en bout : épinglage strict, permissions minimales, image durcie, provenance SLSA signée, SBOM attesté, et un pipeline qui vise la note maximale sur tous les rapports de sécurité (OpenSSF Scorecard, Plumber, zizmor, poutine, actionlint, Trivy).

Il sert de support pratique à la formation du site :

Chaque choix technique de ce dépôt est expliqué dans ces guides : il n'est pas fait pour être copié tel quel, mais pour être compris.

Ce que le pipeline garantit

  • Lint, tests et SAST (ruff, pytest, bandit) à chaque push et pull request.
  • Audit des dépendances (pip-audit, OSV-Scanner) et scan d'image (Trivy).
  • Dépendances épinglées : actions par SHA, image de base par digest, paquets Python par hash (--require-hashes).
  • Image durcie : multi-stage, utilisateur non-root, outils de build retirés.
  • Provenance SLSA et SBOM (CycloneDX + SPDX) attestés nativement par GitHub, signés via Sigstore keyless (log de transparence Rekor).

Démarrage rapide

docker run --rm -p 8000:8000 ghcr.io/stephrobert/secure-python-pipeline:latest
curl http://localhost:8000/health   # {"status":"healthy"}

Développer

uv venv .venv && source .venv/bin/activate
uv pip install --require-hashes -r requirements.txt
uv pip install -r requirements-dev.txt
ruff check . && pytest && bandit -r src

Vérifier la provenance d'une image

Chaque image publiée porte une attestation de provenance signée. Pour la vérifier :

# Provenance de build (attestation native GitHub)
gh attestation verify oci://ghcr.io/stephrobert/secure-python-pipeline:latest \
  --owner stephrobert

# Signature Cosign keyless (identité du workflow + émetteur OIDC)
cosign verify ghcr.io/stephrobert/secure-python-pipeline:latest \
  --certificate-identity-regexp "https://github.com/stephrobert/secure-python-pipeline/.github/workflows/release.yml@.*" \
  --certificate-oidc-issuer "https://token.actions.githubusercontent.com"

Le dépôt étant public, ces attestations sont vérifiables par un tiers via le log Rekor public.

Licence

MIT. Voir LICENSE.

About

Lab : API Python avec pipeline CI/CD securise (supply chain, SLSA, SBOM, cosign)

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages