140 votes

Comment gérer les mises à jour de sécurité dans les conteneurs Docker ?

Lors du déploiement d'applications sur des serveurs, il y a généralement une séparation entre ce que l'application fournit avec elle-même et ce qu'elle attend de la plate-forme (système d'exploitation et paquets installés). L'un des avantages de cette séparation est que la plate-forme peut être mise à jour indépendamment de l'application. C'est utile, par exemple, lorsque des mises à jour de sécurité doivent être appliquées d'urgence aux paquets fournis par la plate-forme sans avoir à reconstruire l'application entière.

Traditionnellement, les mises à jour de sécurité sont appliquées simplement en exécutant une commande du gestionnaire de paquets pour installer les versions mises à jour des paquets sur le système d'exploitation (par exemple "yum update" sur RHEL). Mais avec l'avènement de la technologie des conteneurs, comme Docker, où les images de conteneurs regroupent essentiellement à la fois l'application y la plateforme, quelle est la manière canonique de maintenir à jour un système avec des conteneurs ? L'hôte et les conteneurs ont tous deux leurs propres ensembles indépendants de paquets qui doivent être mis à jour et la mise à jour sur l'hôte ne mettra pas à jour les paquets à l'intérieur des conteneurs. Avec la sortie de RHEL 7, où les conteneurs Docker sont particulièrement mis en avant, il serait intéressant de savoir quelle est la méthode recommandée par Redhat pour gérer les mises à jour de sécurité des conteneurs.

Réflexions sur quelques-unes des options :

  • Laisser le gestionnaire de paquets mettre à jour les paquets sur l'hôte ne mettra pas à jour les paquets à l'intérieur des conteneurs.
  • Le fait de devoir régénérer toutes les images de conteneurs pour appliquer les mises à jour semble rompre la séparation entre l'application et la plateforme (la mise à jour de la plateforme nécessite un accès au processus de construction de l'application qui génère les images Docker).
  • L'exécution de commandes manuelles dans chacun des conteneurs en cours d'exécution semble fastidieuse et les modifications risquent d'être écrasées lors de la prochaine mise à jour des conteneurs à partir des artefacts de la version de l'application.

Aucune de ces approches ne semble donc satisfaisante.

57voto

Une image Docker regroupe l'application et la "plateforme", c'est exact. Mais généralement, l'image est composée d'une image de base et de l'application proprement dite.

La façon habituelle de gérer les mises à jour de sécurité consiste donc à mettre à jour l'image de base, puis à reconstruire l'image de l'application.

7voto

Paul R Points 104

Les conteneurs sont censés être légers et interchangeables. Si votre conteneur présente un problème de sécurité, vous reconstruisez une version du conteneur qui a été corrigée et vous déployez le nouveau conteneur. (De nombreux conteneurs utilisent une image de base standard qui fait appel à des outils de gestion de paquets standard comme apt-get pour installer leurs dépendances, la reconstruction tirera les mises à jour des dépôts).

Bien que vous puissiez appliquer des correctifs à l'intérieur des conteneurs, cela ne sera pas facile à mettre à l'échelle.

3voto

pwl Points 31

Cette opération est gérée automatiquement dans SUSE Enterprise Linux à l'aide de zypper-docker(1).

SUSE/zypper-docker

Démarrage rapide de Docker

0voto

Ben Grissinger Points 9

Tout d'abord, bon nombre des mises à jour que vous exécutiez traditionnellement dans le passé ne se trouveront tout simplement pas à l'intérieur du conteneur lui-même. Le conteneur devrait être un sous-ensemble assez léger et restreint du système de fichiers complet que vous aviez l'habitude de voir dans le passé. Les paquets que vous devriez mettre à jour seraient ceux qui font partie de votre DockerFile, et puisque vous avez le DockerFile, vous devriez être en mesure de garder une trace de ces paquets et des ID de conteneurs qui ont besoin de mises à jour. L'interface utilisateur de Cloudstein, qui sera bientôt disponible, garde la trace de ces ingrédients de DockerFile pour vous, afin que vous puissiez élaborer le schéma de mise à jour qui convient le mieux à vos conteneurs. J'espère que cela vous aidera

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X