Dans des secteurs critiques comme les banques d’investissements, les énergies nucléaires et le calcul scientifique à grande échelle, l’exécution fiable et sécurisée des charges de travail HPC (High-Performance Computing) est essentielle. ArmoniK, un orchestrateur de tâches distribué, est conçu pour répondre à ces exigences en permettant une exécution scalable, tolérante aux pannes et sécurisée des tâches HPC dans des environnements variés. Que ce soit pour traiter de grands ensembles de données, gérer des flux de travail computationnels complexes ou garantir l’intégrité des données, ArmoniK fournit les outils et l’infrastructure nécessaires pour soutenir ces applications exigeantes.
Pour assurer le déploiement d’ArmoniK de manière sécurisée et efficace, ArmoniK utilise des conteneurs Docker, offrant un environnement cohérent et isolé pour l’exécution de ses composants. Cependant, les images Docker initiales (basées sur Linux) posaient plusieurs défis, notamment une taille importante, des vulnérabilités de sécurité liées au système d’exploitation inclus, et des problèmes de performance dus à des composants inutiles. Pour répondre à ces enjeux, nous avons décidé de migrer vers des images plus légères, telles que les images Azure Linux Distroless pour les applications .NET.
En explorant les options pour optimiser nos images Docker, nous avons découvert le concept d’images "Chiseled", conçues pour créer des images conteneur minimales pour les applications .NET. Ces images sont légères et sécurisées grâce à la suppression de nombreux composants généralement inclus dans les images Linux standard. Cependant, un défi majeur avec les images Chiseled était la persistance de vulnérabilités (CVE). Malgré leur taille réduite, ces images contenaient des CVE liées aux composants du système d’exploitation sous-jacent toujours présents. Cela représentait un risque de sécurité, en particulier dans des environnements sensibles comme ceux de la banque ou du nucléaire. C’est pourquoi nous avons choisi de ne pas adopter les images Chiseled pour le déploiement d’ArmoniK.
Note : Les images Chiseled sont basées sur des images Ubuntu, ce qui signifie qu’elles héritent des vulnérabilités du système d’exploitation sous-jacent. Cela peut poser problème pour les applications sensibles à la sécurité, car les vulnérabilités de l’image de base peuvent potentiellement être exploitées. Elles incluent également le runtime .NET et les dépendances critiques. Elles offrent une empreinte plus petite que les images traditionnelles, réduisant de 100 Mo la taille des conteneurs .NET officiels, avec des images de base pour applications .NET autonomes pesant moins de 6 Mo compressées. Cette performance rivalise avec celles d’Alpine, Busybox et des images Distroless, tout en offrant une expérience fluide du développement à la production (source). Pour plus d’informations sur les images Chiseled .NET, consultez cet article de documentation.
Une autre solution consistait à utiliser les images Azure Linux Distroless. Azure Linux est une distribution Linux conçue pour l’infrastructure cloud et les produits edge de Microsoft. Elle vise à fournir une plateforme cohérente pour ces appareils et services. Les conteneurs Distroless ne contiennent que l’ensemble minimal de paquets nécessaires à l’application, sans éléments superflus (comme un gestionnaire de paquets, des bibliothèques ou un shell). Qualys et Trivy prennent en charge l’analyse des vulnérabilités dans les conteneurs Azure Linux Distroless.
Grâce à leur ensemble limité de paquets, les conteneurs Distroless présentent une surface d’attaque réduite et moins de bruit dans les analyses de vulnérabilités. Cela se traduit généralement par une charge réduite de correction des vulnérabilités, permettant aux développeurs de se concentrer sur la construction de leur application. Enfin, leur taille plus petite améliore les performances (source).
Les images Distroless sont significativement plus petites que les images Linux traditionnelles. Ces dernières incluent un système d’exploitation complet, tandis que les images Distroless ne contiennent que les composants nécessaires à l’exécution de l’application. Cela entraîne des tailles d’images plus petites, des temps de téléchargement plus rapides et des besoins de stockage réduits. Voici une comparaison entre une image .NET traditionnelle et une image Azure Linux Distroless :
| Image | Taille | Réduction |
|---|---|---|
| mcr.microsoft.com/dotnet/aspnet:8.0 | ~200 Mo | - |
| mcr.microsoft.com/dotnet/aspnet:8.0-azurelinux3.0-distroless | ~50 Mo | 75 % |
Trois images sont disponibles pour Azure Linux Distroless :
En choisissant l’image appropriée, les conteneurs Docker ont été optimisés en taille tout en conservant les fonctionnalités nécessaires à l’exécution des applications .NET. Cela signifie que le déploiement d’ArmoniK pour le secteur bancaire peut être réalisé plus efficacement, avec une utilisation réduite de la bande passante et des temps de démarrage plus rapides.
Les images Distroless offrent une surface d’attaque plus petite que les images Linux traditionnelles. En supprimant les composants inutiles et en réduisant le nombre de paquets, elles limitent les vulnérabilités potentielles exploitables par des attaquants. L’absence de gestionnaire de paquets et de shell rend également plus difficile l’accès au conteneur et l’exécution de commandes malveillantes. Les attaquants ne peuvent pas entrer de commandes potentiellement dangereuses pour exploiter des vulnérabilités, car aucun shell n’est disponible.
Dans un contexte de hausse des cyberattaques, notamment dans le secteur bancaire (source), l’utilisation d’images Distroless contribue à réduire les risques de brèches de sécurité et à éliminer un point d’accès potentiel pour les attaquants.
Les images Distroless offrent de meilleures performances car elles sont conçues pour être légères et optimisées pour des applications spécifiques. En supprimant les composants inutiles présents dans les anciennes images Linux, cela se traduit par :
Exemple : Un hôte exécutant 50 conteneurs Distroless (50 Mo chacun) utilise environ 2,5 Go d’espace disque, contre environ 10 Go pour des images traditionnelles (200 Mo chacune).
En migrant vers les images Azure Linux Distroless pour les applications .NET, ArmoniK a optimisé avec succès ses images Docker en termes de taille et de sécurité. Cette transition améliore non seulement l’efficacité du déploiement d’ArmoniK, mais s’aligne également sur notre engagement à fournir des solutions sécurisées et fiables pour les charges de travail HPC dans des secteurs sensibles.