What is Kubernetes?

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.

Évaluation gratuite Guide de sécurité Kubernetes

What is Kubernetes?

Definition

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.

Kubernetes vs Docker

Il peut y avoir beaucoup de confusion autour du sujet Docker vs Kubernetes. Cependant, en fait, c'est assez simple :

  • Docker est une plateforme qui permet de créer et de gérer des conteneurs. Ce n'est pas la seule plateforme à conteneurs, mais c'est la plus populaire.
  • Kubernetes est un outil permettant de gérer plusieurs conteneurs, y compris des conteneurs Docker.
  • Docker propose un outil avec certaines des mêmes fonctionnalités que Kubernetes connu sous le nom de Swarm.

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.

Concepts et termes importants de Kubernetes

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 :

  • K8. Il s’agit d’un synonyme de Kubernetes. Les développeurs créent parfois des raccourcis pour les termes courants en utilisant la première et la dernière lettre d'un mot, le nombre de lettres qui les séparent, et en les combinant pour en faire un raccourci. L’interopérabilité devient « i14y », la localisation devient « l10n » et Kubernetes devient « k8s ».
  • Capsules. Il s’agit des plus petites unités qui peuvent être déployées dans Kubernetes. Un pod est composé d'un ou de plusieurs conteneurs qui partagent des ressources de stockage et de réseau et d'une spécification pour la gestion du ou des conteneurs.
  • Charges de travail. Il s’agit de l’application (des ensembles de pods, en fait) que Kubernetes exécute. Kubernetes déploie des mises à jour et met à l’échelle les pods en fonction de ce que dicte la charge de travail configurée.
  • Nœuds. Le « matériel » de calcul (pensez à la RAM et au processeur) sur lequel les charges de travail s’exécutent est connu sous le nom de nœuds. Le « matériel » peut être n’importe quoi, d’un Raspberry Pi à une machine virtuelle en passant par un serveur physique, la clé ici est que les ressources de calcul proviennent des nœuds. Il existe deux principaux types de nœuds : les nœuds worker/minion qui exécutent les charges de travail et les nœuds principaux qui gèrent un ensemble de nœuds work/minion.
  • Clusters. Un cluster Kubernetes est un groupe de nœuds. Dans un cluster, les nœuds de travail gèrent les charges de travail et un nœud principal contrôle le fonctionnement des nœuds de travail.

À quoi sert Kubernetes ?

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.

Concepts importants de sécurité Kubernetes

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.

  • Les 4Cde la sécurité cloud native – Kubernetes propose une approche à 4 niveaux de la sécurité cloud native connue sous le nom de 4C : C ode, C ontainer, C lustre et C loud/C o-location/ Corporate datacenter. À chaque niveau, vous devez vous assurer que les meilleures pratiques de sécurité sont respectées. Cela signifie différentes choses à différents niveaux. Par exemple, s’assurer que le code applique le chiffrement des données en transit et limite l’accès aux ports réseau essentiels, interdire les utilisateurs privilégiés dans les conteneurs, renforcer les composants de cluster Kubernetes configurables et suivre les meilleures pratiques de sécurité de votre fournisseur de services cloud.
  • Politiques de sécurité des pods. Avec les pods Kubernetes, il existe 3 politiques de sécurité de base. Pour sécuriser correctement votre environnement, vous devez comprendre les compromis entre convivialité et sécurité, et agir en conséquence.
    • Privilégiée. Le niveau d'autorisations le plus élevé. Des augmentations de privilèges connues sont possibles grâce à cette politique.
    • Base de référence/par défaut. Le juste milieu entre privilégiés et restreints. Empêche les escalades de privilèges connues.
    • Restreint. D’après les meilleures pratiques de renforcement des espaces Kubernetes, il s’agit de la plus restrictive des 3 stratégies de base.
  • Contextes de sécurité des pods. Le contexte de sécurité d'un pod configure ses paramètres de sécurité au moment de l'exécution. Cela couvre des aspects tels que le contrôle d'accès, le fonctionnement avec des privilèges ou non, le montage de systèmes de fichiers en lecture seule, etc. Vous pouvez penser que cela ressemble beaucoup aux politiques de sécurité des Pod, et elles sont liées. Les contextes de sécurité sont ce qui se passe au moment de l'exécution, tandis que les politiques de sécurité vous permettent de définir les paramètres des contextes utilisés au sein d'un cluster.
  • Secrets. L'outil d'infrastructure en tant que code est excellent, mais vous ne voulez probablement pas que des jetons ou des mots de passe OAuth soient placés dans un fichier YAML. Les secrets sont la façon dont Kubernetes stocke ce type d’informations sensibles.

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é).

Prochaines étapes avec Kubernetes

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.

×
  Commentaires
Ce site web utilise des cookies à des fins de fonctionnalité, d’analyse et de marketing. En continuant d’utiliser ce site web, vous acceptez l’utilisation des cookies. Pour plus d’informations, consultez notre Avis concernant les cookies.
OK