Conftest vs OPA: Policy as Code Comparados
Eles são relacionados, não rivais: ambos usam a linguagem Rego. OPA (Open Policy Agent) é um mecanismo de políticas de propósito geral, muitas vezes executado como serviço; Conftest é uma CLI construída sobre OPA para testar arquivos de configuração estruturados contra políticas Rego.
Uma dúvida frequente é usar Conftest ou OPA. Conftest envolve o mecanismo OPA para tornar um trabalho fácil: checar arquivos de configuração (YAML, JSON, Dockerfile, HCL e mais) contra Rego no CI. OPA é o mecanismo mais amplo que também lida com autorização em runtime. Veja como eles se relacionam.
| Conftest | OPA | |
|---|---|---|
| O que é | CLI para testar arquivos de configuração | Mecanismo de políticas geral + biblioteca |
| Linguagem | Rego | Rego |
| Uso principal | Checagens de config em CI/CD | Autorização em runtime + política |
| Entradas | YAML/JSON/HCL/Dockerfile/etc. | Qualquer dado JSON / queries de API |
| Deployment | Executado como um passo de CLI | Server, sidecar ou embutido |
| Relação | Construído sobre OPA | Base do Conftest |
Mecanismo vs wrapper de CLI
OPA é um mecanismo de políticas completo que você pode embutir em aplicações, executar como server para admission control (via Gatekeeper) ou autorização de API, e consultar em runtime. Conftest reduz isso a uma CLI amigável ao desenvolvedor: aponte-a para arquivos de configuração e políticas Rego, e ela passa ou falha. Se sua necessidade é checagem estática de arquivos no CI, Conftest é a escolha ergonômica.
Escolhendo por caso de uso
Use Conftest para bloquear pull requests: barre um manifesto do Kubernetes sem resource limits, um Dockerfile rodando como root ou Terraform com um bucket público. Use OPA quando você precisa de decisões de política em runtime, admission control de cluster ou um serviço de políticas reutilizável entre sistemas. O Rego que você escreve é portável entre eles.
No CI
Conftest se encaixa naturalmente como um gate fail-fast sobre arquivos de configuração; execute-o nos manifestos alterados em pull requests. Se você já executa OPA em outro lugar, compartilhar Rego entre a política de runtime e as checagens do Conftest no CI evita duplicar regras.
O veredito
Escolha Conftest para testar arquivos de configuração contra Rego no CI; escolha OPA (diretamente ou via Gatekeeper) quando você precisa de um mecanismo de políticas geral para autorização em runtime ou admission control. Eles compartilham Rego, então os investimentos são reaproveitados.