S'assurer que les images conteneur sont exemptes de vulnérabilités connues avant le déploiement.
→Intégrer un scanner d'images comme Trivy, Clair ou Grype dans le pipeline CI/CD pour analyser les images et faire échouer la construction si des vulnérabilités critiques sont détectées.
Pourquoi: Automatise la détection précoce des vulnérabilités ("shift left"), empêchant le code vulnérable d'atteindre la production.
S'assurer que seules des images conteneur fiables et non modifiées sont déployées sur le cluster.
→Signer les images avec un outil comme Cosign dans le pipeline CI. Utiliser un contrôleur d'admission de validation (par exemple, Kyverno, Gatekeeper) pour vérifier la signature au moment du déploiement.
Pourquoi: Fournit une preuve cryptographique de l'intégrité de l'image (elle n'a pas été altérée) et de sa provenance (elle provient d'une source fiable).
Détecter les activités malveillantes à l'intérieur d'un conteneur en cours d'exécution (par exemple, un shell lancé, un accès à des fichiers sensibles).
→Déployer un outil de sécurité runtime comme Falco, qui utilise eBPF pour surveiller les appels système et alerter sur les comportements suspects basés sur un ensemble de règles défini.
Pourquoi: Fournit une visibilité sur l'activité runtime, que l'analyse statique et le contrôle d'admission ne peuvent pas voir. C'est crucial pour détecter les brèches actives.
Appliquer des politiques de sécurité personnalisées et spécifiques à l'organisation (par exemple, "toutes les images doivent provenir de notre registre d'entreprise").
→Utiliser un moteur de politiques comme OPA Gatekeeper ou Kyverno en tant que contrôleur d'admission de validation pour appliquer des politiques écrites en Rego ou YAML.
Pourquoi: Permet une application flexible, déclarative et automatisée des politiques de sécurité qui vont au-delà des contrôles intégrés de Kubernetes.
Chiffrer et authentifier tout le trafic de service à service au sein du cluster.
→Implémenter un service mesh (par exemple, Istio, Linkerd) pour fournir automatiquement mTLS pour tous les services maillés.
Pourquoi: Atteint le réseau zéro-confiance en garantissant que tout le trafic intra-cluster est chiffré et que les services vérifient mutuellement leur identité.
Exécuter des charges de travail non fiables ou multi-locataires qui nécessitent une isolation plus forte que les conteneurs standards.
→Utiliser un runtime de conteneur en bac à sable comme gVisor ou Kata Containers, qui fournissent une couche d'isolation supplémentaire entre le conteneur et le noyau hôte.
Pourquoi: Réduit la surface d'attaque du noyau hôte, rendant l'évasion de conteneur significativement plus difficile.
Contrôle granulaire des permissions d'un conteneur au niveau du noyau.
→Utiliser des profils Seccomp pour filtrer les appels système autorisés et des profils AppArmor/SELinux pour appliquer des contrôles d'accès obligatoires (MAC) sur l'accès aux fichiers et au réseau.
Pourquoi: Ces fonctionnalités de sécurité natives de Linux fournissent une couche de défense profonde, restreignant ce qu'un processus de conteneur compromis peut fondamentalement faire.
Réduire la surface d'attaque au sein d'une image conteneur.
→Construire des images d'application en utilisant des images de base minimales ou "distroless" qui ne contiennent que l'application et ses dépendances directes.
Pourquoi: Supprime les shells, les gestionnaires de paquets et d'autres utilitaires qui sont inutiles en production et pourraient être utilisés par un attaquant après une compromission.