Aller au contenu
Développement medium

Rego : le langage de policy as code pour OPA et Kubernetes

5 min de lecture

Rego est le langage de requête et de politique d’Open Policy Agent (OPA). C’est un langage déclaratif et orienté données : vous décrivez ce qui doit être vrai, OPA se charge de l’évaluer. Résultat : des politiques lisibles, testables unitairement et versionnables comme du code.

Une source Rego distribuée via un bundle OPA signé et consommée par Conftest en CI/CD, Gatekeeper en admission Kubernetes et OPA Server pour l'autorisation d'APIs

Cette page sert de point d’entrée. Elle vous aide à comprendre le problème que Rego résout, les contextes où il s’utilise, ses alternatives, et le parcours à suivre selon votre niveau.

Dans un contexte DevSecOps, la même règle de sécurité tend à se retrouver à plusieurs endroits sous des formes différentes : un script Bash dans la CI, une annotation Kubernetes, une vérification manuelle en review. Chaque duplication est un écart potentiel.

Rego permet d’écrire cette règle une seule fois et de l’appliquer partout où OPA est présent : dans le pipeline pour valider les manifests avant le déploiement, dans Kubernetes comme admission controller pour bloquer les ressources non conformes, ou comme moteur d’autorisation pour les APIs.

# Une règle, une source de vérité
package kubernetes.policies
import rego.v1
deny contains msg if {
some c in input.spec.template.spec.containers
endswith(c.image, ":latest")
msg := sprintf("conteneur '%v' : tag latest interdit", [c.name])
}

Cette règle s’exécute à l’identique dans Conftest (CI/CD) et dans Gatekeeper (cluster Kubernetes).

Conftest applique des politiques Rego à n’importe quel fichier de configuration au moment du commit ou de la pull request : manifests Kubernetes, plans Terraform, Dockerfiles, fichiers GitHub Actions. C’est le moyen le moins intrusif d’introduire Rego dans un projet existant.

OPA Gatekeeper déploie OPA comme webhook d’admission dans Kubernetes. Chaque ressource soumise au cluster est évaluée par vos politiques avant d’être acceptée. C’est la couche de défense en profondeur après la CI.

OPA peut tourner comme service HTTP autonome. Les applications lui soumettent des requêtes d’autorisation (« qui peut faire quoi sur quelle ressource ») et OPA répond en millisecondes. C’est le cas d’usage historique, très répandu pour les APIs microservices.

Styra DAS est le plan de contrôle commercial construit autour d’OPA. Il centralise la distribution des politiques, l’audit des décisions et l’intégration avec les SIEM. La version gratuite couvre la plupart des besoins d’un homelab ou d’une petite organisation.

Avant de plonger dans la syntaxe, situez Rego par rapport aux autres approches de policy as code. Le bon choix dépend surtout du périmètre que vous voulez couvrir.

OutilApprocheCas d’usage principal
Rego / OPADéclaratif, langage dédiéCI/CD + K8s + APIs
KyvernoYAML natif KubernetesAdmission K8s uniquement
CELExpressions inline dans les CRDsValidatingAdmissionPolicy K8s
SentinelLangage HashiCorpTerraform Cloud / Vault Enterprise

Kyverno est plus accessible si vous opérez uniquement Kubernetes et que vous voulez éviter d’apprendre un nouveau langage. CEL est intégré nativement dans Kubernetes 1.26+ et ne nécessite pas de composant additionnel, mais son expressivité est limitée. Rego reste le choix le plus polyvalent dès que vous voulez couvrir à la fois la CI/CD et plusieurs types d’infrastructure.

Ce parcours suppose que vous êtes à l’aise avec :

  • la lecture de manifests Kubernetes (Deployment, Pod, etc.) ;
  • les structures de données JSON ;
  • l’utilisation d’un terminal et d’un gestionnaire de paquets.

Aucune connaissance préalable de Rego ou d’OPA n’est nécessaire. Le guide de syntaxe de base part de zéro.

Les cinq guides ci-dessous s’enchaînent. Chacun complète le précédent : syntaxe, puis structures de données et itération, puis factorisation, puis outillage, enfin industrialisation.

Vous découvrez Rego : commencez par Syntaxe de base et suivez le parcours dans l’ordre. Le fil rouge Kubernetes traverse tous les guides.

Vous connaissez OPA mais pas Rego : Données et itération couvre l’itération implicite qui déroute le plus souvent les utilisateurs venant d’autres langages.

Vous voulez intégrer Rego dans votre CI dès aujourd’hui : allez directement à OPA en pratique, section Conftest. Vous pourrez revenir sur les guides de langage si besoin.

Vous voulez distribuer des politiques à plusieurs équipes : Rego avancé couvre les bundles OCI et la structure d’une bibliothèque organisationnelle.

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