חָק נָתַן וְלֹא יַעֲבוֹר chok natan velo ya'avor · fixou um decreto que não se ultrapassa · Tehilim 148:6

Blog/Artigos · Cloud e Plataforma

Policy as Code: o decreto que não se ultrapassa, escrito em código

OPA e Rego, Checkov, Sentinel e Kyverno, onde a política atua no pipeline, e a diferença entre guardrail que barra e alerta que só avisa.

Por Juliano Vince de Campos · · 8 min de leitura · 5 seções · 5 figuras

חֹק CHOK · TEHILIM 148:6

O salmo fala de um decreto fixado sobre a criação que não se ultrapassa: um limite que vale porque a natureza o cumpre, não porque alguém fiscaliza a cada instante. Política de segurança devia ser assim, e quase nunca é. Na maioria das empresas ela vive num PDF que ninguém lê, contornado por pressa e por desconhecimento, fiscalizado tarde demais, na auditoria anual, quando o estrago já está no ar. Policy as Code muda a natureza do decreto: a regra vira código que barra a violação no instante em que ela tentaria nascer. O limite deixa de depender de vigilância e passa a valer por construção, como o decreto que não se ultrapassa.

Da política em PDF ao decreto que executa

Política escrita em documento tem três fraquezas fatais. Primeira: ninguém lê, e quem lê esquece. Segunda: ela é aplicada tarde, na revisão manual ou na auditoria, quando o recurso inseguro já está no ar há semanas. Terceira: ela depende de vigilância humana constante, que cansa e falha. O resultado é a política que existe no papel e não na realidade, o pior dos mundos, porque dá a sensação de controle sem o controle de fato. A auditoria encontra o bucket aberto que a política proibia, e a política não impediu nada.

Policy as Code escreve a regra em código executável e a coloca no caminho da mudança. A política deixa de ser um texto para consultar e vira uma verificação que roda automaticamente: o recurso sem criptografia não passa, a porta de rede aberta para o mundo é barrada, o container que roda como root é recusado. A regra é a mesma; o que muda é que ela executa em vez de aconselhar. E porque é código, ela é versionada, testada e revisada como qualquer outro código, o que resolve a pergunta que a política em PDF nunca respondia bem: quem mudou a regra, quando e por quê.

Figura 1Política em documento e política em código
AspectoPolítica em PDFPolicy as Code
Quando agena auditoria, semanas depoisno instante da mudança, antes de subir
Como ageaconselha, depende de alguém lerexecuta, barra a violação sozinha
Coberturaamostra que o auditor conseguiu vertoda mudança, sem exceção nem cansaço
Versionadarevisão de documento, se houvercódigo com histórico, teste e pull request
Efeitosensação de controle sem controleo limite vale por construção
A regra é a mesma; o que muda é que ela executa em vez de aconselhar. A política em PDF dá a sensação de controle sem o controle, e a auditoria encontra o que ela proibia no papel, aberto na realidade.

Onde a política atua: quanto mais cedo, mais barato

Policy as Code segue o princípio do shift-left: quanto mais cedo a regra atua, mais barato custa a violação. No commit, um hook local avisa antes mesmo do push. Na integração, o scanner roda sobre o código de infraestrutura e barra o pull request, e é aqui que ferramentas como o Checkov brilham, lendo o Terraform e apontando o recurso inseguro antes de ele existir. No plan, o Atlantis pode exigir que a política aprove o diff antes do apply. E na admissão do cluster, um controlador recusa o manifesto que viola a regra no momento em que ele tentaria entrar.

Essas camadas não competem, se somam. A verificação no commit dá feedback rápido a quem escreve; a do pipeline é o gate que não se contorna com pressa; a da admissão é a última linha, que pega até o que tentou entrar por fora do pipeline. Um programa maduro tem a mesma política expressa nas várias camadas, para que a regra valha independentemente do caminho pelo qual a mudança chega. É defesa em profundidade aplicada à conformidade: mesmo que uma camada falhe ou seja pulada, a seguinte segura, e o decreto se cumpre em qualquer rota.

Figura 2Onde a política executa, do commit ao cluster
  1. 01Commithook local avisa antes do push: feedback mais barato de todos
  2. 02IAIntegraçãoscanner lê o IaC e barra o pull request (ex.: Checkov)
  3. 03Plana política aprova o diff antes do apply (ex.: Atlantis)
  4. 04Admissãoo cluster recusa o manifesto que viola a regra (ex.: Kyverno)
  5. 05Runtimeverificação contínua pega o que mudou por fora depois

As camadas não competem, se somam: se uma falha ou é pulada, a seguinte segura. O decreto se cumpre em qualquer rota pela qual a mudança chegue.

Shift-left: quanto mais cedo a regra atua, mais barata a violação. A mesma política expressa em várias camadas é defesa em profundidade aplicada à conformidade.

As ferramentas: uma linguagem geral e várias especialistas

O ecossistema tem uma peça central e várias especialistas. O OPA, o Open Policy Agent, projeto graduado da CNCF, é o motor de política de propósito geral: sua linguagem, o Rego, expressa regra sobre qualquer JSON, o que o torna capaz de avaliar desde manifesto Kubernetes até configuração de nuvem e resposta de API. Em torno dele e ao lado dele vivem as especialistas: o Checkov, da Bridgecrew, focado em varrer IaC; o Sentinel, da HashiCorp, integrado ao Terraform; o Conftest, que roda Rego sobre arquivos de configuração; e o Kyverno e o Gatekeeper, para admissão em Kubernetes.

A escolha depende de onde a regra precisa morar. Para admissão em cluster, Kyverno agrada por escrever política em YAML, sem aprender Rego, enquanto o Gatekeeper usa OPA por baixo. Para IaC, Checkov entrega centenas de regras prontas e cobre o caso comum sem escrever nada. Para regra própria e complexa que atravessa domínios, OPA e Rego dão o poder geral, ao custo de uma linguagem a aprender. O erro é dogmático: adotar uma só ferramenta para tudo e forçá-la onde não encaixa. O maduro combina, com a mesma intenção de política expressa na ferramenta certa de cada camada.

Figura 3As ferramentas de Policy as Code e onde cada uma encaixa
FerramentaOnde atuaComo se escreveForça
OPA / Regopropósito geral, qualquer JSONRegopoder de expressar regra que atravessa domínios
Checkovvarredura de IaCregras prontas, extensívelcentenas de regras sem escrever nada
SentinelTerraform (HashiCorp)linguagem própriaintegrado ao plan do Terraform Cloud
Kyvernoadmissão em KubernetesYAML, sem Regopolítica de cluster sem linguagem nova
Gatekeeperadmissão em KubernetesOPA/Rego por baixoo poder do OPA no controle de admissão
Uma peça geral (OPA) e várias especialistas. A escolha depende de onde a regra precisa morar. O erro é adotar uma só para tudo; o maduro combina, com a intenção de política na ferramenta certa de cada camada.

Guardrail que barra e alerta que só avisa

Nem toda política deve barrar. Existem dois modos, e confundir os dois quebra o programa. O modo preventivo barra: a violação não passa, e isso é certo para o inegociável, o dado sensível exposto, a porta aberta para o mundo, a credencial no código. O modo detectivo alerta: deixa passar e registra, o que é certo para o que é recomendação, não lei, ou para o que ainda está sendo adotado e barrar de imediato pararia o time. A arte é saber qual regra merece qual modo, e essa é uma decisão de risco, não de tecnologia.

O erro dos dois lados é comum. Barrar tudo, inclusive o que é só recomendação, gera o efeito Gandalf, o não passarás em toda mudança, e o time aprende a burlar ou a odiar a segurança. Alertar tudo, inclusive o inegociável, gera a fadiga de alerta, e o aviso que importa afoga no ruído dos que não importam. O equilíbrio maduro é a metáfora do guardrail: como a mureta na estrada, ele te impede de cair no precipício, mas não dirige o carro por você. Barra o desastre, avisa o resto, e deixa o time andar. Governança que só sabe dizer não é governança que o time aprende a contornar.

Figura 4Que modo dar a cada política: gravidade contra maturidade da adoção
Gravidade da violação
Barrargrave e já adotável: o inegociável, dado exposto, porta aberta. Preventivo.
Barrar com exceçãograve mas em adoção: barra, mas com caminho de exceção rastreado.
Alertar forteleve mas madura: recomendação que o time deveria seguir, avisa.
Só registrarleve e nova: acompanha para medir adoção antes de exigir.
Quão adotada a regra já está
Barrar tudo gera o efeito 'não passarás' e o time burla; alertar tudo gera fadiga e o aviso que importa afoga. O guardrail barra o desastre, avisa o resto e deixa o time andar.

A maturidade de Policy as Code, e sua base

Policy as Code amadurece do nada ao decreto que se cumpre em qualquer rota. No começo é a política no PDF, aplicada na auditoria. No meio é o scanner no pipeline barrando o IaC inseguro. No topo é a mesma política expressa em várias camadas, com modo preventivo e detectivo bem escolhidos, exceções rastreadas e a IA gerando e explicando regra. Cada degrau move a política para mais perto do instante da mudança, até ela valer por construção.

Policy as Code não flutua sozinho: ele senta sobre o IaC, que dá o alvo a verificar, e sobre o GitOps, que dá o momento de verificar, e serve à governança, que dá a intenção. É a ponte entre a política que a governança escreve, vista no artigo sobre GRC, e a realidade da nuvem: sem ela, a política é aspiração; com ela, é fato. Escrever o decreto em código é o que faz a regra deixar o papel e passar a valer no mundo, cumprindo o salmo, um limite que se cumpre porque está construído para se cumprir, não porque alguém vigia.

Figura 5Maturidade de Policy as Code
  1. 0Papelpolítica em PDF, aplicada só na auditoria anual
  2. 1Manualrevisão humana tenta pegar a violação, e cansa
  3. 2No pipelinescanner barra o IaC inseguro no pull request
  4. 3Multicamadacommit, plan e admissão aplicam a mesma regra
  5. 4Modo certopreventivo e detectivo bem escolhidos, exceção rastreada
  6. 5Decreto vivoIA gera e explica a regra; o limite vale por construção
Cada degrau move a política para mais perto do instante da mudança. Policy as Code é a ponte entre a intenção que a governança escreve e a realidade da nuvem: sem ela, política é aspiração.

Para levar

Policy as Code transforma a política do PDF que ninguém cumpre no decreto que não se ultrapassa, escrito em código que barra a violação no instante da mudança. Atua em camadas, do commit à admissão, com defesa em profundidade; usa OPA, Checkov, Sentinel ou Kyverno conforme a camada; e distingue o guardrail que barra o desastre do alerta que só avisa, para o time seguir andando. A IA gera a regra, escreve o teste e explica o bloqueio. Mas decidir qual violação é inegociável, e qual é só recomendação, continua sendo decisão de risco de quem responde pela segurança do ambiente.

Tags

  • #julianovincedecampos
  • #PolicyAsCode
  • #OPA
  • #Checkov
  • #CloudEPlataforma
  • #Compliance
  • #DevSecOps
Retrato de Juliano Vince de Campos

Quem escreve: Juliano Vince de Campos

Gerente de Operações, Tecnologia e Infraestrutura (SRE) numa central de registros. Trabalho com tecnologia desde 2009 e com cibersegurança em tempo integral desde 2015, em infraestrutura crítica, fintech e banking. Escrevo sobre o que eu opero: confiabilidade, segurança, governança e IA que passa por gate antes de chegar em produção.

Leia em seguida

Onde eu estudei, me certifiquei e trabalhei

  • University of Cambridge
  • PUC Minas
  • PUC-RS
  • PUC Goiás
  • Pontificia Universidad Católica del Perú
  • Amazon Web Services
  • Google
  • IBM
  • Oracle
  • COBIT 5 Foundation
  • ITIL v3 Foundation
  • Exemplar Global
  • Red Team Leaders
  • Infosec
  • Salesforce
  • Flowgrammers
  • ISO/IEC 27001
  • NIST Cybersecurity Framework
  • Compass UOL
  • Luby
  • Creditas
  • PicPay
  • PagoNxt, Santander
  • Mercado Pago
  • Itaú Unibanco
  • Foursys
  • Soluti Certificação Digital