Les problèmes de sécurité Kubernetes les plus courants et comment vous pouvez les atténuer

Publié: 2021-03-30

Kubernetes et les conteneurs promettent trois choses :

  • Développement et publication d'applications plus rapides.
  • Corrections de bugs plus rapides.
  • Augmentation de la vitesse des fonctionnalités.

Cependant, cela se fait souvent au prix d'une sécurité compromise, ce qui n'est acceptable dans aucune technologie de développement Web.

Pour se rendre compte de l'état de la sécurité de Kubernetes, voici deux facteurs issus d'une enquête menée par StackRox fin 2020 :

  • 90 % des participants à l'enquête ont déclaré avoir été confrontés à un incident de sécurité lié aux conteneurs et à Kubernetes au cours des 12 derniers mois.
  • 44 % des participants ont dû retarder la publication de leur application en raison de problèmes de sécurité concernant Kubernetes.

Quelles sont les raisons les plus courantes derrière ces problèmes de sécurité ?

Les problèmes de sécurité les plus courants liés à Kubernetes
1. Mauvaises configurations

Des enquêtes ont révélé que les expositions causées par des erreurs de configuration sont le risque le plus répandu dans la sécurité des conteneurs et des environnements Kubernetes.

Lorsque vous utilisez Kubernetes pour créer des applications conteneurisées, la gestion de la configuration est le plus grand risque pour les praticiens de la sécurité.

Cela s'explique principalement par le fait que le marché regorge d'outils d'analyse des vulnérabilités, mais la gestion de la configuration repose encore largement sur la considération humaine.

Voici quelques conseils sur la configuration de certains des composants communs d'une application conteneurisée pour vous assurer que la sécurité n'est pas compromise.

Images:

Évitez d'utiliser tout logiciel qui n'est pas absolument nécessaire. Cela inclut les gestionnaires de packages, les outils réseau et les clients tels que curl ou les shells Unix.

N'oubliez pas que l'utilisation de tout logiciel augmente le risque de sécurité. De plus, n'utilisez que des images provenant de sources fiables.

secrets :

Évitez d'intégrer des secrets dans les images ou de les exposer inutilement.

En tant que pratique sécurisée, utilisez des outils de gestion des secrets fiables pour vous assurer que les déploiements ne montent les secrets que si et quand ils sont nécessaires.

Espaces de noms :

Utilisez généreusement les espaces de noms. Ils agissent comme une limite pour Kubernetes et les politiques de réseau. L'utilisation d'espaces de noms peut limiter les effets d'une attaque et peut contenir des erreurs et des attaques afin qu'elles ne puissent pas se propager et causer davantage de destruction.

Privilèges d'exécution :

Il n'y a qu'une seule règle de privilèges : en autoriser le moins possible pour rendre le logiciel le plus sûr.

Politiques réseau

Selon les paramètres par défaut, les pods peuvent se parler indépendamment dans Kubernetes. Cependant, il est recommandé de mettre en œuvre des stratégies réseau pour limiter l'interaction des pods. Cela peut empêcher toute menace de se propager dans le conteneur et dans l'ensemble de l'application.

Stockage persistant

Vous devez avoir une bonne visibilité sur la configuration et l'utilisation du stockage persistant. En effet, il s'agit du seul vecteur persistant dans une configuration de conteneur autrement éphémère.

Avion de contrôle

Si vous gérez vous-même les clusters Kubernetes, il est très important de configurer le plan de contrôle. En effet, certains clusters peuvent prendre des décisions globales et si un cluster est infecté, cela peut compromettre l'ensemble de l'écosystème.

La meilleure approche pour atténuer ces problèmes et divers autres problèmes de sécurité liés à la configuration consiste à utiliser une combinaison d'efforts manuels et automatisés pour s'assurer que la configuration est effectuée de manière à garantir la sécurité de Kubernetes et, par conséquent, des logiciels dont ils font partie. de.

2. Vulnérabilités

Un certain nombre de vulnérabilités différentes ont été découvertes et exploitées dans Kubernetes et d'autres conteneurs au cours des dernières années.

Les exploits de vulnérabilités les plus courants incluent :

  • Extraction de crypto.
  • Installation de logiciels malveillants.
  • Escalade de privilèges.
  • Accès hôte.

L'approche efficace pour gérer la vulnérabilité doit se poursuivre tout au long du cycle de vie du conteneur et doit inclure les éléments suivants :

  • Identifier et résoudre les vulnérabilités des images, y compris celles du système d'exploitation installé.
  • Détecter et atténuer toutes les vulnérabilités dans les bibliothèques d'exécution des langages de programmation que vous utilisez.
  • Prendre des mesures pour empêcher les images présentant des vulnérabilités à risque d'accéder au registre de conteneurs accessible en production.
  • Prendre des mesures pour contenir les menaces présentant un risque de sécurité supérieur à un certain niveau.
  • Utilisation de contrôleurs d'admission tiers dans les clusters Kubernetes pour empêcher la planification des composants de conteneur vulnérables.
3. Menaces d'exécution

Une fois que vous avez atténué tous les problèmes de sécurité de Kubernetes, la phase d'exécution a son propre ensemble unique de menaces de sécurité.

Même si vous avez mis l'accent sur la sécurité et minimisé les risques de toutes les manières possibles, il peut y avoir diverses menaces d'adversaires au moment de l'exécution.

Voici certaines choses que vous pouvez faire pour atténuer ces menaces :

Surveillance de l'activité d'exécution :

Démarrez le processus de surveillance avec le plus grand nombre d'activités de conteneurs les plus pertinentes pour la sécurité. Cela inclut l'activité de processus, les communications réseau au sein et entre les services conteneurisés, et la communication vers et depuis les serveurs et clients externes.

Profitez des données déclaratives

Utilisez les informations de temps de construction et de déploiement pour évaluer la différence entre l'activité observée et l'activité attendue afin de savoir s'il existe une activité suspecte.

Gardez la communication réseau limitée

Le temps d'exécution est le moment où vous pouvez voir la différence entre le type de trafic réseau autorisé et celui nécessaire pour faire fonctionner le système. C'est l'occasion qui peut être utilisée pour supprimer toute communication inutile qui pourrait constituer une menace pour la sécurité de Kubernetes.

Observez attentivement les processus

Observez l'application pendant un certain temps pour connaître tous les processus qui sont exécutés pour le bon fonctionnement de l'application. Faites une liste de tous les processus essentiels et vérifiez l'application au hasard pour voir si un processus en cours d'exécution n'est pas le processus habituel.

4. Échec de l'audit de conformité

L'un des principaux éléments qui garantissent la sécurité de Kubernetes et des conteneurs est la conformité. Si la sécurité n'est pas dûment soulignée dans le cycle de vie du développement logiciel, cela peut entraîner l'échec d'un audit de conformité.

Il existe de nombreuses normes de conformité qui peuvent être utilisées pour Kubernetes et la sécurité des conteneurs.

PCI-DSS, HIPAA et SOC 2 sont des normes de conformité spécifiques à l'industrie.

L'une des principales erreurs commises à cet égard est de ne pas intégrer les audits de conformité au SDLC dès le départ ou de ne les considérer qu'au moment de l'exécution. Pour vous assurer que tout dans le logiciel est conforme :

  • Intégrez la conformité au SDLC dès le départ.
  • Utilisez les normes de l'industrie pour rendre les composants du logiciel conformes.