Sécurité de la chaîne d'approvisionnement

Chaque image que tu fais tourner est construite sur des images et des paquets écrits par d'autres. La sécurité de la chaîne d'approvisionnement consiste à s'assurer que ce que tu construis et déploies est exactement ce que tu as relu, même si un registre, un miroir ou un compte est compromis.

Comment ça marche

Épingle chaque image externe par son digest (FROM image:tag@sha256:..., image: ...@sha256:... dans Compose), et fais avancer les digests par des changements relus, que des outils comme Renovate ou Dependabot proposent. Ne tire qu'à travers un miroir que tu contrôles, avec des tags immuables et un compte de push gardé hors de la CI. Signe les images et vérifie les signatures au déploiement (cosign, Docker Content Trust), et garde une nomenclature logicielle (docker buildx build --sbom=true) pour savoir ce qu'il y a dedans.

Ce qui casse

Les tags bougent : quiconque peut pousser dans un dépôt peut remplacer node:20-alpine par une copie piégée qui fonctionne parfaitement, et docker build --pull ou docker compose pull la récupéreront à la prochaine reconstruction. Une image de base piégée est invisible pour tous les tests fonctionnels. Épingler sans processus pour mettre à jour les digests gèle les correctifs de sécurité à la place.

Dans un Dockerfile

# Dockerfile
FROM registry.shop.internal/mirror/node:20-alpine@sha256:b0ff1116a2a7b674ba9d43a7b7fb5639bb9d453a13cd3fcebc9d46cd6f9f2963

# compose.yaml
#   db:
#     image: registry.shop.internal/mirror/postgres:16@sha256:3ff0cf6f859b...

Regarde-le casser, puis répare-le

Écris le Dockerfile ou le fichier compose, tape les commandes docker, et regarde un serveur simulé les exécuter à travers redémarrages, mises à jour et trafic. Gratuit pour commencer.