Qu’est-ce que la sécurité Kubernetes ?

La sécurité Kubernetes est basée sur les 4 « C » de la sécurité Cloud : Cloud, Cluster, Conteneur et Code :

  • Cloud (ou Data Center d’entreprise/installation de colocalisation) : L’infrastructure physique sous-jacente est la base de la sécurité Kubernetes. Que le cluster soit construit sur son propre Data Center ou sur un fournisseur de Cloud, les meilleures pratiques de base en matière de fournisseur de Cloud (ou de sécurité physique) doivent être respectées.
  • Cluster : La sécurisation d’un cluster Kubernetes implique à la fois les composants configurables tels que l’API Kubernetes et la sécurité de toutes les applications qui font partie du cluster. Dans la mesure où la plupart des applications Cloud sont conçues autour de microservices et d’API, la sécurité des applications repose uniquement sur le maillon le plus faible de la chaîne de services qui constitue l’application entière.
  • Conteneur : Les meilleures pratiques de conception de conteneur consistent à : commencer par la base de code la plus petite possible (en excluant les bibliothèques ou fonctions inutiles), éviter d’accorder des privilèges inutiles aux utilisateurs dans le conteneur, et s’assurer que les conteneurs sont analysés pour détecter les vulnérabilités au moment de la création.
  • Code : Le code présente une surface d’attaque majeure pour n’importe quel environnement Kubernetes. Des règles simples comme le chiffrement du protocole TCP à l’aide de TLS, la non-exposition des ports inutilisés, l’analyse et les tests réguliers peuvent aider à prévenir les problèmes de sécurité dans un environnement de production.

Kubernetes en 5 minutes

L’état de Kubernetes 2021

Pourquoi la sécurité Kubernetes est-elle importante tout au long du cycle de vie des conteneurs ?

La sécurité Kubernetes est importante tout au long du cycle de vie des conteneurs en raison de la nature distribuée et dynamique d’un cluster Kubernetes. Différentes approches de la sécurité sont requises pour chacune des trois phases du cycle de vie d’une application : création, déploiement et exécution. Kubernetes offre des avantages innés en matière de sécurité. Par exemple, les conteneurs d’applications ne sont généralement pas corrigés ou mis à jour. À la place, les images de conteneur sont entièrement remplacées par de nouvelles versions. Cela permet un contrôle strict des versions et des retours arrière rapides si une vulnérabilité est découverte dans le nouveau code.

Cependant, les pods individuels étant transitoires et éphémères, l’environnement d’exécution en constante évolution peut présenter des défis pour les professionnels de la sécurité informatique. En effet, les applications et les liaisons API vers d’autres applications et services sont en constante évolution.

Quelles sont les principales vulnérabilités de la sécurité Kubernetes tout au long du cycle de vie de l’application et comment les corrigez-vous ?

Les outils de sécurité Kubernetes doivent :

  • Réduire le temps nécessaire pour garantir l’absence de compromission dans le code.
  • Fournir des signatures numériques pour un niveau de confiance du code.
  • Assurer la visibilité et la transparence non seulement dans le code, mais aussi dans les problèmes de configuration.
  • Empêcher l’ingress (connexion entrante) ou l’egress (connexion sortante) d’informations vers des services non sécurisés.

Quelles sont les principales vulnérabilités de la sécurité Kubernetes lors de la création ?

  • Code issu de registres non fiables Un code non fiable peut inclure des logiciels malveillants ou des portes dérobées qui pourraient involontairement accorder l’accès à des acteurs malveillants.
  • Images de base démesurées. Pour les applications conteneurisées, les développeurs doivent éliminer les packages, les bibliothèques et les shells inutiles qui pourraient être compromis.

Quelles sont les principales vulnérabilités de la sécurité Kubernetes lors du déploiement ?

  • Accorder des privilèges inutiles. Dans la mesure du possible, réduisez les privilèges au minimum et montrez uniquement les secrets dont une tâche a besoin pour réduire la surface d’attaque.
  • Impossible d’isoler les applications dans le cluster. Les espaces de nommage doivent être utilisés pour séparer les ressources et les équipes les unes des autres.
  • Mouvement latéral au sein du cluster. Utilisez des règles qui segmentent le réseau pour empêcher le déplacement latéral d’une attaque au sein du cluster.
  • Accès non autorisé. Assurez-vous que les contrôles d’accès basés sur les rôles (RBAC) sont correctement configurés pour limiter l’accès.

Quelles sont les principales vulnérabilités de la sécurité Kubernetes pendant l’exécution ?

  • Attaques d’infrastructures. Pendant l’exécution, les éléments de l’infrastructure Kubernetes, notamment le serveur d’API, etcd et les contrôleurs, présentent tous leurs propres surfaces d’attaque.
  • Complexité. L’intégrité continue d’un cluster Kubernetes comporte de nombreuses parties mobiles. Les conteneurs compromis doivent être rapidement isolés, arrêtés et remplacés par des conteneurs sains pendant que la source de l’attaque est localisée et corrigée.

Qu’est-ce qu’une liste de contrôle de la sécurité Kubernetes de haut niveau ?

Les meilleures pratiques recommandées sont les suivantes : commencez par un minimum d’images sans distribution et n’ajoutez que ce qui est absolument nécessaire. Moins il y en a d’éléments, plus c’est sécurisé.

  • Utilisez un système d’exploitation hôte minimal, mettez fin aux montages en lecture seule et utilisez les options SELinux pour encore plus de contrôle
  • Analysez les images pour rechercher des vulnérabilités de haut en bas, y compris les images du système d’exploitation et les images extérieures de toute nature. Il n’existe pas de source fiable extérieure.
  • Utilisez les espaces de nommage et le contrôle d’accès basé sur les rôles pour segmenter le cluster et les utilisateurs de manière logique. Si un élément n’est pas nécessaire, il ne doit pas être visible.
  • Le réseau Kubernetes par défaut permet des communications universelles. Ainsi, la segmentation du réseau doit être mise en place avant la production. Définissez avec soin des règles d’ingress/egress pour garantir le routage correct des connexions.
  • Limitez les privilèges au minimum et n’exécutez jamais les processus d’application en tant que racines. L’utilisation d’un système de fichiers racines en lecture seule empêche toute attaque qui dépend de l’installation de logiciels ou de la modification du système de fichiers.
  • Intégrez des fonctions de sécurité comme l’analyse d’images dans le pipeline CI/CD. Mieux encore, exécutez des tests de sécurité CIS.
  • Sécurisez le cluster. Configurez le contrôle d’accès basé sur les rôles pour limiter l’accès au serveur d’API et vous assurer que toutes les communications etcd sont sécurisées avec le chiffrement TLS. De même, verrouillez les autorisations kubelets en configurant le contrôle d’accès basé sur les rôles pour les kubelets.
  • Utilisez les contrôles intégrés dans Kubernetes, comme la configuration du contexte de sécurité pour limiter l’accès aux pods.
  • La sécurité proactive doit inclure la surveillance de l’activité des processus, des communications entre les services et des communications externes au cluster.

Solutions et produits connexes

Runtime Kubernetes prêt pour l’entreprise

Rationalisez les opérations sur une infrastructure multicloud.

Kubernetes contre Docker

Quels outils choisir pour réussir avec les conteneurs ?

Conteneurs Docker sur Kubernetes

Une fois que vous avez compris ce que sont les conteneurs et Kubernetes, vous devez comprendre comment ils fonctionnent ensemble.