Les enjeux de la conteneurisation

conteneurs multicouleurs sur un port
17 janvier 2023

Réel levier de modernisation des applications, la conteneurisation permet aujourd’hui aux entreprises de mener une vraie révolution informatique. En effet, les conteneurs offrent une portabilité extrêmement facilitée, par exemple en permettant aux équipes IT de réduire leurs cycles de développement jusqu’à la production, avec plus de fiabilité et une réplication plus aisée.

Même si l’approche par conteneurisation demande une certaine réorganisation des équipes IT, cela représente un gain de temps et de productivité non négligeable. C’est ici toute la manière de concevoir des applications qui se voit transformée, et son utilisation s’accroit au sein des Clouds publics ou privés, la conteneurisation devenant une pierre angulaire de la construction d’architectures en permettant de passer plus simplement d’un Cloud à un autre, etc.

Quels sont les principaux enjeux pour les entreprises dans la conteneurisation ? C’est ce que nous allons voir au travers de cet article.

La conteneurisation, qu’est-ce que c’est ?

La conteneurisation – ou le fait de créer des conteneurs – est une manipulation qui consiste à réunir tout le code et les composants d’une application ou d’un logiciel (bibliothèques, frameworks et autres dépendances) dans une sorte de « boite virtuelle », appelée conteneur. Ces derniers sont facilement transportables et exécutables avec fiabilité sur toutes les infrastructures et tous les environnements, quel que soit le système d’exploitation en place. Ce procédé de conteneurisation permet ainsi d’éviter tout problème d’adaptation obligatoire selon le système d’exploitation, de compatibilité de code, etc. et réduit la complexité de configuration et d’administration des applications. Les applications créées par ce biais sont donc directement « Cloud Natives », agiles et évolutives.

Chaque conteneur peut être mis en place à tout instant et modifié selon l’usage, les besoins métiers et prérequis des entreprises, puisque son démarrage est ultrarapide et n’impacte pas l’exécution. Les cycles de livraison des applications se voient donc accélérés et grandement facilités. Des outils tels que Docker (moteur de conteneurs) et Kubernetes (orchestrateur) peuvent être mis en place afin d’exécuter tout en cohérence ces applications tout au long de leur cycle de vie, quelle que soit l’infrastructure sur laquelle elles sont basées (on premise, cloud, hyperconvergée…). Tout cela permet d’accélérer le déploiement de l’approche DevOps au sein des organisations, tout en renforçant l’agilité au sein de la DSI.

Schéma explicatif du fonctionnement des conteneurs

Un enjeu de sécurité

Le principe de conteneurisation, isolant les applications et leurs composants des systèmes d’exploitation sur lesquels les conteneurs sont exécutés, contribue à la sécurité globale du système d’information. Cependant, cela n’empêche pas les cyberattaquants de lancer des offensives contre les conteneurs, faisant de la sécurité de ces derniers une priorité pour les DSI.

Dans un environnement conteneurisé, il est primordial d’étendre la sécurisation à l’ensemble de l’infrastructure ainsi qu’à la chaîne de développement.

Lorsqu’une application monolithique est attaquée et compromise, c’est toute l’application, ses données et parfois même le système d’exploitation sur lequel elle s’exécute qui sont impactés. Les applications conteneurisées, elles, sont souvent « découpées » en petits morceaux – des micro-services – plus ou moins indépendants et isolés. Chaque morceau de l’application s’exécute dans un conteneur dédié et les communications entre eux se font via des API au travers du réseau. En cas de compromission d’un conteneur, c’est uniquement un micro-service et son conteneur qui le sont. Un attaquant devra mettre en œuvre plus de moyens et de temps pour s’échapper du conteneur et/ou se déplacer latéralement pour attaquer les autres conteneurs ou le reste du système d’information via le réseau.

schéma expliquant la différence entre des conteneurs et une machine virtuelle

Si vous hébergez des données dites « sensibles », il est préférable qu’elles ne soient pas présentes sur un conteneur accessible depuis Internet, mais de les appeler via des API dédiées et sécurisées (authentification, gestion des droits, …). Pour pallier l’échappement du conteneur, il vous faudra « durcir » les conteneurs, les systèmes hôtes et les applications (« moindre privilège », réduction de la surface d’attaque, etc.). Et pour vous prémunir des mouvements latéraux il conviendra de mettre en place des éléments de sécurité réseau type firewall, WAF, IDS/IPS, etc. Il faudra aussi veiller à ce que les images utilisées proviennent de sources fiables, qu’elles soient maintenues et régulièrement mises à jour. Si une image contient une vulnérabilité, tous les conteneurs que vous déploierez à partir de cette image en seront porteurs.

Il peut aussi être intéressant d’appliquer l’approche « DevSecOps » et d’intégrer la sécurité tout au long du cycle de vie de l’application en développant une culture de la sécurité au sein de vos équipes, ainsi qu’en automatisant et standardisant des tests de sécurité avant le passage en production.

Une surveillance en temps réel des conteneurs est également recommandée, avec analyses avancées et tenue de journaux précis. Cela vous apportera plus de rapidité et de pertinence dans l’investigation en cas de cyberattaques, qui peuvent parfois s’avérer compliquées à la vue du faible temps de vie des conteneurs (donc à la rapidité des attaques). Un monitoring constant de vos conteneurs et de votre architecture tout au long de son cycle de vie vous permettra d’identifier plus rapidement si un redimensionnement est nécessaire, et donc une adaptation des mesures de sécurité.

Enfin, il ne faut également pas négliger l’importance des sauvegardes régulières, et la capacité de reprise après sinistre.

Un enjeu de surveillance et journalisation

Comme évoqué dans le chapitre précédent, la surveillance et la journalisation de vos conteneurs et votre architecture est un enjeu extrêmement important. En effet, la durée de vie particulièrement courte d’un conteneur, leur dynamisme et leur construction multicouches les rendent plus complexes à surveiller, par comparaison à une application traditionnelle exécutée sur une machine virtuelle par exemple. Pourtant, cette surveillance est primordiale, et permet de garantir leur fonctionnement optimal au sein des infrastructures dans lesquelles ils sont déployés. Il est donc nécessaire de surveiller entre autres l’état de leur mémoire, des processeurs et leurs limites respectives, l’état des clusters, de l’infrastructure, etc., ainsi que l’ensemble de la couche applicative.

Une meilleure visibilité des coûts

La visibilité des coûts engendrés par la mise en place d’infrastructures à base de conteneurs constitue également un enjeu pour les entreprises. Il est possible d’optimiser les coûts dès la construction d’une architecture à base de conteneurs, en identifiant bien le dimensionnement nécessaire des clusters selon les usages envisagés (principe du rightsizing). Une phase de design bien exécutée va permettre, dès le départ, d’estimer justement les différents besoins en termes de CPI, etc., et ainsi de pouvoir partir sur une instance parfaitement adaptée.

Ensuite, tout au long de leur durée de vie, les conteneurs offrent en effet un réel potentiel d’optimisation financière, de par leur simplicité de reproduction, de déploiement, etc. Il peut donc être pertinent, en plus des pratiques DevSecOps, d’intégrer dans votre organisation des pratiques FinOps adaptées.

En effet, plusieurs méthodes peuvent être envisagées : appliquer le principe du chargeback, c’est à dire appliquer des étiquettes sur les différentes ressources utilisées pour avoir de la visibilité sur quelle ressource engendre quel coût, et pouvoir ainsi refacturer ce coût au service concerné. Cette méthode induit néanmoins une certaine complexité puisqu’il arrive que lors d’utilisation d’un même conteneur pour plusieurs applications, les coûts soient en réalité partagés entre les services. Il est donc nécessaire d’affiner la visibilité sur les coûts et l’usage des conteneurs. C’est ce que proposent certains outils d’orchestration de type Kubernetes, en permettant d’avoir une vision plus précise, et ce à différentes échelles (cluster, labels, namespaces…). Les coûts sont ainsi mieux identifiés, et donc peuvent être mieux répartis selon les services et les usages. Faisons d’ailleurs un focus sur les outils d’orchestration dans le chapitre suivant.

L’orchestration de ces conteneurs

Les différents outils d’orchestration dont se compose le marché sont de formidables alliés pour vous aider à répondre à l’ensemble de ces enjeux. Ils vous permettent d’automatiser certaines actions, comme le déploiement, mais également toute la gestion de vos conteneurs, leur mise à l’échelle, etc. Vous pouvez vous tourner vers différents outils tels que Kubernetes par exemple, qui est une plateforme Open Source, etc. Le choix pourra également dépendre de la taille de votre infrastructure à base de conteneurs.

Donc, finalement, quels sont les principaux enjeux de la conteneurisation ?

Les conteneurs permettent de moderniser et simplifier l’organisation et le développement des architectures Cloud. Cependant, afin de toujours optimiser les performances de vos conteneurs, certaines configurations sont essentielles, qui vous permettront de répondre aux différents enjeux de la conteneurisation. Sécurité, visibilité des coûts, journalisation et orchestration doivent ainsi intégrer les processus de mise en place de conteneurs.

Ainsi fait, vous gagnerez un temps considérable, et gérerez avec plus de simplicité le déploiement et la migration de vos architectures Cloud.

Chez FullSave, nos experts sauront vous conseiller sur la mise en place d’une solution de conteneurisation adaptée à votre structure. Vous pourrez ainsi automatiser le déploiement et la gestion de l’ensemble de vos applications sur les infrastructures hautes performances FullSave. Vous profiterez également d’un accompagnement tout au long de la phase de RUN de votre infrastructure de conteneurs.

Crédit photo

© Pixabay