Kubernetes est une plateforme open source d'orchestration de conteneurs permettant de dimensionner et d'automatiser les déploiements de conteneurs. Elle a été initialement développée pour gérer les charges de travail conteneurisées dans les environnements de production et aidait les utilisateurs à définir les limites des ressources applicatives. La virtualisation est une pratique de l'architecture de sécurité Kubernetes qui permet une utilisation appropriée des ressources sur les serveurs physiques et améliore la stabilité. Kubernetes améliore les performances matérielles et réduit les dépenses opérationnelles en ajoutant la virtualisation. Chaque machine virtuelle fonctionne avec son propre ensemble de composants et dispose de systèmes d'exploitation spécifiques.
Les déploiements de l'architecture de sécurité Kubernetes sont agiles, favorisent le développement et l'intégration continus, et renforcent la fiabilité de la création et du déploiement d'images de conteneurs. La plateforme facilite l'immuabilité des images, surveille la santé et les performances des applications, et rationalise la portabilité de la distribution des systèmes d'exploitation. Cependant, l'un des inconvénients de l'architecture de sécurité Kubernetes est qu'elle doit être plus sécurisée par défaut. Les utilisateurs peuvent être confrontés à des temps d'arrêt ou à des retards opérationnels lors de l'exécution de systèmes distribués, et il existe des problèmes de sécurité liés à l'équilibrage de charge, à la gestion de la configuration et au déploiement automatisé.
L'architecture de sécurité Kubernetes offre flexibilité et observabilité, mais ne limite pas les applications et n'impose pas de journalisation, d'audit ou de surveillance. Les acteurs malveillants peuvent exploiter les vulnérabilités, et les risques liés à la chaîne d'approvisionnement peuvent créer des problèmes tout au long du cycle de création des conteneurs. Plusieurs composants de l'architecture Kubernetes doivent être sécurisés, tels que les nœuds de travail, les applications conteneurisées et les plans de contrôle. Le risque de menaces internes est également élevé, et les administrateurs Kubernetes malveillants peuvent abuser de leurs privilèges spéciaux, divulguer des informations sensibles ou provoquer des violations de données.
Ce guide décrit les principaux défis liés à l'architecture de sécurité Kubernetes. Il explique comment configurer et sécuriser ces clusters afin de remédier aux menaces et d'éviter les erreurs de configuration courantes. Commençons.
Qu'est-ce que l'architecture de sécurité Kubernetes ?
L'architecture de sécurité Kubernetes utilise des clusters, des plans de contrôle et une ou plusieurs machines virtuelles (ou serveurs physiques) appelées nœuds de travail. Les nœuds de travail sont connus pour héberger des pods qui contiennent un ou plusieurs conteneurs.
Les conteneurs Kubernetes sont des environnements d'exécution qui contiennent des progiciels et stockent toutes leurs dépendances. Les images de conteneurs contiennent du code exécutable et du contenu permettant de remplir les environnements de conteneurs.
La prise de décision au niveau du cluster est assurée par le plan de contrôle. Il planifie l'exécution des conteneurs, détecte les pannes et lance de nouveaux pods. Les composants essentiels du plan de contrôle sont le gestionnaire de contrôleurs, le serveur d'interface de programmation d'applications (API) Kubernetes, le planificateur et le gestionnaire de contrôleurs cloud.
Les nœuds de travail Kubernetes hébergent également Kubelet et Kube-proxy, deux services permettant l'orchestration des conteneurs. Ils exécutent également un moteur de conteneurs, et le service CSP Kubernetes héberge des clusters. Les organisations doivent gérer divers aspects des services Kubernetes, tels que l'autorisation et l'authentification, car les configurations CSP par défaut ne sont pas sécurisées.
Lors de la conception de l'architecture de sécurité Kubernetes, les organisations doivent comprendre leurs responsabilités et savoir comment maintenir les clusters Kubernetes.
Comment sécuriser l'architecture de sécurité Kubernetes ?
Il existe de nombreuses façons de sécuriser l'architecture de sécurité Kubernetes. La première étape consiste à empêcher l'exécution root par défaut. Les utilisateurs peuvent exécuter des conteneurs non root ou utiliser un moteur de conteneurs sans root afin de réduire les risques de compromission des conteneurs. Ils doivent également tester les applications Kubernetes et les concevoir de manière à ce qu'elles soient exécutées en tant qu'utilisateurs non root. L'intégration de l'exécution non root dans le temps de compilation améliore l'assurance qualité et garantit le bon fonctionnement des applications Kubernetes sans privilèges root.
Il est beaucoup plus simple pour les débutants de configurer des clusters individuels pour les applications à grande échelle. Les personnes qui utilisent des services Kubernetes commerciaux ou gérés peuvent optimiser l'utilisation des ressources à l'aide des espaces de noms K8s et tirer parti de la prise en charge de la multi-location.
Voici les meilleurs conseils de sécurité pour améliorer l'architecture de sécurité Kubernetes pour les débutants :
1. Utilisez des systèmes de fichiers de conteneurs immuables
Les acteurs malveillants sont capables d'obtenir des privilèges d'exécution illimités, de télécharger des scripts et de modifier des applications dans des conteneurs. Les utilisateurs peuvent empêcher de tels cas en montant des systèmes de fichiers secondaires en lecture/écriture dans des répertoires spécifiques et en utilisant des systèmes de fichiers de conteneurs immuables.
2. Créer des images de conteneurs sécurisées
L'analyse des images de conteneurs Kubernetes permet de détecter les vulnérabilités, d'empêcher les injections de code malveillant et de garantir la sécurité des déploiements. L'analyse des images de conteneurs Kubernetes identifie les bibliothèques obsolètes, sécurise les ports et empêche les erreurs de configuration connues. L'analyse des images de conteneurs fait partie intégrante de l'architecture de sécurité Kubernetes et peut fournir une correction efficace des menaces. Le contrôleur d'admission Kubernetes peut automatiquement bloquer les déploiements si une image de conteneur enfreint la politique de sécurité de l'organisation. Il est également essentiel de créer et de se procurer des images à partir de référentiels fiables et de vérifier la réputation des éditeurs. Les utilisateurs ne doivent exécuter que des images signées numériquement dans les clusters Kubernetes.
3. Mettre en œuvre le renforcement des conteneurs Kubernetes
Le renforcement des conteneurs Kubernetes peut limiter considérablement la portée des surfaces d'attaque, prévenir les violations de données et protéger les applications. D'une manière générale, il existe trois approches : la conteneurisation basée sur un hyperviseur, les solutions basées sur le noyau et les sandbox d'applications.
L'outil seccomp peut être utilisé pour la journalisation des audits et la détection active des menaces. De nombreuses solutions de moteur de conteneurs permettent aux utilisateurs d'ajouter une couche d'isolation entre le noyau hôte et l'application conteneurisée. Les limites d'isolation obligent les applications à fonctionner dans des bacs à sable virtuels et protègent les systèmes d'exploitation hôtes contre les intrusions malveillantes. Les moteurs de conteneurs peuvent être configurés pour appliquer la virtualisation et offrir une meilleure protection que les solutions traditionnelles d'isolation des conteneurs.
4. Séparation et renforcement du réseau
La mise en réseau des clusters est utilisée pour améliorer les communications entre les conteneurs. L'application du chiffrement et de la séparation des ressources peut empêcher les mouvements latéraux dans les réseaux. Les utilisateurs peuvent utiliser des politiques réseau pour isoler les ressources Kubernetes et sécuriser le plan de contrôle. Il est recommandé de chiffrer le trafic et les données sensibles au repos (y compris les secrets) et d'appliquer un pare-feu. Les espaces de noms Kubernetes peuvent partitionner les ressources du cluster entre les équipes, les utilisateurs et les applications. Les espaces de noms ne sont pas isolés par défaut, mais les utilisateurs peuvent spécifier l'autorisation à l'aide de RBAC et des politiques de réseau.
Les adresses IP des pods peuvent changer, et les applications ne peuvent pas dépendre de pods ayant des adresses IP statiques. L'utilisation d'un service Kubernetes avec l'architecture de sécurité Kubernetes peut résoudre ce problème. Il peut attribuer plusieurs adresses IP uniques à différents pods et utiliser des étiquettes pour les configurations. Ces adresses ne changent pas tant que le service est encore utilisé. Les politiques réseau Kubernetes peuvent contrôler le trafic entrant et sortant.
Deux autres recommandations de l'architecture de sécurité Kubernetes pour concevoir des politiques réseau solides sont : utiliser des plugins CNI qui prennent en charge l'API NetworkPolicy et créer des directives pour les pods sélectionnés à l'aide de namespaceSelector et podSelector.
5. Sécuriser les hôtes Kubernetes
Les utilisateurs peuvent déployer Kubernetes de plusieurs façons : sur site, sur du matériel nu et via des builds dans le cloud public. Les conteneurs Kubernetes sont hautement portables ; les clients peuvent passer d'une installation à l'autre et migrer leurs charges de travail. Cependant, un haut degré de personnalisation s'accompagne également de vulnérabilités supplémentaires en matière de sécurité. Pour contourner ce problème, il est possible de renforcer la sécurité des hôtes sous-jacents et d'installer les dernières versions des systèmes d'exploitation. Il est essentiel de mettre en œuvre des systèmes de gestion de la configuration, de gestion des correctifs et de pare-feu, et d'appliquer les mesures de sécurité appropriées en fonction des environnements des centres de données désignés.
L'exécution de la dernière version de Kubernetes atténue les principales menaces potentielles. Elle applique les corrections de bogues courantes et la mise à jour régulière des applications évite des complications inutiles. Les mises à jour progressives sont très populaires parmi les développeurs, et les migrations de pools de nœuds permettent de réaliser les mises à jour avec un minimum de temps d'arrêt ou de perturbations.
6. Intégrer les outils de sécurité Kubernetes
Les outils de sécurité Kubernetes Les outils tels que les pare-feu de nouvelle génération (NGFW) et les passerelles de contrôle d'accès Web doivent être intégrés aux clusters Kubernetes et aux outils de sécurité existants. Pour ce faire, une excellente solution consiste à intégrer les ports TCP/UDP et les adresses IP utilisés par les charges de travail dans les outils de sécurité périmétrique. Cela permettra aux utilisateurs d'identifier et de sécuriser les actifs Kubernetes.
Limiter la connectivité réseau aux nœuds Kubernetes et utiliser les groupes de sécurité des fournisseurs de cloud peut également s'aligner sur les pratiques de gestion de l'architecture de sécurité Kubernetes.
7. Conformité automatisée
Une sécurité optimale pendant l'exécution peut être assurée en collectant des données et en automatisant la génération de rapports de conformité. La conformité Kubernetes doit respecter les dernières normes industrielles telles que HIPAA, PCI-DSS, GDPR, NIST et SOC2. Il est essentiel de viser une conformité automatisée et continue. Si un pod échoue à un contrôle de conformité, les clusters doivent automatiquement mettre à jour les images des conteneurs ou les arrêter jusqu'à ce que le problème soit résolu. Les utilisateurs doivent crypter les données en transit, ce qui peut être réalisé en activant le cryptage TLS pour les charges de travail Kubernetes. Une autre excellente option consiste à activer le TLS mutuel, à utiliser des maillages de services ou à utiliser des outils tels que SentinelOne.
8. Accès sécurisé à l'API Kubernetes
La majorité des opérations du cluster Kubernetes se déroulent dans le Kube-apiserver. L'outil utilitaire de contrôle Kube peut être utilisé pour contrôler l'accès à l'API et sert de première ligne de défense. Le Kubelet peut attribuer une classe de qualité de service (QoS) aux pods et aider à leur planification et à leur éviction si nécessaire. Kubelet peut aider les utilisateurs à prendre des décisions plus éclairées, et les équipes DevOps peuvent s'assurer que les conteneurs reçoivent suffisamment de ressources pour fonctionner correctement. Tous les conteneurs doivent impérativement être soumis à des limites de CPU et de mémoire.
SentinelOne dispose d'une plateforme complète de protection des applications cloud natives (CNAPP) avec une solution intégrée de gestion de la posture de sécurité Kubernetes (KSPM). Elle peut appliquer des politiques de sécurité granulaires, restreindre les communications entre les charges de travail et les applications tierces, et limiter l'accès à l'API. Cet outil détecte et atténue les menaces persistantes avancées à l'aide du machine learning et de l'intelligence artificielle. Il est même équipé d'un moteur de sécurité offensive qui applique une approche basée sur des règles pour la sécurité et la surveillance des menaces. Le déploiement d'un modèle de microsegmentation évolutif, unifié et unique pour les hôtes Kubernetes, les machines virtuelles et les conteneurs peut fournir la sécurité Kubernetes indispensable dans les déploiements multi-clusters, multi-clouds et hybrides.
Voir SentinelOne en action
Découvrez comment la sécurité du cloud alimentée par l'IA peut protéger votre organisation lors d'une démonstration individuelle avec un expert produit de SentinelOne.
Obtenir une démonstrationConclusion
Les entreprises adoptent de plus en plus les plateformes d'orchestration de conteneurs telles que Kubernetes, et s'orientent vers la protection des infrastructures et l'exploitation des charges de travail et des applications conteneurisées. Kubernetes offre des fonctionnalités et des paramètres de sécurité complets, mais il n'est pas sécurisé par défaut et doit être configuré. Les conteneurs peuvent fonctionner correctement, et les menaces doivent être corrigées avant qu'elles ne s'aggravent. Cela commence par la conception d'une architecture de sécurité Kubernetes pratique. Il existe divers outils que les organisations peuvent utiliser pour se lancer, et de nombreuses solutions open source sont disponibles sur le marché.
Elles parviennent à une visibilité continue, améliorent l'observabilité et garantissent que les conteneurs fonctionnent de la manière la plus sûre et la plus sécurisée possible. Les outils de sécurité Kubernetes peuvent surveiller le processus de construction et découvrir les vulnérabilités cachées, aidant ainsi les organisations à rester protégées.
FAQ sur l'architecture de sécurité Kubernetes
L'architecture de sécurité Kubernetes est la conception et l'ensemble des contrôles destinés à protéger un cluster Kubernetes. Elle vise à sécuriser le plan de contrôle, les nœuds, les charges de travail et le réseau afin d'empêcher tout accès non autorisé et toute attaque.
Elle comprend des défenses multicouches telles que l'authentification, l'autorisation, les politiques réseau et la gestion des secrets, structurées de manière à protéger chaque partie de l'environnement d'orchestration des conteneurs.
La sécurité réseau Kubernetes utilise des politiques et une segmentation pour contrôler le trafic entre les pods et les clients externes. Les politiques réseau définissent les pods ou les plages d'adresses IP qui peuvent communiquer. L'architecture inclut souvent une communication cryptée entre les composants et des pare-feu pour restreindre l'accès.
Cette configuration limite les mouvements latéraux des attaquants et protège les services sensibles au sein du cluster.
Une configuration Kubernetes sécurisée comprend un contrôle d'accès basé sur les rôles (RBAC) pour les autorisations, TLS pour le chiffrement du trafic API, des politiques réseau pour la segmentation des pods, des politiques de sécurité des pods ou des contrôleurs d'admission pour renforcer la sécurité des conteneurs, le chiffrement des secrets, la journalisation des audits et l'analyse périodique des vulnérabilités. Ces couches fonctionnent ensemble pour réduire les risques et maintenir l'intégrité du cluster.
Kubernetes prend en charge diverses méthodes d'authentification telles que les certificats, les jetons et l'intégration avec des fournisseurs d'identité (OIDC, LDAP). Une fois authentifiées, les requêtes sont soumises à des contrôles d'autorisation, principalement à l'aide du modèle RBAC, qui applique le principe du moindre privilège en accordant l'accès en fonction des rôles et des politiques définis. Cela garantit que seuls les utilisateurs et les composants de confiance effectuent les actions autorisées.
Parmi les exemples, on peut citer l'application du RBAC pour restreindre les actions des utilisateurs, l'utilisation de politiques réseau pour isoler les pods contenant des données sensibles, l'activation des journaux d'audit pour suivre les événements du cluster, le chiffrement des secrets stockés dans etcd, le déploiement de contrôleurs d'admission pour bloquer les configurations non sécurisées et l'exécution de conteneurs avec des privilèges limités. La combinaison de ces pratiques renforce la sécurité du cluster sous plusieurs angles.

