Avantages de la sécurité native pour Kubernetes

Copier l'URL

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

Les plateformes centrées sur les conteneurs opèrent au niveau de ceux-ci et se concentrent sur la sécurisation des images et de l'exécution des conteneurs. Ces outils fournissent des contrôles au niveau des conteneurs eux-mêmes, en appliquant des techniques telles que des proxys en ligne ou des shims pour réguler les communications entre conteneurs, par exemple.

Les mécanismes de sécurité native pour Kubernetes interviennent au niveau de la couche Kubernetes. Ils extraient du contexte de Kubernetes et y injectent des politiques que Kubernetes doit appliquer.

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 améliore la sécurité principalement de deux manières, à savoir en fournissant du contexte et des informations riches et en détectant les menaces propres à Kubernetes.

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 artéfacts 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 afin de gérer l'application des politiques 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 non seulement des conteneurs, mais aussi du déploiement de Kubernetes. 

Il est également important de vérifier l'état d'isolation des charges de travail et de connaître les mécanismes qui assurent leur séparation. Par défaut, Kubernetes permet à chaque pod déployé de communiquer avec tous les autres, qu'ils appartiennent ou non au même espace de noms. Grâce au haut niveau de visibilité sur les paramètres de la politique réseau, de préférence sous une forme visuelle plutôt que textuelle dans un fichier YAML, les charges de travail non isolées seront mises en évidence.

Pour comprendre la posture de sécurité globale, il faut s'assurer que les configurations Kubernetes telles que les autorisations de rôle, l'accès aux secrets, le trafic réseau autorisé et les paramètres des composants du plan de contrôle sont verrouillés, conformes aux meilleures pratiques et limités aux privilèges minimaux nécessaires au fonctionnement des applications.

Découvrir comment sécuriser les conteneurs, de la création à l'exécution en passant par le déploiement

Ressources Red Hat

Comme pour d'autres ressources informatiques, de nombreuses entreprises choisissent d'exécuter Kubernetes dans le cloud. Pour ce faire, il existe plusieurs options :

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

Quel que soit le modèle choisi, le client et le fournisseur de cloud « partagent » la responsabilité de la sécurisation du déploiement. Bien que le modèle de responsabilité partagée classique s'applique à Kubernetes, en particulier aux services Kubernetes gérés, la répartition des responsabilités en matière de sécurité peut sembler confuse.

Dans le cadre des services Kubernetes gérés, le fournisseur de cloud gère le plan de contrôle Kubernetes, ce qui comprend les composants Kubernetes qui régulent le cluster, ainsi que les données relatives à l'état et à la configuration du cluster.

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

Voici les tâches qui incombent habituellement aux fournisseurs de cloud :

  • Mise à jour de Kubernetes
  • Application des correctifs au plan de contrôle
  • Distribution de correctifs pour le système d'exploitation (SE) des nœuds, souvent en fonction du SE choisi
  • Proposition d'images de SE optimisées pour les conteneurs destinées aux nœuds
  • Fourniture d'outils d'analyse des vulnérabilités, même s'il revient au client de créer la politique liée, par exemple en utilisant un contrôleur d'admission pour émettre une autorisation ou un refus selon les résultats de l'analyse

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

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

SPIFFE et SPIRE, qu'est-ce que c'est ?

Les plateformes de sécurité natives pour Kubernetes offrent plusieurs avantages principaux. 

Renforcement de la protection 

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

Amélioration de l'efficacité des processus d'exploitation 

L'utilisation du même framework pour la gestion de l'infrastructure et de la sécurité accélère la prise en main de Kubernetes, tandis que 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 assure à la sécurité le même rythme et la même évolutivité que Kubernetes. L'intégration de politiques dans Kubernetes évite tout conflit entre les contrôles externes et l'orchestrateur.

La sécurité native pour Kubernetes contribue à réduire les problèmes liés à l'exploitation qui découlent de configurations incohérentes, d'un manque de coordination et d'erreurs commises par les utilisateurs.

Compte tenu de la complexité de Kubernetes, les erreurs sont fréquentes. Certains utilisateurs se voient accorder des privilèges trop élevés à l'aide des contrôles d'accès basés sur les rôles (RBAC) de Kubernetes, notamment des autorisations d'administration complètes du cluster, et certains secrets Kubernetes se retrouvent inutilement exposés, car des déploiements ont été autorisés à y accéder alors même que ce n'était pas nécessaire.

Les plateformes de sécurité natives pour Kubernetes sont capables d'identifier ces erreurs de configuration de manière automatique et continue.

L'intégration directe des contrôles de sécurité dans Kubernetes élimine également les risques liés à l'utilisation d'un logiciel de contrôle distinct qui, en cas de défaillance, pourrait soit laisser les portes grandes ouvertes et autoriser tout le trafic sans aucun mécanisme de sécurité, soit rester fermer et interrompre tout le trafic des applications.

Avec l'application des contrôles de politique par l'orchestrateur Kubernetes, la sécurité bénéficie immédiatement de toute l'évolutivité de Kubernetes ainsi que de la gamme d'options d'application des politiques qu'il inclut. 

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

Kubernetes permet, par exemple, d'appliquer des politiques réseau pour segmenter le trafic, d'utiliser des contrôleurs d'admission pour appliquer des politiques aux requêtes adressées au serveur de l'API Kubernetes, d'utiliser des secrets pour stocker des informations d'identification sensibles et d'appliquer un RBAC pour autoriser certaines capacités à certains utilisateurs et comptes de service.

Il est également possible de recourir à des outils standardisés supplémentaires, tels que des plug-ins réseau conformes à l'interface CNI (Container Network Interface), associés à la plateforme de sécurité native pour Kubernetes, ainsi que modifier ces outils supplémentaires selon les besoins.

En fournissant une plateforme unique et unifiée pour le provisionnement et l'exploitation des services d'infrastructure, Kubernetes rationalise et unifie les workflows entre les équipes de développement d'applications et d'exploitation. 

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 s'étendre à la sécurité lors du déploiement d'une plateforme de sécurité native pour Kubernetes. 

Elle permet de gagner du temps et de l'argent en réduisant la courbe d'apprentissage et en accélérant l'analyse et la correction.

Lorsque les équipes DevOps et de sécurité utilisent des outils différents, des conflits risquent de surgir au niveau de leur configuration. 

D'un côté, l'équipe DevOps pourrait spécifier une politique réseau Kubernetes qui autorise le trafic entre deux nœuds, tandis que de l'autre, les spécialistes de la sécurité pourraient 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é appliquent les mêmes mécanismes pour concevoir 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 se sert des manifestes Kubernetes pour définir les ressources nécessaires à une application. L'utilisation de ces mêmes ressources pour recueillir des informations sur 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é, d'exploitation, DevOps et ingénierie de la fiabilité des sites) travailleront à partir de cette même source de vérité. 

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

Il est possible d'éviter les risques en matière d'exploitation liés à la mise en œuvre de logiciels de sécurité distincts en utilisant les fonctions natives pour Kubernetes d'application des politiques de sécurité.

Les conteneurs compliquent la sécurité des applications cloud-native à plusieurs égards, notamment parce que les incidents peuvent être très dispersés, que les conteneurs génèrent de grands 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 pesant 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 permettent d'identifier les anomalies avec une plus grande fidélité et de faire un choix plus assumé entre plusieurs options d'application des politiques, notamment la suppression d'un pod.

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

La sécurité native pour Kubernetes offre également la possibilité d'adopter une approche basée sur les risques pour les tâches de sécurité. 

Les déploiements sont susceptibles de contenir plusieurs violations de politiques. Il n'est pas facile de savoir par où commencer, mais une fois de plus, le contexte Kubernetes peut aider. 

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 spécifiques de Kubernetes, en particulier celles qui mettent en danger le serveur de l'API Kubernetes, est particulièrement cruciale pour prévenir, identifier et corriger les problèmes. Les outils de sécurité natifs pour Kubernetes permettent d'identifier automatiquement ces vulnérabilités.

L'intégration avec le serveur de l'API Kubernetes assure la surveillance de la sécurité des conteneurs exécutés dans les clusters Kubernetes ainsi que des ressources Kubernetes (déploiements, ensembles de démons, services, pods) et d'autres ressources.

La nature largement ouverte des déploiements Kubernetes représente un autre vecteur de menace. En effet, puisque Kubernetes est avant tout une plateforme destinée à l'exploitation de l'infrastructure, aucun de ses composants n'est nécessairement sécurisé par défaut pour faciliter l'exploitation. 

L'application de politiques réseau Kubernetes pour limiter les communications contribue aussi considérablement à la sécurisation des déploiements Kubernetes. Les plateformes de sécurité natives pour Kubernetes peuvent automatiquement établir une référence pour l'activité réseau, identifier les voies de communication nécessaires au fonctionnement de l'application et créer le fichier YAML approprié pour réduire la portée de l'accès réseau.

Grâce aux paramètres de sécurité automatiques d'une plateforme native pour Kubernetes, il est possible d'identifier et de bloquer en continu les menaces au niveau de la couche Kubernetes.

 

La sécurité native pour Kubernetes assure également une grande portabilité et réutilisabilité. L'adoption d'une approche unique et standardisée, dans tous les emplacements où s'exécute Kubernetes, garantit une application cohérente des politiques dans tous les environnements. 

Au lieu de configurer des contrôles au niveau du système pour chaque hôte d'un cluster, la sécurité native pour Kubernetes permet aux utilisateurs de définir une même configuration (par exemple une politique réseau) pour tous les pods d'un déploiement. 

En liant les politiques aux systèmes CI/CD et au framework du contrôleur d'admission de 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 l'exposition au moment de l'exécution. 

Enfin, l'exploitation de constructions Kubernetes, telles que le contrôleur d'admission, permet d'ancrer la sécurité dans les chaînes d'outils Kubernetes.

Essayer Kubernetes pour les entreprises

Hub

Le blog officiel de Red Hat

Découvrez les dernières informations concernant notre écosystème de clients, partenaires et communautés.

Tous les essais de produits Red Hat

Profitez de nos essais gratuits de produits pour renforcer votre expérience pratique, préparer une certification ou évaluer l'adéquation d'un produit avec les besoins de votre entreprise.

En savoir plus

L'informatique confidentielle, qu'est-ce que c'est ?

L'informatique confidentielle s'appuie sur le matériel pour protéger les données lorsqu'elles ne sont pas au repos ou en transit, c'est-à-dire pendant leur utilisation.

SPIFFE et SPIRE, qu'est-ce que c'est ?

SPIFFE et SPIRE sont deux projets Open Source qui permettent de gérer les identités dans des environnements informatiques variés et dynamiques. Ensemble, ils résolvent de nombreux problèmes de sécurité.

Le modèle Zero Trust, qu'est-ce que c'est ?

Apprenez-en plus sur le modèle Zero Trust, une approche de la conception des architectures de sécurité basée sur le principe qu'aucune interaction n'est fiable par défaut.

Sécurité : ressources recommandées

Articles associés