OPA (Open Policy Agent): policy as code universale

Open Policy Agent (2016 Styra, CNCF incubating 2018, graduated gennaio 2021, v1.0.0 stable dicembre 2024): policy engine generale con linguaggio Rego. Autorizzazione API, admission controller Kubernetes, Terraform validation, CI/CD gating.

Open SourceCyber Security OPAOpen Policy AgentRegoStyraPolicy as CodeCNCFKubernetesOpen Source

Policy as code

Le decisioni di autorizzazione e compliance sono tipicamente hard-coded: if user.role == "admin" sparsi ovunque, ACL SQL, LDAP group check, logica specifica per ogni tool (K8s RBAC, Terraform sentinel, CI rules). OPA propone un engine unico: le regole sono codice scritto in un linguaggio dichiarativo (Rego), separato dall’applicazione, versionabile, testabile.

Il rilascio

Open Policy Agent è creato da Styra (fondata da Tim Hinrichs, Torin Sandall) nel 2016, open source dall’inizio. Donato alla CNCF nel marzo 2018 (sandbox), incubating nel 2019, graduated il 29 gennaio 2021. La versione v1.0.0 stable arriva il 20 dicembre 2024 — consolidando le scelte di Rego (obbligatorietà di if e contains) dopo anni di rilasci v0.x già ampiamente usati in produzione. Scritto in Go, licenza Apache 2.0.

Il linguaggio Rego

Rego è dichiarativo, Datalog-ispirato:

package http.authz

default allow = false

allow {
    input.method == "GET"
    input.path = ["public", _]
}

allow {
    input.user.role == "admin"
}

Chiamata: input è il contesto, output è allow (true/false) o oggetti complessi.

Use case tipici

  • Kubernetes admission control — validare Pod, NetworkPolicy, RBAC (Gatekeeper è il framework OPA per K8s)
  • API authorization — Envoy ext_authz, Istio AuthorizationPolicy
  • CI/CD gating — validare Terraform plan, Helm chart, Dockerfile
  • Data filtering — row-level security su query
  • Microservizi — autorizzazione centralizzata
  • Cloud infra — policy su AWS/Azure/GCP resource

Ecosistema

  • Gatekeeper — OPA admission controller Kubernetes, con CRD ConstraintTemplate
  • Conftest — test policy su Dockerfile, K8s manifest, Terraform
  • OPA Envoy plugin — authorization filter
  • Terraform OPA provider
  • Styra DAS — commerciale, UI e governance

Alternative / concorrenti

  • Kyverno (2019) — policy K8s-native (YAML, non Rego)
  • Casbin — RBAC/ABAC library multi-lingua
  • Cedar (AWS, 2023) — simile Rego, BSD/Apache
  • HashiCorp Sentinel — commerciale, Terraform Enterprise
  • AWS IAM — policy JSON proprietarie

Nel contesto italiano

OPA è usato in:

  • Banche e fintech — autorizzazione micro-servizi, compliance SOX/PSD2
  • Telco — policy su API gateway
  • PA digitale — governance su cluster K8s multi-tenant
  • MSP / cloud native consulting — offerte Gatekeeper-based
  • CI/CD gating — policy Terraform/Helm prima di apply in produzione

Molti team di platform engineering italiani adottano OPA + Gatekeeper come controllo centrale.


Riferimenti: Open Policy Agent (Styra 2016). Tim Hinrichs, Torin Sandall. Licenza Apache 2.0. Linguaggio Rego dichiarativo. CNCF sandbox (marzo 2018), graduated (29 gennaio 2021). v1.0.0 stable (20 dicembre 2024). Gatekeeper (framework K8s admission).

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi