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.
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.
Le problème qu’il résout
Section intitulée « Le problème qu’il résout »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).
Où Rego s’utilise
Section intitulée « Où Rego s’utilise »Validation en pipeline CI/CD — Conftest
Section intitulée « Validation en pipeline CI/CD — Conftest »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.
Admission controller Kubernetes — Gatekeeper
Section intitulée « Admission controller Kubernetes — Gatekeeper »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.
Moteur d’autorisation — OPA server
Section intitulée « Moteur d’autorisation — OPA server »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.
Gestion centralisée — Styra DAS
Section intitulée « Gestion centralisée — Styra DAS »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.
Rego vs les alternatives
Section intitulée « Rego vs les alternatives »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.
| Outil | Approche | Cas d’usage principal |
|---|---|---|
| Rego / OPA | Déclaratif, langage dédié | CI/CD + K8s + APIs |
| Kyverno | YAML natif Kubernetes | Admission K8s uniquement |
| CEL | Expressions inline dans les CRDs | ValidatingAdmissionPolicy K8s |
| Sentinel | Langage HashiCorp | Terraform 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.
Prérequis
Section intitulée « Prérequis »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.
Le parcours
Section intitulée « Le parcours »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.
Par où commencer
Section intitulée « Par où commencer »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.