Open Policy Agent (OPA)
Overview
Open Policy Agent (OPA), c'est le policy engine CNCF qui pense que hardcoder tes règles de sécurité et compliance dans ton code, c'est de l'amateurisme. Il découple complètement policy decision du policy enforcement avec un langage déclaratif (Rego) et une API REST uniforme. Tu définis tes policies une fois, tu les appliques partout : Kubernetes, APIs, microservices, CI/CD. Si tu veux de la governance programmatique et flexible, c'est le standard.
OPA utilise le langage Rego pour exprimer des policies complexes avec logique, conditions, et transformations de données. Architecture pluggable avec intégrations natives pour Kubernetes (via Gatekeeper), Envoy Proxy, Terraform, et centaines d'autres systèmes. Decision logging, policy testing, hot-reload.
OPA se distingue par sa généralité (pas limité à Kubernetes), sa flexibilité (Rego permet logique complexe), et son écosystème massif (intégrations officielles pour tout l'écosystème cloud-native).
Informations essentielles
| Propriété | Valeur |
|---|---|
| Site officiel | https://openpolicyagent.org/ |
| Repository | https://github.com/open-policy-agent/opa |
| Licence | Apache 2.0 |
| Développeur | OPA (CNCF) |
| Langage | Go |
| Policy DSL | Rego |
Cas d'usage typiques
- Authorization policies pour APIs et microservices avec JWT/OAuth
- Kubernetes admission control via Gatekeeper pour security policies
- Infrastructure policy enforcement pour Terraform, CloudFormation
- Data filtering et transformation avec policies context-aware
- Multi-cloud governance avec policies uniformes cross-providers
- Compliance automation avec policies auditables et versionnées
Intégrations et écosystème
- Kubernetes : Gatekeeper pour admission control, Conftest pour CI/CD
- Proxies : Envoy, Istio pour service mesh authorization
- CI/CD : Conftest pour validation IaC, Docker image scanning
- Cloud : intégrations AWS, GCP, Azure pour cloud governance
- Data : intégration avec bases de données pour row-level security
- Languages : SDKs Go, Java, Python pour intégration custom
Avantages
- ✅ Général purpose : pas limité à K8s, fonctionne avec tout système
- ✅ Langage puissant : Rego permet logique complexe, conditions, transformations
- ✅ CNCF mature : projet établi, production-ready, écosystème massif
- ✅ Performance : engine optimisé, caching intelligent, évaluation rapide
- ✅ Observability : decision logging, policy coverage, debugging tools
- ✅ Ecosystem : centaines d'intégrations officielles et communautaires
Inconvénients et limitations
- ❌ Courbe apprentissage : Rego nécessite apprentissage DSL spécifique
- ❌ Complexité debugging : policies complexes difficiles à troubleshooter
- ❌ Performance overhead : évaluation policies ajoute latence aux requests
- ❌ Verbosité Rego : policies simples peuvent nécessiter beaucoup de code
- ❌ Tooling ecosystem : moins d'outils user-friendly que solutions spécialisées
Alternatives
- Kyverno : policy engine Kubernetes-only mais plus simple (YAML)
- AWS IAM/Azure RBAC : policies cloud natives (vendor lock-in)
- Cedar : langage policy Amazon (plus récent, moins mature)
- Casbin : authorization library multi-language (moins features)
- Custom code : hardcoding policies dans applications (maintenance élevée)
Ressources
- Site officiel : https://openpolicyagent.org/
- Documentation : https://openpolicyagent.org/docs/
- GitHub : https://github.com/open-policy-agent/opa
- Rego Playground : https://play.openpolicyagent.org/