URL: https://linuxfr.org/users/bfg/journaux/comment-securisez-vous-les-images-docker-externes Title: Comment sécurisez-vous les images docker externes ? Authors: BFG Date: 2022年11月04日T11:04:03+01:00 License: CC By-SA Tags: docker, podman, forum et question_forum Score: 11 *je ne sais pas si cette question mérite vraiment un journal, j'ai le sentiment (ou du moins j'ose espérer) qu'il existe une réponse triviale que je ne connais pas* ## images d'application Parlons d'abord des images d'application présentes sur dockerhub (ou autre registre d'images). Typiquement le dockerfile d'une appli lambda commence par `FROM debian:stable` (ignorons les autres distributions pour la simplicité du raisonnement, qui s'appliquera aussi aux autres) puis contient une série d'instructions comme `RUN`. Au moment de la sortie d'une nouvelle version de l'application, les mainteneurs reconstruisent l'image docker, et les versions de toutes les dépendances (paquets debian notamment) sont donc figées à ce moment là. Si le lendemain, debian met à jour une des dépendance (par exemple mise à jour de sécurité), l'image figée n'en profite pas ! Cela n'implique pas forcément que la vulnérabilité est exploitable mais il convient de s'en prémunir. Comment faire pour s'en prémunir ? Ne parlons pas de « les mainteneurs doivent reconstruire le paquet régulièrement », car quand bien même ça serait la bonne pratique à suivre en théorie, en pratique ce n'est pas le cas. J'ai d'abord pensé à mettre à jour les conteneurs en cours d'exécution comme un système ordinaire, lancer périodiquement `docker exec -u root CONTENEUR sh -c "apt-get update && apt-get upgrade -y"` mais ça coince au niveau du redémarrage : le processus principal du conteneur ne profiterait pas forcément de la mise à jour (par exemple les `.so` ne sont pas rechargés si le processus est en cours d'exécution). *j'ai pensé à un gros bricolage qui comblerait cette lacune mais je vais éviter de l'évoquer pour ne pas paraitre bête au cas où quelque chose de propre existerait déjà* ## Les images de base De toute manière, les images de base (comme `debian:stable`) ne sont pas elles-mêmes reconstruites à chaque mise à jour de sécurité. Il faudrait donc placer un `RUN apt-get update && apt-get upgrade -y` au début de chaque Dockerfile (se servant de debian), et reconstruire l'image régulièrement ? En plus, cela forcerait à re-télécharger toutes les mises à jour à chaque reconstruction de l'image, sans profiter du système de cache en couches des images docker, ce qui est un peu du gaspillage. Un système traditionnel non-conteneurisé n'aurait pas tous ces défauts.