Kubernetes Hardening
Outils pour analyser un cluster
Kubescape
Kubescape est un outil open-source K8s fournissant une vue d'ensemble multi-cloud de K8s, comprenant l'analyse des risques, la conformité de sécurité, la visualisation des RBAC et la numérisation des vulnérabilités des images. Kubescape analyse les clusters K8s, les fichiers YAML et les charts HELM, détectant les mauvaises configurations selon plusieurs frameworks (comme le NSA-CISA, MITRE ATT&CK®), les vulnérabilités logicielles et les violations des RBAC (contrôle d'accès basé sur les rôles) aux premiers stades du pipeline CI/CD, calcule instantanément le score de risque et montre les tendances des risques au fil du temps.
Kube-bench
L'outil kube-bench est un outil qui vérifie si Kubernetes est déployé de manière sécurisée en exécutant les vérifications documentées dans le CIS Kubernetes Benchmark. Vous pouvez choisir de :
exécuter kube-bench à partir d'un conteneur (partageant l'espace de noms PID avec l'hôte)
exécuter un conteneur qui installe kube-bench sur l'hôte, puis exécuter kube-bench directement sur l'hôte
installer les derniers binaires à partir de la page des versions,
le compiler à partir des sources.
Kubeaudit
L'outil kubeaudit est un outil en ligne de commande et une bibliothèque Go pour auditer les clusters Kubernetes pour divers problèmes de sécurité.
Kubeaudit peut détecter s'il s'exécute dans un conteneur d'un cluster. Dans ce cas, il essaiera d'auditer toutes les ressources Kubernetes de ce cluster :
Cet outil dispose également de l'argument autofix
pour corriger automatiquement les problèmes détectés.
Kube-hunter
L'outil kube-hunter recherche les faiblesses de sécurité dans les clusters Kubernetes. L'outil a été développé pour sensibiliser et mettre en évidence les problèmes de sécurité dans les environnements Kubernetes.
Kubei
Kubei est un outil d'analyse des vulnérabilités et de référence CIS Docker qui permet aux utilisateurs d'obtenir une évaluation précise et immédiate des risques de leurs clusters Kubernetes. Kubei analyse toutes les images utilisées dans un cluster Kubernetes, y compris les images des pods d'application et des pods système.
KubiScan
KubiScan est un outil de balayage des clusters Kubernetes à la recherche d'autorisations risquées dans le modèle d'autorisation basé sur les rôles (RBAC) de Kubernetes.
Audit du code IaC
Popeye
Popeye est un utilitaire qui analyse en direct un cluster Kubernetes et signale les problèmes potentiels liés aux ressources et configurations déployées. Il nettoie votre cluster en fonction de ce qui est déployé et non de ce qui est stocké sur le disque. En analysant votre cluster, il détecte les mauvaises configurations et vous aide à vous assurer que les meilleures pratiques sont en place, évitant ainsi les problèmes futurs. Il vise à réduire la surcharge cognitive à laquelle on est confronté lors de l'exploitation d'un cluster Kubernetes dans la nature. De plus, s'il utilise un serveur de métriques, il signale les éventuelles sur ou sous-allocations de ressources et tente de vous avertir si votre cluster manque de capacité.
Kicks
KICS trouve des vulnérabilités de sécurité, des problèmes de conformité et des erreurs de configuration d'infrastructure dans les solutions suivantes d'Infrastructure as Code : Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM et spécifications OpenAPI 3.0.
Checkov
Checkov est un outil d'analyse statique du code pour l'infrastructure en tant que code.
Il analyse l'infrastructure cloud provisionnée à l'aide de Terraform, Terraform plan, Cloudformation, AWS SAM, Kubernetes, Dockerfile, Serverless ou ARM Templates et détecte les erreurs de configuration de sécurité et de conformité à l'aide d'une analyse basée sur les graphiques.
Kube-score
kube-score est un outil qui effectue une analyse statique du code de vos définitions d'objets Kubernetes.
Pour l'installation :
Distribution | Commande / Lien |
---|---|
Binaires précompilés pour macOS, Linux et Windows | |
Docker |
|
Homebrew (macOS et Linux) |
|
Krew (macOS et Linux) |
|
Conseils
Surveillance avec Falco
Kubernetes PodSecurityContext et SecurityContext
Vous pouvez configurer le contexte de sécurité des pods (avec PodSecurityContext) et des conteneurs qui vont être exécutés (avec SecurityContext). Pour plus d'informations, lisez :
pageKubernetes SecurityContext(s)Durcissement de l'API Kubernetes
Il est très important de protéger l'accès au serveur API Kubernetes, car un acteur malveillant disposant de privilèges suffisants pourrait l'exploiter et endommager l'environnement de nombreuses manières. Il est important de sécuriser à la fois l'accès (autoriser les origines en liste blanche à accéder au serveur API et refuser toute autre connexion) et l'authentification (en suivant le principe du privilège minimal). Et surtout, ne jamais autoriser les requêtes anonymes.
Processus de demande courant : Utilisateur ou compte de service K8s -> Authentification -> Autorisation -> Contrôle d'admission.
Conseils :
Fermez les ports.
Évitez l'accès anonyme.
Restriction de nœud ; aucun accès depuis des nœuds spécifiques à l'API.
Empêche essentiellement les kubelets d'ajouter/supprimer/mettre à jour des étiquettes avec un préfixe node-restriction.kubernetes.io/. Ce préfixe d'étiquette est réservé aux administrateurs pour étiqueter leurs objets Node à des fins d'isolation des charges de travail, et les kubelets ne seront pas autorisés à modifier les étiquettes avec ce préfixe.
Et aussi, permet aux kubelets d'ajouter/supprimer/mettre à jour ces étiquettes et préfixes d'étiquettes.
Assurez-vous avec des étiquettes de l'isolation sécurisée des charges de travail.
Évitez l'accès API spécifique aux pods.
Évitez l'exposition de l'ApiServer à Internet.
Évitez l'accès non autorisé RBAC.
Port ApiServer avec pare-feu et liste blanche d'adresses IP.
Durcissement du SecurityContext
Par défaut, l'utilisateur root sera utilisé lorsqu'un pod est démarré si aucun autre utilisateur n'est spécifié. Vous pouvez exécuter votre application dans un contexte plus sécurisé en utilisant un modèle similaire au suivant :
Kubernetes NetworkPolicies
Durcissement général
Vous devez mettre à jour votre environnement Kubernetes aussi fréquemment que nécessaire pour :
Avoir des dépendances à jour.
Avoir des correctifs de bogues et de sécurité.
Cycles de publication : Tous les 3 mois, il y a une nouvelle version mineure -- 1.20.3 = 1(Majeur).20(Mineur).3(correctif)
La meilleure façon de mettre à jour un cluster Kubernetes est (à partir de ici) :
Mettre à niveau les composants du nœud maître en suivant cette séquence :
etcd (toutes les instances).
kube-apiserver (tous les hôtes du plan de contrôle).
kube-controller-manager.
kube-scheduler.
cloud controller manager, si vous en utilisez un.
Mettre à niveau les composants du nœud de travail tels que kube-proxy, kubelet.
Dernière mise à jour