|
Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi. |
|
Il s'agit d'une documentation non publiée pour Admission Controller 1.34-dev. |
Présentation de CEL
Le Common Expression Language (CEL) est un langage d’expression polyvalent conçu pour être rapide, portable et sûr à exécuter. Le CEL, en tant que langage, est sécurisé en mémoire, sans effets secondaires, garantissant la terminaison (les programmes ne peuvent pas boucler indéfiniment) et est fortement et dynamiquement typé. Vous pouvez en apprendre davantage sur le CEL sur cel.dev, et le pratiquer dans le terrain de jeu CEL.
CEL dans Kubernetes
Le CEL a été choisi comme langage pour les règles de validation Kubernetes car les expressions CEL peuvent être facilement intégrées dans les schémas CRD, et compilées et vérifiées "à l’avance" (lorsque les CRD sont créés et mis à jour). Pour ces raisons et ses caractéristiques générales, c’est un candidat parfait pour étendre l’API Kubernetes.
Marqué comme stable avec Kubernetes 1.30, on peut utiliser le CEL sur ValidatingAdmissionPolicies et d’autres règles de validation. Pour plus d’informations, consultez la documentation Kubernetes ici.
Bibliothèques de fonctions Kubernetes
Les règles de validation Kubernetes CEL ont accès à plusieurs bibliothèques de fonctions :
-
Bibliothèques d’extension Kubernetes CEL, avec des fonctions supplémentaires pour les listes, les regex, les URL, les autorisateurs, les quantités, les types optionnels, les comparaisons numériques, etc.
CEL dans SUSE Security Admission Controller : cel-policy
Admission Controller fournit cel-policy.
Il s’agit d’une stratégie qui construit et regroupe l’interpréteur cel-go en amont, ainsi que les différentes bibliothèques énumérées ci-dessus et disponibles pour CEL dans Kubernetes à partir de apiextensions-apiserver.
De plus, cel-policy regroupe une Admission Controller bibliothèque d’extension CEL qui expose les capacités d’hôte de Admission Controllerhttps://github.com/kubewarden/cel-policy?tab=readme-ov-file#host-capabilities[host capabilities as native CEL]https://github.com/kubewarden/cel-policy?tab=readme-ov-file#host-capabilities :
-
Vérification de Sigstore
-
Interaction OCI
-
Fonctions cryptographiques
-
Opérations réseau
-
Accès aux ressources Kubernetes
Cela signifie que cel-policy est un sur-ensemble de Kubernetes CEL, et rétrocompatible. On peut réutiliser le CEL écrit pour Kubernetes standard, et/ou utiliser les fonctionnalités ajoutées par Admission Controller.
Le cel-policy est livré compilé et se comporte comme un interpréteur CEL. Les utilisateurs de la stratégie passent les expressions CEL souhaitées dans le spec.settings de la (Cluster)AdmissionPolicy, et grâce aux fonctionnalités de CEL, l’expression est compilée et vérifiée pour sa validité lors de la création ou de la mise à jour de la (Cluster)AdmissionPolicy. Cela signifie qu’il n’est pas nécessaire de créer des versions personnalisées du cel-policy.
Avantages de Admission Controller`cel-policy` par rapport aux ValidatingAdmissionPolicies
Le Admission Controller cel-policy:
-
Son code CEL est rétrocompatible avec les ValidatingAdmissionPolicies.
-
Contrairement aux ValidatingAdmissionPolicies, il n’a pas besoin d’une liaison telle que ValidatingAdmissionPolicyBinding, car cela est inclus dans les définitions des (Cluster)Admissionpolicies de Admission Controller.
-
Peut être déployé sur des clusters qui ne prennent pas en charge les ValidatingAdmissionPolicies.
-
Est conscient du contexte et utilise les autorisations granulaires de Admission Controller pour la connaissance du contexte.
-
Est déployé en tant que (Cluster)AdmissionPolicy.
-
Bénéficie de la traçabilité et de la télémétrie de Admission Controller sur les stratégies.
-
Cela sera pris en compte par le Scanner d’Audit.
-
Peut être développé et testé en dehors du cluster grâce à kwctl.