La sécurité de Kubernetes, qu'est-ce que c'est ?

Copier l'URL

Kubernetes (« K8s » ou « Kube ») est une plateforme Open Source d'orchestration des conteneurs qui automatise le déploiement, la gestion et la mise à l'échelle des Applications conteneurirsées. Kubernetes organise les conteneurs Linux en clusters et utilise des interfaces de programmation d'applications (API) pour connecter les microservices conteneurisés. Parce qu'une couche ou un service intervenant dans un déploiement Kubernetes peut présenter des vulnérabilités, le processus de sécurisation des clusters Kubernetes s'avère parfois complexe. 

Pour sécuriser Kubernetes, les équipes ont le choix entre deux approches. La première approche est la sécurité centrée sur les conteneurs, qui privilégie la sécurisation des images de conteneurs et de l'exécution de conteneurs. La seconde approche, plus large, est la sécurité native pour Kubernetes, qui repose sur l'extraction du contexte de Kubernetes et l'utilisation des contrôles Kubernetes intégrés pour mettre en œuvre les meilleures pratiques de sécurité basées sur les risques dans l'ensemble du cycle de développement de l'application. La sécurité native pour Kubernetes s'attaque également aux risques et aux vulnérabilités spécifiques de Kubernetes : politiques mal configurées en matière de contrôle d'accès basé sur les rôles de Kubernetes, composants du plan de contrôle de Kubernetes non sécurisés et secrets de Kubernetes utilisés à mauvais escient.

Bien qu'elle soit relativement nouvelle, la technologie Kubernetes a été largement adoptée ces dernières années. Les investissements en matière de sécurité n'ont cependant pas toujours suivi le même rythme. Et dans un contexte de manque de sensibilisation à la sécurité et de déficit permanent de compétences, les incidents de sécurité peuvent avoir des conséquences dévastatrices. Les problèmes de sécurité entraînent des retards ou ralentissent le développement et le déploiement des applications. Et lorsqu'ils aboutissent à un incident, ils peuvent occasionner une perte de chiffre d'affaires ou de clients, le licenciement d'employés et d'autres conséquences sur les activités de l'entreprise.

Si les technologies Kubernetes et de conteneurisation permettent d'adopter une approche DevOps plus rapide et évolutive, elles impliquent également certains autres risques de sécurité. Plus le nombre de conteneurs déployés est élevé, plus la surface d'attaque s'étend et plus il est difficile de repérer les conteneurs qui présentent des vulnérabilités ou des erreurs de configuration.

Risques et défis communs pour les environnements Kubernetes

Mise en réseau pod à pod dans Kubernetes

L'un des principaux avantages de Kubernetes est son large éventail d'options de configuration réseau, qui contrôlent la façon dont les pods communiquent au sein d'un cluster. Toutefois, Kubernetes ne restreint pas par défaut la communication réseau entre les pods au sein d'un cluster, de sorte que chaque pod peut communiquer avec tous les autres pods jusqu'à ce qu'une politique réseau pertinente soit définie. Lorsqu'un acteur malveillant viole la sécurité d'un seul pod, celui-ci peut ensuite être utilisé comme vecteur pour attaquer tous les autres pods de ce cluster. Les politiques réseau de Kubernetes sont écrites à l'aide de fichiers YAML. C'est l'une des raisons pour lesquelles la mise en œuvre des politiques réseau Kubernetes est parfois difficile, conduisant souvent à simplement privilégier la vitesse du réseau au détriment de sa segmentation. 

Gestion des configurations

Les mauvaises configurations, qui sont souvent dues à des erreurs humaines et à l'absence d'analyses de sécurité automatisées, représentent un risque sérieux pour les environnements Kubernetes et peuvent conduire à des violations. En raison de la nature dynamique des conteneurs, il est parfois difficile d'identifier les erreurs de configuration et de maintenir une posture de sécurité cohérente. La technologie Kubernetes a été développée pour donner la priorité à la vitesse et à l'opérabilité, de sorte que les configurations par défaut sont généralement ouvertes ou non restreintes. Les entreprises qui l'utilisent sont donc vulnérables aux attaques.

Problèmes liés à la chaîne d'approvisionnement des logiciels

Les problèmes de sécurité dans la chaîne d'approvisionnement des logiciels (composants d'application vulnérables, contrôles d'accès insuffisants, absence de nomenclature des logiciels, faiblesses du pipeline CI/CD, application incohérente des politiques) préoccupent aussi grandement les entreprises. Les chaînes d'approvisionnement des logiciels tentaculaires, caractéristiques des environnements cloud-native et Kubernetes, nécessitent un ensemble unique de contrôles. Leur sécurisation doit commencer dans l'environnement de développement et s'étendre jusqu'à l'environnement d'exécution. Il faut tenir compte de l'ensemble du contenu (code source, images, artefacts), des outils (développement et sécurité) et des individus impliqués dans la chaîne d'approvisionnement. La sécurisation de la chaîne d'approvisionnement des logiciels peut intervenir à de nombreux niveaux, notamment l'analyse du code source, le contrôle d'accès, l'attestation de sécurité et les nomenclatures logicielles 

Intégration en amont de la sécurité

La sécurisation de la chaîne d'approvisionnement des logiciels est étroitement liée au défi que représente l'intégration de la sécurité dès le début du projet. Selon cette approche, les mesures de sécurisation de Kubernetes devraient être mises en œuvre dès les premières étapes du cycle de vie des conteneurs. C'est un vrai défi, car l'intégration en amont de la sécurité exige des équipes de développement qu'elles maîtrisent les connaissances et les outils nécessaires à la sécurisation, pour prendre des décisions en matière de sécurité dans le cadre de leurs workflows. Les avantages de cette approche pour les entreprises restent très intéressants, et c'est même la méthode de mise en œuvre recommandée pour la sécurisation de Kubernetes et des conteneurs. Plus les problèmes de sécurité sont traités tôt dans le cycle de développement, moins il y a de risques de problèmes d'exécution, ce qui réduit les retards du projet.

Détection des menaces et résolution des incidents en cours d'exécution

Le nombre de vecteurs de menaces que présentent les applications conteneurisées exécutées dans un environnement Kubernetes constitue un défi pour les équipes chargées de la détection et de la résolution de ces problèmes. Les attaquants disposent de plusieurs moyens pour accéder à un environnement Kubernetes, exécuter du code malveillant, élever les privilèges, mettre en place la persistance, échapper à la détection et se déplacer latéralement, pouvant entraîner la suppression ou l'exfiltration de données, une saturation de service ou un détournement de ressources. Apprenez-en plus sur ce sujet en lisant notre article de blog sur le modèle MITRE ATT&CK® pour Kubernetes

Sécurité de l'infrastructure Kubernetes

Les nombreuses couches de Kubernetes, des composants du plan de contrôle (serveur d'API, kube-scheduler, kube-controller-manager, etcd) aux composants des nœuds de calcul qui exécutent les charges de travail conteneurisées, posent leurs propres problèmes en matière de sécurité. Chacun de ces services doit être configuré de manière sécurisée afin de fournir aux applications un environnement de cluster renforcé pour leur exécution. En outre, la méthode de sécurisation des différents composants de la plateforme Kubernetes dépend de la façon dont celle-ci est exécutée : service autogéré ou service cloud entièrement géré. Dans les environnements autogérés, l'ensemble des composants du plan de contrôle sont souvent sous la responsabilité du client, en plus des composants des nœuds. Avec un service Kubernetes géré, la responsabilité de la sécurité est partagée entre le fournisseur et le client, ce qui représente un autre défi.

Les technologies Kubernetes et de conteneurisation offrent plusieurs fonctions de sécurité intégrées qui aident les équipes à faire face aux risques associés aux problèmes de sécurité des conteneurs. Voici quelques exemples :

  • Les conteneurs présentant des problèmes de sécurité découverts en cours d'exécution sont corrigés lors de la phase de création et redéployés, plutôt que mis à jour ou corrigés en cours d'exécution. Connue sous le nom d'immutabilité, cette fonction permet de mieux prévoir le comportement des conteneurs et de détecter les comportements anormaux. 
  • Les politiques réseau segmentent les pods ou les groupes de pods, tandis que les contrôleurs d'admission appliquent des politiques pour une meilleure gouvernance. 
  • Le contrôle d'accès basé sur les rôles permet d'attribuer des autorisations spécifiques aux utilisateurs et aux comptes de service.
  • Les secrets Kubernetes protègent mieux les données sensibles comme les clés de chiffrement.

Kubernetes n'est cependant pas une plateforme de sécurité. Les équipes doivent donc évaluer les risques et cibler les vulnérabilités au niveau de chaque couche de l'environnement Kubernetes et à chaque étape du cycle de vie des conteneurs et des applications. Pour gérer efficacement la sécurité de Kubernetes, il faut tirer parti des contrôles de sécurité natifs pour Kubernetes disponibles, tout en mettant en œuvre les meilleures pratiques pendant les phases de création, de déploiement et d'exécution.

Parce que nous maîtrisons la technologie de conteneurs Open Source, nous pouvons vous aider à mieux comprendre la sécurité de Kubernetes et à sécuriser la mise en œuvre de vos conteneurs. Pour aider les équipes à identifier et résoudre plus efficacement les problèmes de sécurité de K8s, nous proposons des solutions natives pour Kubernetes qui intègrent la sécurité au cycle de vie des conteneurs et qui facilitent la création et le déploiement d'applications prêtes pour la production.

Créé par StackRox et acquis par Red Hat en 2021, KubeLinter est un outil d'analyse statique Open Source qui identifie les défauts de configuration et les erreurs de programmation dans les déploiements Kubernetes. KubeLinter exécute une série de tests pour analyser les configurations Kubernetes, identifier les erreurs et générer des avertissements pour tout ce qui n'est pas conforme aux meilleures pratiques de sécurité. 

La solution Red Hat Service Interconnect est dotée d'une sécurité intégrée qui s'adapte naturellement aux clusters et clouds, et sécurise les communications entre les services. Elle offre aussi un haut niveau de flexibilité de développement avec les plateformes existantes, de conteneurs ou Kubernetes, en donnant aux équipes davantage d'options pour concevoir, moderniser et déployer des applications métier de nouvelle génération.

La solution Red Hat® Advanced Cluster Security for Kubernetes (ACS) permet aux entreprises de créer, de déployer et d'exécuter des applications cloud-native de manière sécurisée. Disponible sous forme de solution autogérée ou de service SaaS entièrement géré, elle protège les charges de travail conteneurisées dans les principaux environnements cloud et hybrides et permet aux équipes DevOps et InfoSec de mettre en œuvre la sécurité, de réduire les coûts d'exploitation et d'augmenter la productivité des équipes de développement.

Pour aller plus loin

ARTICLE

Stateful et stateless : quelle est la différence ?

Les qualificatifs « stateful » ou « stateless » dépendent de la durée pendant laquelle l'état de l'interaction avec un élément est enregistré ainsi que de la manière dont cette information doit être stockée.

ARTICLE

Quarkus, qu'est-ce que c'est ?

Quarkus est une pile Java native pour Kubernetes conçue pour les machines virtuelles Java (JVM) et la compilation native, qui permet d'optimiser Java spécifiquement pour les conteneurs.

ARTICLE

Le serverless ou informatique sans serveur, qu'est-ce que c'est ?

Le serverless est un modèle de développement cloud-native qui permet aux développeurs de créer et d'exécuter des applications sans avoir à gérer des serveurs.

En savoir plus sur les applications cloud-native

Produits

Une plateforme d'applications d'entreprise comprenant un ensemble unifié de services testés conçus pour distribuer des applications sur votre choix d'infrastructure.

Ressources

Formations

Formation gratuite

Développement d'applications cloud-native avec des architectures de microservices