Kubernetes est devenu un standard dans les logiciels cloud natifs en ce qui concerne les conteneurs. En fait, l’enquête la plus récente de la cloud Native Computing Foundation (CNCF) a révélé que l’utilisation de Kubernetes en production est passée à 78 %. Cependant, comme pour toute technologie qui gagne en popularité en peu de temps, il existe une grande confusion autour de ce qu’est Kubernetes et des considérations de sécurité qui accompagnent Kubernetes et la conteneurisation. À titre d’exemple, dans la même enquête de la CNCF, 40 % des personnes interrogées ont mentionné la sécurité comme un défi lié à l’utilisation/au déploiement des conteneurs et 38 % ont cité la complexité comme un défi.
Pour les ingénieurs en sécurité chargés de renforcer le déploiement de conteneurs, il y a certainement une courbe d’apprentissage à surmonter. Pour vous aider à vous mettre à niveau, nous allons voir ce qu’est Kubernetes, comment il fonctionne et explorer quelques concepts de sécurité Kubernetes de base.
Kubernetes est une plate-forme utilisée pour orchestrer et gérer les charges de travail de conteneurs (par ex. Conteneurs Docker).
Depuis sa sortie initiale en 2014, Kubernetes – un projet open source de la CNCF dont les racines remontent à l’équipe de développement de Google – est devenu l’un des outils les plus populaires dans les cercles DevOps et cloud natifs.
Une condition préalable à la compréhension de Kubernetes est d’abord la compréhension des conteneurs. En un mot, les conteneurs sont des packages logiciels légers qui incluent toutes les dépendances dont une application a besoin pour s’exécuter. Les conteneurs résolvent le problème de l’exécution fiable des applications dans différents environnements. Parce qu’ils sont légers et portables, les conteneurs ont gagné en popularité et sont essentiels au développement de microservices et d’applications Web modernes.
Alors que l’utilisation d’un conteneur unique ne nécessite pas beaucoup de gestion et d’orchestration, les applications volumineuses doivent pouvoir évoluer. Les équipes de développement modernes doivent être en mesure d’automatiser et de faire évoluer le processus de déploiement de conteneurs. C’est là qu’interviennent les outils de gestion des charges de travail conteneurisées comme Kubernetes. Kubernetes fournit la gestion et l’orchestration manquantes.
L’expression « gestion et orchestration » est souvent utilisée lorsque l’on parle de Kubernetes. Cependant, cela ne nous dit pas grand-chose sur les détails. En termes simples, cela signifie que Kubernetes permet l’équilibrage de charge, la gestion de la configuration, la configuration des ressources de stockage, l’allocation automatique des ressources (par ex. Processeur et RAM par conteneur), et la montée ou la baisse du déploiement des conteneurs.
Il peut y avoir beaucoup de confusion autour du sujet Docker vs Kubernetes. Cependant, en fait, c'est assez simple :
C'est ce dernier point qui peut semer la confusion. Il se trouve que Docker propose un outil – Swarm – qui offre des fonctionnalités similaires à celles de Kubernetes. Cependant, Kubernetes est de loin l’outil de gestion et d’orchestration le plus populaire.
Outre les conteneurs, il existe d’autres concepts importants à comprendre lors de la prise en main de Kubernetes. Jetons un coup d'œil à quelques termes clés :
Kubernetes peut être utile efficacement partout où une approche d’infrastructure en tant que code pour le déploiement de conteneurs peut être utile. Cela signifie que les équipes de développement Agile et les équipes axées sur les pratiques DevOps utiliseront souvent Kubernetes pour automatiser leurs pipelines d’intégration et de livraison continues (CI/CD). En outre, Kubernetes peut aider à mettre à l’échelle automatiquement les applications cloud natives en surveillant l’intégrité des nœuds et l’utilisation des ressources, et en augmentant ou en diminuant la taille selon les besoins.
Bien sûr, si Kubernetes ajoute de la valeur du point de vue de l’automatisation et de l’évolutivité, il ajoute également une nouvelle ride pour les équipes de sécurité. Comment pouvez-vous vous assurer que vos applications et services sont déployés en toute sécurité ? Comme toujours, cela commence par la compréhension de votre modèle de menace et de votre propension au risque, mais quelques éléments de base vous aideront à démarrer.
Il est également essentiel de disposer d’un plan pour la visibilité des conteneurs et l’analyse des vulnérabilités afin de garantir que la résolution des problèmes se produit rapidement et que vous restez conforme à toutes les normes pertinentes. Pour commencer à analyser les vulnérabilités des conteneurs et à évaluer la posture de sécurité, nous vous recommandons de lire le document PDF (Continuous Container Visibility and Conformité).
Maintenant que vous comprenez le fonctionnement de Kubernetes à un niveau élevé, c’est-à-dire le contrôle et la gestion automatique du déploiement des conteneurs, vous pouvez passer aux étapes suivantes pour déployer k8s en toute sécurité. Pour en savoir plus sur la mise en œuvre de la sécurité avec des conteneurs, Kubernetes et une infrastructure sans serveur, inscrivez-vous au webinaire gratuit How to Layer Security into Modern Cloud Application présenté par Hillel Solow, expert en sécurité du cloud.