Aller au contenu
Conteneurs & Orchestration high

VAP+MAP vs Kyverno vs Gatekeeper — Comparatif 2026

15 min de lecture

Logo Kubernetes

Trois approches dominent l'écosystème Kubernetes pour les policies d'admission : le duo natif ValidatingAdmissionPolicy + MutatingAdmissionPolicy (tous deux GA depuis 1.36), Kyverno et Gatekeeper. Ce comparatif présente leur état réel en avril 2026, y compris les transitions en cours qui changent la donne.

Ce tableau synthétise les caractéristiques actuelles de chaque solution. Regardez d'abord les lignes "Installation" et "Langage principal" pour comprendre le positionnement : VAP+MAP sont natifs et utilisent CEL, Kyverno privilégie YAML avec CEL en complément, Gatekeeper s'appuie sur Rego (le langage d'OPA). La ligne "Positionnement 2026" résume les évolutions en cours.

CritèreVAP + MAP (natif)KyvernoGatekeeper
InstallationNative, rien à déployerComposant externe (webhook)Composant externe (webhook)
ValidationGA depuis 1.30OuiOui
MutationGA depuis 1.36 (MutatingAdmissionPolicy)OuiOui
GénérationNonOuiNon
Vérification de signature d'imageNonOui (Cosign)Non
Audit / reportingBasique via Warn/AuditPolicyReportsIntégré
Langage principalCELYAML + CELRego
Statut CNCFFonctionnalité native K8sIncubatingBasé sur OPA (Graduated)
Positionnement 2026Duo natif validation + mutation déclarativesMoteur riche, transition CELOPA/Rego, intégration VAP renforcée
spec:
validations:
- expression: |
!object.spec.containers.exists(c,
has(c.securityContext) &&
has(c.securityContext.privileged) &&
c.securityContext.privileged
)
message: "Conteneurs privilégiés interdits"

Avantages :

  • Expressif et typé
  • Standard Kubernetes (utilisé dans CRD validation)
  • Exécution in-process (pas de webhook)

Inconvénients :

  • Syntaxe moins intuitive que YAML
  • Nécessite des has() pour éviter les erreurs sur champs absents
EngineModèleCommentaire
VAPPolicy + Binding + Params (3 ressources)Séparation claire : logique / scope / valeurs
KyvernoClusterPolicy (1 ressource) ou nouveaux types CELTout-en-un historique, transition vers types dédiés
GatekeeperTemplate + Constraint (2 ressources)Template Rego réutilisable, Constraint l'instancie

Les modèles VAP et Gatekeeper facilitent la séparation des responsabilités : l'équipe plateforme crée les templates/policies, les équipes applicatives les instancient.

Chaque engine couvre un périmètre différent. La validation est disponible partout, mais les différences apparaissent sur la mutation (modifier les objets avant leur création), la génération (créer automatiquement d'autres ressources), et la vérification d'images (Cosign/Sigstore). Si vous avez besoin de génération ou de signature d'images, Kyverno est actuellement le seul à proposer ces fonctionnalités.

FonctionnalitéVAP + MAPKyvernoGatekeeper
ValidationGAOuiOui
MutationGA en 1.36 (MAP)MatureStable
GénérationNonUniqueNon
Image verificationNonCosign/SigstoreNon
ParamétrageparamRef/paramKindVariablesVia Constraint
Déploiement progressifWarn/Audit via validationActionsAudit modedryrun/warn
matchConditionsCELYAML/CELRego

Approche qualitative (pas de benchmark officiel robuste disponible) :

EngineCaractéristiqueImpact
VAPExécution in-process dans l'API serverLatence la plus faible, pas d'appel réseau
KyvernoWebhook HTTP externeCoût réseau + composant externe
GatekeeperWebhook HTTP externe + RegoCoût réseau + évaluation Rego

Conclusion : VAP est structurellement le plus performant pour la validation pure. Pour la plupart des clusters, les trois solutions sont suffisamment performantes, mais sur des clusters à fort volume, VAP a un avantage architectural.

Au-delà des fonctionnalités techniques, l'écosystème influence fortement votre productivité. Une librairie de policies prêtes à l'emploi évite de tout écrire soi-même. Une CLI dédiée facilite les tests avant déploiement. L'intégration GitOps garantit un workflow déclaratif cohérent avec ArgoCD ou Flux.

AspectVAPKyvernoGatekeeper
Librairie de policiesÀ écrire soi-mêmePolicy Library (200+)Gatekeeper Library
CLI pour testskubectlkyverno CLIgator (recommandé) / opa
ArgoCD/FluxNatifIntégration forteIntégration
CommunitySIG AuthCNCF IncubatingBasé sur OPA (CNCF Graduated)

✅ Kubernetes 1.36+ (mutation et validation natives) ou 1.30+ (validation seule) ✅ Performance critique (validations à haute fréquence) ✅ Architecture minimaliste sans composant externe ✅ Équipe à l'aise avec CEL ✅ Mutations simples (label par défaut, runAsNonRoot: true, valeurs par défaut)

Limites à connaître :

  • Pas de génération d'autres ressources (NetworkPolicy, Secret, ConfigMap auto-créés)
  • Pas de vérification de signature d'image (Cosign)
  • Pas de librairie prête à l'emploi
  • Pas de reporting riche comme PolicyReports

Recommandation CKS : le duo VAP + MAP est le choix le plus aligné avec l'approche "native Kubernetes" attendue à l'examen.

✅ Besoins de mutation importants (injection de sidecars, defaults) ✅ Génération automatique de ressources (NetworkPolicies, Secrets) ✅ Vérification d'images (Cosign/Sigstore) ✅ Équipe préférant YAML pur

Attention en 2026 :

  • Le modèle historique ClusterPolicy est en transition vers les nouveaux types CEL
  • Investir massivement dans l'ancien modèle peut créer une dette technique
  • Complexité opérationnelle (webhook, HA, debugging)

✅ OPA déjà utilisé ailleurs (Terraform, CI, APIs) ✅ Équipe maîtrisant Rego ✅ Policies complexes avec références croisées ✅ Besoin d'audit intégré des ressources existantes

Évolution 2026 :

  • Gatekeeper s'intègre mieux avec VAP (génération de ressources VAP)
  • Coût cognitif et opérationnel plus élevé qu'un VAP natif
  • Reste le choix OPA/Rego pour les équipes investies dans cet écosystème

Rien n'empêche de combiner plusieurs engines pour bénéficier de leurs forces respectives. L'approche la plus courante consiste à utiliser VAP pour les validations critiques (performance) et Kyverno ou Gatekeeper pour les fonctionnalités avancées (mutation, génération, audit). Ce tableau présente les combinaisons les plus pertinentes — mais attention aux risques documentés dans l'encadré qui suit.

CombinaisonUse caseAvantage
VAP + KyvernoVAP pour validation critique, Kyverno pour mutation/générationPerformance + fonctionnalités complètes
VAP + Gatekeeper auditVAP enforce, Gatekeeper pour conformité continuePerformance + audit détaillé
Kyverno seulCouverture complète sans RegoSimplicité conceptuelle (attention transition 1.17)

Avec VAP en GA depuis 1.30 et MAP en GA depuis 1.36, migrer les validations et les mutations simples depuis Kyverno/Gatekeeper vers le duo natif devient pertinent.

  • Interdire les conteneurs privilégiés (VAP)
  • Restreindre les registries autorisés (VAP)
  • Exiger certains labels (VAP)
  • Bloquer hostPath, hostNetwork (VAP)
  • Limiter les réplicas (VAP)
  • Injecter un label par défaut (MAP ApplyConfiguration)
  • Imposer runAsNonRoot: true ou allowPrivilegeEscalation: false par défaut (MAP)
  • Ajouter des annotations standards (MAP)
  • Génération : ni VAP ni MAP ne génèrent d'autres ressources (Kyverno reste seul)
  • Vérification d'images : pas d'équivalent Cosign en natif
  • Policies complexes : certaines logiques Rego ne se traduisent pas en CEL
  • Mutation par référence croisée (lire un ConfigMap, fusionner avec un secret) : limité en CEL
spec:
rules:
- name: deny-privileged
validate:
cel:
expressions:
- expression: |
!object.spec.containers.exists(c,
c.securityContext.privileged == true
)

Comment utiliser ce tableau : Parcourez les questions de haut en bas. Dès qu'une réponse correspond à votre situation, la recommandation associée est probablement le bon choix. Si plusieurs lignes correspondent, privilégiez celle qui répond au besoin le plus critique pour votre contexte.

QuestionRéponseRecommandationPourquoi
Kubernetes 1.30+ ?NonKyverno ou GatekeeperVAP non disponible
Validation simple uniquement ?OuiVAPNatif, performant, sans dépendance
Mutation simple (label, default) sur K8s 1.36+ ?OuiMAPNatif, sans webhook
Mutation avec génération d'autres ressources ?OuiKyvernoSeul à proposer la génération
Signature d'images ?OuiKyvernoIntégration Cosign native
OPA/Rego déjà utilisé ?OuiGatekeeperRéutilisation des compétences
Policies très complexes ?OuiGatekeeperRego le plus puissant
Architecture minimaliste ?OuiVAP + MAPPas de composant externe

Pour clarifier le positionnement de ce comparatif par rapport à l'examen :

La certification CKS évalue votre capacité à sécuriser un cluster, pas votre maîtrise d'un outil spécifique. Le tableau ci-dessous montre comment les différents policy engines peuvent répondre aux objectifs du curriculum — mais l'examinateur s'intéresse au résultat ("les Pods ne peuvent pas être privilégiés"), pas à l'outil utilisé pour y parvenir.

Domaine CKSCe qui est évaluéOutil possible
Cluster HardeningPod Security Standards, restrictionsVAP, PSA, Kyverno, Gatekeeper
Supply Chain SecurityRegistries autorisées, signatures, SBOMKyverno (Cosign), Gatekeeper, outils externes
System HardeningLeast privilege, seccomp, AppArmorTous peuvent contribuer
Minimize Microservice VulnerabilitiesNetwork policies, secretsKyverno (génération), VAP

L'examen évalue des résultats sécurité, pas la maîtrise d'un outil spécifique. Vous devez savoir implémenter des contrôles, pas nécessairement avec Kyverno ou Gatekeeper.

  1. VAP + MAP (GA 1.30 / GA 1.36) : duo natif validation + mutation, sans webhook — le plus aligné CKS
  2. Kyverno : mutation/génération/signatures, mais transition 1.17 à anticiper
  3. Gatekeeper : OPA/Rego + audit intégré, intégration VAP renforcée en 3.22
  4. Combinaison possible : VAP+MAP pour validation et mutation simple + Kyverno pour génération/signatures, mais attention aux risques
  5. CKS : évalue des objectifs sécurité, pas un outil spécifique

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn