Open source, simple d’utilisation et efficace, Kyverno permet d’assurer le respect de bonnes pratiques de sécurité au runtime dans Kubernetes.
Si la plupart des paramètres de sécurité des workloads doivent être vérifiés au plus tôt, notamment en CI/CD, l’imposition de policy directement intégrée au moteur de validation de Kubernetes permet le respect des bonnes pratiques de manière certaine.
Kubernetes étant un élément critique des infrastructures, il est nécessaire d’y imposer des bonnes pratiques de sécurité. Nativement, le control plane de Kubernetes n’offre pas la possibilité de définir finement des politiques de sécurité custom (les Pods Admission Policies disponibles depuis la 1.25 permettent une gestion basique).
Kyverno est un policy engine dans Kubernetes. La puissance de Kyverno réside dans la simplicité d’écriture des policies en yaml. En status Incubating depuis 2020 au sein de l’incubateur CNCF, Kyverno a connu depuis une traction très forte comparée à son concurrent principal OPA Gatekeeper.
Basé sur les validationWebhook et mutationWebhook Kubernetes, l’outil propose une large gamme de policies pré-rédigées. Par exemple, exiger la présence de request/limit pour tous les pods ou interdire la création de pods privilégiés.
Kyverno offre également un moyen élégant d’ajouter des configurations de sécurité à la volée via des mutations Webhooks :
- Ajouter un proxy HTTP en variable d’environnement des pods
- Créer des droits RBAC dynamiquement à la création d’un namespace
Nous conseillons néanmoins de limiter l’usage des mutationPolicies qui peuvent nuire à la compréhension lors d’incidents : la ressource n’étant plus exactement définie as code, la personne en charge du debug doit avoir connaissance de ce mécanisme.
Warning : Comme tous les outils tirant parti des webhooks Kubernetes, Kyverno peut être un SPOF si sa FailurePolicy est en Fail : si Kyverno est down, l’API Server ne peut pas valider les requêtes et n’autorise donc aucune action. Une bonne pratique est de whitelister les namespaces critiques tels que kube-system pour éviter tout problème.