OPA (Open Policy Agent)

Définition

OPA (Open Policy Agent) est un moteur de politique open-source à usage général qui unifie l’application des politiques à travers la pile. Il utilise un langage déclaratif de haut niveau appelé Rego pour définir des politiques, les évalue contre des données, et retourne une décision (allow/deny).

OPA est hébergé par la CNCF et est couramment utilisé pour l’autorisation Kubernetes, la sécurité API et la gouvernance d’infrastructure.

Concepts clés

  • Rego : Langage de politique déclaratif (programmation logique, comme Datalog)
  • Decision : OPA retourne true (allow) ou false (deny) pour une requête
  • Policy : Fichier Rego définissant les règles
  • Data : Données JSON contre lesquelles les politiques sont évaluées
  • Input : Entrée dynamique fournie au moment de l’évaluation
  • Policy as Code : Politiques stockées dans Git, versionnées

Comment fonctionne OPA

Requête (ex. kubectl create pod)
       ↓
OPA (admission webhook)
       ↓ évalue la politique Rego contre input + data
Décision : allow / deny
       ↓
Kubernetes accepte/rejette la requête

Cas d’usage OPA

Cas d’usage Description
Contrôle d’admission Kubernetes Valider/modifier les ressources K8s avant création
Autorisation API Contrôler l’accès aux points de terminaison API
Gouvernance d’infrastructure Appliquer les politiques de ressources cloud
Politique CI/CD Bloquer les déploiements qui violent les politiques
Contrôle d’accès base de données Contrôler l’accès SQL/NoSQL
Autorisation microservice Accès fin grain service-à-service

Exemple Rego OPA

# policy/k8s/restrict_image.rego
package kubernetes.admission

deny[msg] {
    input.request.object.spec.containers[_].image
    not startswith(input.request.object.spec.containers[_].image, "gcr.io/production/")
    msg := "Les images doivent provenir de gcr.io/production/"
}

OPA vs firewalls traditionnels

Aspect OPA Firewall traditionnel
Portée Politiques au niveau application Réseau (IP/port)
Langage Rego (déclaratif) Règles ACL
Flexibilité Élevée (logique, data-driven) Limitée
Intégration APIs, K8s, CI/CD, bases de données Périphériques réseau
Application Niveau code Niveau réseau

Écosystème OPA

Projet Objectif
OPA Gatekeeper Contrôle d’admission Kubernetes pour les politiques OPA
Sentinel OPA avec fonctionnalités supplémentaires (HashiCorp)
Conftest Tester les fichiers de configuration contre les politiques OPA
Styra DAS Plateforme de gestion et de visualisation OPA

Termes liés

  • Kubernetes — OPA peut appliquer des politiques API
  • Rego — langage de politique d’OPA

Références