kalafoto - stock.adobe.com
Comment Kata Containers et gVisor permettent de renforcer la sécurité des conteneurs
Kata Containers et Google gVisor proposent différentes approches de l'utilisation de machines virtuelles pour sécuriser des conteneurs. Évaluez leurs avantages pour avoir un aperçu de l'avenir du domaine.
Kata Containers et Google gVisor proposent deux approches pour aborder les questions de sécurité des conteneurs, cherchant un compromis entre performances des conteneurs et sécurité additionnelle.
Les conteneurs sont des instances rapides et légères qui peuvent bénéficier à un large éventail de traitements, en particulier ceux qui touchent à des microservices et à des applications sans serveur. La mise en œuvre de conteneurs directement sur du matériel, sans couche d’abstraction, présente des risques de sécurité car les conteneurs peuvent exposer l'infrastructure sous-jacente. Ce qui rend l'ensemble de l’environnement plus vulnérable aux attaques.
Pour répondre à cela, de nombreux centres de calcul exécutent des traitements conteneurisés dans des machines virtuelles afin de tirer parti d'une meilleure isolation. Malheureusement, cette approche peut aussi se traduire par un manque de souplesse et une utilisation inefficace des ressources. Ce qui peut réduire l’intérêt d’utiliser des conteneurs.
Plusieurs services sont apparus pour sécuriser les environnements de conteneurs tout en préservant la flexibilité et la légèreté. Kata Containers et gVisor de Google en constituent les principaux exemples. Les deux projets promettent de rationaliser et de sécuriser les déploiements de conteneurs, mais chacun adopte une approche différente.
Kata Containers utilise des machines virtuelles pour renforcer la sécurité
Kata Containers, lancé en décembre 2017, est un projet open source géré par la Fondation OpenStack, sous licence Apache 2.0. Le projet s’appuie sur la virtualisation pour fournir un environnement sécurisé dans lequel exécuter des conteneurs, tout en offrant une utilisation des ressources plus élevée et plus simple que les implémentations reposant sur des machines virtuelles traditionnelles.
Kata Containers héberge chaque conteneur dans une machine virtuelle légère et dédiée, qui dispose de son propre noyau et de ressources réseau, mémoire, et d’entrées/sorties isolées. Le projet combine les technologies Hyper runV et Intel Clear Containers pour résoudre les problèmes de sécurité des conteneurs sans induire la surcharge liée à une pleine machine virtuelle.
Hyper runV est une implémentation du runtime Open Container Initiative (OCI) basée sur un hyperviseur. Le runtime OCI fonctionne de la même manière que runC, un runtime de conteneur portable utilisé par les conteneurs Docker. Cependant, runC s'appuie sur des cgroups et des namespaces pour implémenter les images de conteneurs, alors que runV utilise un hyperviseur.
Kata Containers utilise les meilleures fonctionnalités de Hyper runV et de Clear Containers. Initialement, ce dernier exécutait chaque conteneur dans une machine virtuelle légère. Clear Containers est basé sur la technologie de virtualisation d'Intel et fournit un service open source pour exécuter en toute sécurité les traitements conteneurisés. Il est également compatible OCI, et s’avère donc interopérable avec les environnements de conteneurs tels que Docker et Kubernetes.
Conforme aux normes OCI, Kata Containers est interopérable avec Docker et Kubernetes, ce qui permet aux organisations de l'implémenter en toute sécurité sans devoir reconstruire les conteneurs existants. Actuellement, Kata Containers ne supporte que Linux, tant pour les hôtes que pour les services exécutés, avec un support clés en mains pour les distributions telles que Fedora, CentOS 7 et Clear Linux.
VMware et Microsoft offrent des alternatives
Kata Containers est très proche des vSphere Integrated Containers (VIC) de VMware. VIC exécute également chaque conteneur dans une machine virtuelle légère. Cependant, VIC crée ces machines virtuelles dans un hôte de conteneur virtuel (VCH), qui consiste en un ensemble logique de ressources processeur, mémoire et stockage. Le VCH peut contenir plusieurs machines virtuelles qui donnent accès aux fonctions avancées de sécurité, d'isolation, de disponibilité et de performance de vSphere.
VIC a également des exigences d'installation beaucoup plus spécifiques, y compris différents composants avec des spécifications différentes. Par exemple, il est nécessaire d’installer les VCH sur une instance VMware vCenter Server ou sur un hôte ESXi autonome. De plus, les administrateurs doivent rattacher tous les hôtes ESXi des clusters de serveurs vCenter aux entrepôts d'images et de volumes, et avoir accès au stockage partagé pour que les VCHs puissent utiliser plus d'un hôte dans un cluster. VIC ne prend également en charge que les conteneurs Linux.
Les conteneurs Hyper-V de Microsoft entrent également dans cette catégorie. Encore une fois, chaque conteneur fonctionne dans une machine virtuelle dédiée et optimisée. La VM conserve juste assez de fonctionnalités du système d'exploitation pour exécuter le conteneur, ce qui se traduit par un temps de démarrage plus court et un encombrement réduit. Les conteneurs Hyper-V prennent également en charge un processus de démarrage spécial qui peut réduire encore davantage les délais d’initialisation.
Bien que les conteneurs Hyper-V doivent fonctionner dans un environnement Windows, ils supportent à la fois les conteneurs Windows et Linux, contrairement à Kata Containers et à VIC. Mais Kata Containers n'est pas lié à un éditeur particulier, comme c'est le cas avec les conteneurs Hyper-V et VIC.
Google gVisor propose une nouvelle approche
Les conteneurs Kata et les services similaires offrent de nombreux avantages par rapport aux conteneurs fonctionnant dans des VM complètes : puisque les conteneurs s’exécutent dans des machines virtuelles légères, les ressources sont utilisées plus efficacement. Ces services simplifient également la mise en œuvre des conteneurs en éliminant une grande partie de la charge administrative des machines virtuelles traditionnelles.
Malgré ces avantages, même les machines virtuelles les plus légères induisent une surcharge de traitement. C’est pour cela que Google a créé gVisor, un runtime de conteneur en bac à sable qui fournit une couche d’isolation entre l'application conteneur et l'OS hôte sans recourir à la virtualisation.
Comme Kata Containers, Google gVisor est conforme OCI et s'intègre avec Docker et Kubernetes. Cependant, gVisor est plus flexible et affiche une empreinte encore plus petite. Le noyau gVisor fonctionne comme un processus d'espace utilisateur non privilégié qui supporte la plupart des appels système Linux. Pour créer le bac à sable, gVisor isole les traitements du système d’exploitation hôte en interceptant ces appels et en créant un environnement qui obtient son propre noyau et un ensemble de ressources virtualisées.
Google a basé gVisor sur des technologies déjà en production et a rendu le service disponible comme un projet open source sur GitHub sous la licence Apache 2.0. Le service ne prend en charge que Linux, tant pour l’hôte que pour les conteneurs.
Bien que gVisor soit plus léger que Kata Containers, gVisor ne peut pas exécuter toutes les applications Linux car il ne supporte pas tous les appels système proposés par Linux. Actuellement, le projet gVisor sur GitHub montre que seul un éventail limité d’applications et d’images a été testé. Malgré tout, gVisor est très prometteur – assez en tout cas pour que les organisations de l'industrie des conteneurs le prennent au sérieux.