Skip to content

Règles Kyverno appliquées aux clusters

Kyverno est un moteur de politiques conçu pour Kubernetes.

Ces politiques peuvent valider, muter, générer et nettoyer les ressources Kubernetes, ainsi que vérifier les signatures d'images et les artefacts pour aider à sécuriser la chaîne d'approvisionnement des logiciels.

Dans le cadre de l'offre de services du MIOM, les règles suivantes sont appliquées sur les clusters que nous opérons :

Kyverno RulesValidationFailure Action (Dev, preprod)ValidationFailure Action (Prod)Information importantesSeveritéTypedescription
add-velero-labellowBackupAjoute une étiquette sur le namespace pour être sauvegardé par Velero
add-netpol-allowsame-nslowMulti-Tenancy, NetworkPolicyAutorise le pod à communiquer dans le même namespace
add-netpol-denylowMulti-Tenancy, NetworkPolicyRefuse toute communication entrante vers les pods dans un namespace
add-netpol-ingresslowMulti-Tenancy, NetworkPolicyAutorise la communication entrante depuis le namespace openshift-ingress vers tous les pods dans un nouveau namespace créé
add-netpol-logginglowMulti-Tenancy, NetworkPolicyAutorise la communication entrante depuis le namespace openshift-logging vers tous les pods dans un nouveau namespace créé
add-ttlmediumBest PracticesAjoute un time to live (TTL) aux JOB dans le cluster, ce qui les conduit à être automatiquement nettoyés après une certaine période de temps
check-labelsAUDITENFORCELabels requis : app, env, tierlowBest PracticesCette règle garantit que toutes les ressources ont les étiquettes nécessaires appliquées aux pod
cm-no-credentialsAUDITENFORCEdata non autorisée : password, passwd, secret_keymediumPod Security Standards (Baseline)Empêche le stockage des informations d'identification dans les ConfigMaps, ce qui est une mauvaise pratique d'un point de vue sécurité
disallow-execENFORCEENFORCEhighPod Security Standards (Baseline)Empêche l'utilisation de la commande "exec" sur le namespace openshift-etcd pour des raisons de sécurité
disallow-latestAUDITENFORCEmediumPod Security Standards (Baseline)Les Pods n'utilisent pas la balise 'latest' pour leurs images, encourageant l'utilisation de balises versionnées spécifiques
disallow-hostpathAUDITENFORCEhighPod Security Standards (Baseline)Empêche l'utilisation des volumes hostPath, qui peuvent être un risque de sécurité s'ils ne sont pas correctement contrôlés
disallow-selfprovisionningAUDITENFORCEhighPod Security Standards (Baseline)Empêche la liaison au rôle de self-provisionners pour un contrôle strict de la création de projet OpenShift
etcdENFORCEENFORCEhighPod Security Standards (Baseline)Assure que le chiffrement est activé pour etcd dans les clusters OpenShift
limit-size-pvcAUDITENFORCEpvc < 1TilowBest PracticesLimite la taille des revendications de volume persistant (PVC) pour éviter l'utilisation excessive des ressources de stockage
need-containers-ressourcesAUDITENFORCElimits.memory, limits.cpu, request.memory et request.cpumediumBest PracticesAssure que les demandes de ressources et les limites sont définies pour tous les Pods, pour assurer une utilisation équitable des ressources
restrict-image-registryAUDITENFORCEregistres autorisés : docker.io/, harbor.io/, registry.redhat.io/, quay.io/, bitnami/, ghcr.io/mediumPod Security Standards (Baseline)Restreint les registres d'images à partir desquels les conteneurs peuvent tirer des images, comme mesure de sécurité pour assurer l'utilisation d'images de confiance uniquement
restrict-nodeportAUDITENFORCEmediumPod Security Standards (Baseline)Restreint l'utilisation des services NodePort, qui peuvent exposer des services à l'extérieur du cluster et représenter un risque de sécurité potentiel
need-liveness-readinessAUDITENFORCEmediumBest PracticesAssure que tous les conteneurs ont l'une des trois sondes (Liveness, Readiness ou Startup), pour s'assurer qu'ils signalent correctement leur statut à Openshift
job-historyAUDITENFORCElowBest PracticesCronjob: ajoute les propriétés successfulJobsHistoryLimit: 5 et failedJobsHistoryLimit: 5

Explication de la difference entre ENFORCE et AUDIT :

  • Enforce : Kyverno bloquera l'action (par exemple, la création, la mise à jour ou la suppression d'une ressource) si la politique n'est pas respectée. Cela garantit que toutes les ressources du cluster respectent les politiques mises en place.

  • Audit: Une action d'Audit ne bloquera pas une action si la politique n'est pas respectée, mais elle enregistrera l'infraction dans les résultats d'audit de Kyverno. C'est utile pour observer les infractions aux politiques sans bloquer les actions, ce qui peut être particulièrement utile dans les environnements de développement ou de test.