Aller au contenu principal

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 officielhttps://openpolicyagent.org/
Repositoryhttps://github.com/open-policy-agent/opa
LicenceApache 2.0
DéveloppeurOPA (CNCF)
LangageGo
Policy DSLRego

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