Kubernetes illustration
Raccourcis

Avantages de la sécurité native pour Kubernetes

Copier l'URL

En matière de sécurité des conteneurs, il existe deux approches : l'approche centrée sur les conteneurs et l'approche native pour Kubernetes. 

Les plateformes axées sur les conteneurs opèrent au niveau de ceux-ci et privilégient la sécurisation des images et de l'exécution des conteneurs. Ces outils fournissent des contrôles au niveau du conteneur lui-même, en utilisant des techniques telles que les proxies en ligne ou les shims pour, notamment, contrôler les communications entre conteneurs.

Les mécanismes de sécurité native pour Kubernetes opèrent au niveau de la couche Kubernetes. Ils extraient le contexte de Kubernetes et transmettent les politiques à Kubernetes pour leur application.

La sécurité native pour Kubernetes repose sur des intégrations profondes avec Kubernetes pour tirer parti du contexte et exploiter les contrôles natifs de Kubernetes. Cette architecture renforce la sécurité de deux façons, en fournissant un contexte et des informations riches et en détectant les menaces propres à Kubernetes.

La sécurité native pour Kubernetes

Les technologies cloud-native génèrent de nouveaux défis en matière de sécurité, ainsi que des possibilités d'amélioration des stratégies de sécurité existantes.

La sécurité native pour Kubernetes repose sur le principe que la sécurité est plus efficacement mise en œuvre lorsqu'elle est en adéquation avec le système qui gère les applications conteneurisées. 

Une plateforme de sécurité doit présenter les caractéristiques suivantes pour être considérée comme native pour Kubernetes :

  • S'intégrer directement au serveur de l'API Kubernetes pour obtenir une visibilité directe sur les charges de travail et l'infrastructure Kubernetes
  • Évaluer les vulnérabilités dans le logiciel Kubernetes lui-même
  • Baser ses fonctionnalités de sécurité, notamment la gestion des politiques, sur les ressources du modèle objet Kubernetes (déploiements, espaces de noms, services, pods, etc.)
  • Analyser les données déclaratives provenant des artefacts propres à Kubernetes (par exemple, les fichiers manifestes de charge de travail) et des configurations
  • Utiliser les fonctions de sécurité intégrées de Kubernetes pour gérer la mise en œuvre chaque fois que cela est possible pour renforcer l'automatisation, l'évolutivité et la fiabilité
  • Se déployer et s'exécuter en tant qu'application Kubernetes, notamment les intégrations et la prise en charge des outils courants dans les chaînes d'outils cloud-native

La sécurité native pour Kubernetes offre une visibilité sur la configuration des conteneurs et du déploiement Kubernetes. 

Il est également important de comprendre comment les charges de travail sont isolées, si elles le sont. Kubernetes, par défaut, permet à tous les déploiements de communiquer avec tous les autres déploiements, à l'intérieur et au-delà de leurs espaces de noms. Grâce au haut niveau de visibilité sur les paramètres de la politique réseau, de préférence sous forme visuelle plutôt que sous forme de texte dans un fichier YAML, les charges de travail qui ne sont pas isolées seront mises en évidence.

Pour comprendre votre situation en matière de sécurité globale, vous devez vous assurer que les configurations de Kubernetes (autorisations de rôles, accès aux secrets, trafic réseau autorisé, paramètres des composants du plan de contrôle) sont verrouillées, conformes aux meilleures pratiques et limitées aux privilèges les plus faibles nécessaires à l'exécution de vos applications.

Tout comme pour d'autres ressources informatiques, de nombreuses entreprises choisissent d'exécuter Kubernetes dans le cloud. Plusieurs options permettent d'exécuter Kubernetes dans le cloud :

  • Services Kubernetes autogérés
  • Distribution commerciale de Kubernetes
  • Service Kubernetes géré

Quel que soit le modèle choisi, vous et le fournisseur de cloud « partagez » la responsabilité de la sécurisation du déploiement. Si le modèle typique de responsabilité partagée s'applique à Kubernetes, en particulier dans le cadre des services Kubernetes gérés, il est parfois difficile de savoir où se situe la limite en matière de responsabilité pour la sécurité.

Dans le cadre des services Kubernetes gérés, le fournisseur de cloud gère le plan de contrôle Kubernetes, avec les composants Kubernetes qui permettent de contrôler le cluster, ainsi que les données sur l'état et la configuration du cluster.

Les services comprennent généralement la mise en place du plan de contrôle ainsi que de la redondance de ces nœuds, avec souvent leur exécution dans différentes régions afin d'éviter une panne en cas de défaillance d'une partie de l'infrastructure du fournisseur de cloud.

En général, les fournisseurs de cloud doivent :

  • maintenir Kubernetes à jour ;
  • appliquer des correctifs au plan de contrôle ;
  • fournir des correctifs pour le système d'exploitation du nœud (en fonction du système d'exploitation choisi) ;
  • proposer régulièrement des images de système d'exploitation optimisées pour les conteneurs destinées aux nœuds ;
  • inclure parfois des analyses de la vulnérabilité (vous devez cependant créer la politique, par exemple l'utilisation du contrôleur d'admission pour définir les autorisations en fonction des résultats de l'analyse).

Le client est toujours responsable de la sécurisation de la charge de travail Kubernetes, notamment des aspects de sécurité suivants :

  • Images de conteneur : sources, contenus et vulnérabilités
  • Déploiements : services réseau, stockage et privilèges
  • Gestion de la configuration : rôles, groupes, liaisons de rôles et comptes de service
  • Application : gestion des secrets, étiquettes et annotations
  • Segmentation du réseau : politiques réseau dans le cluster
  • Exécution : détection des menaces et résolution des incidents

Les plateformes de sécurité native pour Kubernetes offrent plusieurs avantages essentiels. 

Renforcement de la protection 

Les mécanismes de sécurité native pour Kubernetes fournissent des informations plus riches sur la base des données déclaratives de Kubernetes pour détecter les vulnérabilités de Kubernetes et des conteneurs. 

Amélioration de l'efficacité de l'exploitation 

L'utilisation du même framework pour la gestion de l'infrastructure et de la sécurité permet une prise en main plus rapide de Kubernetes, et le contexte Kubernetes permet de détecter plus rapidement les menaces et d'évaluer les risques par ordre de priorité.

Réduction des risques liés à l'exploitation 

L'utilisation des contrôles natifs de Kubernetes permet de faire évoluer la sécurité au même rythme que Kubernetes. Les politiques étant intégrées à Kubernetes, il n'y a pas de conflit entre les contrôles externes et l'outil d'orchestration.

La sécurité native pour Kubernetes permet de réduire les problèmes d'exploitation qui découlent de configurations incohérentes, d'un manque de coordination et des erreurs des utilisateurs.

Parce que la prise en main de Kubernetes est assez rapide pour la plupart des utilisateurs, des erreurs peuvent vite être commises. Par exemple, des privilèges trop élevés peuvent être accordés à l'aide du contrôle d'accès basé sur les rôles de Kubernetes, comme des autorisations d'administration complètes du cluster accordées à un compte de service ou d'utilisateur, ou les secrets Kubernetes peuvent être exposés inutilement en permettant aux déploiements d'en extraire même lorsqu'ils ne sont pas nécessaires.

Les plateformes de sécurité native pour Kubernetes peuvent identifier ces erreurs de configuration de manière automatique et continue.

L'intégration des contrôles de sécurité directement dans Kubernetes élimine également le risque de disposer d'un logiciel de contrôle distinct qui, en cas de défaillance, serait soit ouvert et autoriserait tout le trafic sans aucun mécanisme de sécurité activé, soit fermé et interromprait tout le trafic des applications.

Parce que l'outil d'orchestration de Kubernetes applique les contrôles des politiques, la sécurité bénéficie immédiatement de toute l'évolutivité du logiciel Kubernetes lui-même ainsi que de la gamme d'options d'application des politiques qu'il comprend. 

Au contraire, l'utilisation de proxies en ligne ou de shims pour l'application des politiques introduit des points de défaillance uniques, des problèmes d'évolutivité et des limitations des performances.

Avec Kubernetes, vous pouvez, par exemple, appliquer des politiques réseau pour segmenter le trafic, utiliser des contrôleurs d'admission pour appliquer des politiques aux requêtes destinées au serveur de l'API Kubernetes, utiliser des secrets pour stocker des informations d'identification sensibles et appliquer le contrôle d'accès basé sur les rôles pour autoriser certaines capacités pour certains comptes de service et d'utilisateur.

Vous pouvez également utiliser des outils standardisés supplémentaires, tels que des plug-ins réseau qui suivent les spécifications de la CNI (Container Network Interface), en association avec la plateforme de sécurité native pour Kubernetes et modifier ces outils supplémentaires en fonction de vos besoins.

Sur la base d'une seule plateforme unifiée pour le provisionnement et l'exploitation des services d'infrastructure, Kubernetes rationalise et unifie les workflows des équipes d'exploitation et de développement des applications. 

Cette même approche consolidée, où chacun travaille à partir d'une source de vérité commune et utilise la même infrastructure, peut également englober la sécurité dans le cadre du déploiement d'une plateforme de sécurité native pour Kubernetes. 

Cela permet de gagner du temps et de l'argent grâce à une prise en main plus rapide et à l'accélération de l'analyse et de la correction.

Lorsque les équipes DevOps et de sécurité utilisent des outils différents, des conflits peuvent vite apparaître selon la configuration adoptée. 

D'un côté, l'équipe DevOps pourrait spécifier une politique réseau Kubernetes qui autorise le trafic entre 2 nœuds, tandis que de l'autre, l'équipe de sécurité pourrait introduire un contrôle via un logiciel de contrôle distinct qui bloque ce trafic.

Si l'équipe DevOps vérifiait les paramètres dans Kubernetes, elle en conclurait que l'application devrait fonctionner avec un trafic fluide et n'aurait aucune idée de la raison pour laquelle l'application échoue, car elle ne peut pas voir les contrôles qu'exerce le logiciel de contrôle distinct.

Lorsque les équipes DevOps et de sécurité utilisent les mêmes constructions pour créer et distribuer des applications conteneurisées ainsi que pour les sécuriser, elles ont moins d'interfaces, d'outils et de modèles à prendre en main. 

Le modèle DevOps utilise les fichiers manifestes Kubernetes pour définir les ressources dont une application donnée a besoin. L'utilisation de ces mêmes ressources pour recueillir le contexte de sécurité et appliquer des politiques réduit la complexité et améliore les résultats en matière de sécurité. 

Dans le cadre de la sécurité native pour Kubernetes, l'unique source de vérité pour les politiques de sécurité est Kubernetes, et toutes les équipes (sécurité, exploitation, DevOps et ingénierie de la fiabilité de site) travailleront à partir de cette même source de vérité. 

En outre, les problèmes de sécurité sont directement liés aux objets et ressources Kubernetes que ces équipes utilisent quotidiennement, ce qui simplifie davantage l'exploitation.

Lorsque des logiciels de sécurité distincts sont mis en œuvre, vous pouvez éviter les risques liés à l'exploitation en utilisant les fonctions natives pour Kubernetes d'application des politiques de sécurité.

Les conteneurs compliquent la sécurité des applications cloud-native sur plusieurs fronts, notamment parce que les incidents peuvent être très dispersés, que les conteneurs produisent de gros volumes de données à traiter et qu'ils sont éphémères, ce qui rend obsolète la réponse traditionnelle aux incidents.

Les mécanismes de sécurité native pour Kubernetes permettent de détecter plus précisément les menaces qui pèsent sur les conteneurs et réduisent le temps et les efforts nécessaires pour sécuriser efficacement les environnements.

Grâce au contexte Kubernetes, le comportement attendu est clair. Par conséquent, les mécanismes de sécurité native pour Kubernetes peuvent identifier les anomalies avec une plus grande fidélité, et il est possible de choisir des options d'application des politiques, telles que la destruction d'un pod, avec plus de confiance.

Parallèlement, l'utilisation du contexte Kubernetes réduit également les faux positifs et les alertes incessantes.

La sécurité native pour Kubernetes permet aussi d'adopter une approche basée sur les risques pour les tâches liées à la sécurité. 

Vos déploiements sont susceptibles de contenir des violations de politiques, mais vous ne savez pas par où commencer ? Là encore, l'utilisation du contexte Kubernetes vous apporte la solution. 

Grâce au regroupement de différents aspects des métadonnées Kubernetes, notamment le fait qu'un cluster soit en développement ou en production, qu'il soit exposé à Internet ou non, le degré de criticité de l'application et l'existence de processus suspects en cours d'exécution, vous saurez sur quels éléments votre équipe doit porter son attention à ce moment précis. 

La détection des vulnérabilités propres à Kubernetes, notamment celles qui mettent en danger le serveur de l'API Kubernetes, est particulièrement cruciale pour prévenir, identifier et corriger ces vulnérabilités. Les outils de sécurité native pour Kubernetes sont capables d'identifier automatiquement ces vulnérabilités.

L'intégration au serveur de l'API Kubernetes permet de surveiller la sécurité des conteneurs qui s'exécutent dans des clusters Kubernetes ainsi que des ressources Kubernetes (déploiements, ensembles de démons, services, pods, etc.) et d'autres ressources.

La nature très ouverte des déploiements Kubernetes représente un autre vecteur de menace. Parce que Kubernetes est avant tout une plateforme pour l'exploitation de l'infrastructure, tous les composants ne sont pas nécessairement sécurisés par défaut pour faciliter leur utilisation lors de l'exploitation. 

L'application de politiques réseau Kubernetes pour limiter les communications est un autre élément essentiel qui permet de sécuriser les déploiements Kubernetes. Les plateformes de sécurité native pour Kubernetes peuvent automatiquement établir une base de référence de l'activité réseau, identifier les chemins de communication nécessaires pour servir l'application et créer le fichier YAML correct pour réduire la portée d'accès au réseau.

Grâce aux paramètres de sécurité automatiques d'une plateforme native pour Kubernetes, vous serez en mesure d'identifier et de stopper en continu les menaces au niveau de la couche Kubernetes.

 

La sécurité native pour Kubernetes augmente par ailleurs la portabilité et la réutilisation. L'adoption d'une approche unique et standardisée, partout où Kubernetes s'exécute, garantit une application cohérente des politiques dans tous les environnements. 

Avec la sécurité native pour Kubernetes, les utilisateurs peuvent spécifier une configuration unique, telle qu'une politique réseau, qui doit s'appliquer à tous les pods d'un déploiement, plutôt que configurer des contrôles de niveau système sur chaque hôte d'un cluster. 

En liant les politiques aux systèmes CI/CD et au framework du contrôleur d'admission Kubernetes, les entreprises peuvent plus facilement appliquer des politiques de contrôle au début du cycle de vie du développement logiciel, ce qui limite les expositions au moment de l'exécution. 

Et l'utilisation de constructions Kubernetes telles que le contrôleur d'admission ancre la sécurité dans les chaînes d'outils Kubernetes.

Pour aller plus loin

ARTICLE

Conteneurs et machines virtuelles

Les conteneurs Linux et les machines virtuelles sont des environnements informatiques en paquets qui associent divers composants et les isolent du reste du système.

ARTICLE

L'orchestration des conteneurs, qu'est-ce que c'est ?

L'orchestration des conteneurs permet d'automatiser le déploiement, la gestion, la mise à l'échelle et la mise en réseau des conteneurs.

ARTICLE

Un conteneur Linux, qu'est-ce que c'est ?

Un conteneur Linux est un ensemble de processus isolés du système. Un conteneur s'exécute à partir d'une image distincte qui fournit tous les fichiers nécessaires à la prise en charge des processus qu'il contient.

En savoir plus sur les conteneurs

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

Cours gratuit

Présentation technique de l'exécution de conteneurs avec Red Hat

Cours gratuit

Présentation technique du déploiement d'applications conteneurisées

Cours gratuit

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