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
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