Explorando a autorização de infraestrutura como código com Open Policy Agent

Itaú Tech
ItauTech
Published in
6 min readJun 18, 2024

Por Daniel De Padua Ferreira e Matheus Duarte Rabello, Team Members na Comunidade da Segurança da Informação

Banner com fundo azul, uma imagem de uma tela de computador com códigos do lado direito e o seguinte texto em branco abaixo do logo o Itaú: Infraestrutura como código. Explore mais sobre o conceito e sua importância para os princípios de segurança

No Itaú Unibanco a segurança e a privacidade são cruciais. Nesse sentido, buscamos garantir os princípios de Zero Trust em todo nosso ciclo de desenvolvimento de software. Logo, em engenharia de segurança, a principal missão é garantir a todo momento a proteção de informações, a estabilidade de nossos serviços e a confiança de nossos clientes.

Portanto, quando falamos de infraestrutura como código (IaC) é essencial termos guardrails que garantam a qualidade de nossos serviços, a segurança dos dados e a disponibilidade de nossos ambientes.

Neste artigo, iremos explorar quais os problemas associados à falta de um processo de autorização em pipelines de infraestrutura como código e como o Open Policy Agent pode ajudar a garantir a aplicação e a conformidade da nossa baseline de segurança.

O que é o Open Policy Agent (OPA)

Pensando em um ambiente corporativo dinâmico e da extensão e tamanho que é o banco, manter a conformidade e garantir a aplicação das nossas políticas e baseline de segurança, pode ser um tremendo desafio e parte dele está no processo de gerenciamento das mudanças e implantações através de execuções de pipelines de CI/CD tanto de infraestrutura quanto de aplicação.

Com o objetivo de mitigar riscos associados à essa dinâmica, podemos utilizar ferramentas de autorização para validar infraestrutura como código, como o Open Policy Agent (OPA), por exemplo.

O OPA é uma ferramenta, mais especificamente um motor de políticas open source, sendo leve e de propósito geral. Podemos utilizá-lo em diversos cenários, como autorização de APIs e microserviços, admission controller no kubernetes, autorização de tópicos e filas (ex: Kafka, RabbitMQ), além de autorização de infraestrutura como código.

Utilizando a linguagem Rego, uma linguagem própria para escrita de políticas do OPA, podemos definir políticas que serão aplicadas como guardrails, operando nossa baseline e políticas de privacidade, além de normas que precisamos atender a regulamentos de órgãos reguladores, para garantir a conformidade com nossas diretrizes de Segurança.

Benefícios e usos

Uma das principais razões pelas quais o OPA chama atenção é a sua flexibilidade e arquitetura agnóstica. Ele permite que você defina e trabalhe com políticas de autorização das mais complexas até as mais granulares, de acordo com as necessidades específicas que você possa ter. Além disso, a ferramenta é altamente escalável, o que significa que ela pode lidar com volumes massivos de decisões de autorização de forma descentralizada em sistemas distribuídos.

Essa flexibilidade e escalabilidade permite que o OPA atenda diversos tipos de arquiteturas. Podendo ser implantado como modelo standalone, significando que possuirá uma infraestrutura dedicada apenas ao seu serviço, como em um container sidecar compartilhando o mesmo cluster com suas aplicações. Ele também pode ser um daemon executando a nível de host ou até mesmo uma biblioteca integrada a sua aplicação.

Segurança Aprimorada

Um dos principais benefícios do OPA é a capacidade de garantir que todas as operações, configurações que estejam sendo realizadas via deploy pipeline CI/CD, estejam contemplando — como comentado anteriormente -, nossas diretrizes visando proteger dados sensíveis e evitando impactos operacionais que possam causar potenciais riscos e perdas no que cabe a imagem e ao negócio do banco. Aqui, não apenas conseguimos garantir a aplicação de políticas de segurança como também podemos auditar e impedir que erros de configurações possam ser aplicados que gerem a completa indisponibilidade de um serviço.

Automação e eficiência

A ideia de uma integração do OPA em nossas pipelines de CI/CD, é garantir a completa automação e aplicação das políticas, reduzindo a necessidade de revisões manuais e aumentando a eficiência no processo de desenvolvimento e implantação, sempre elevando o grau de maturidade de segurança do banco e a conformidade em todo o ambiente.

Conformidade contínua

Com uma conformidade contínua, passamos a ter uma arquitetura e uma ambiente operacional consistente com nossas diretrizes além de garantirmos uma não redução em nossos indicadores de segurança, como também uma diminuição em prováveis e possíveis incidentes que ocorreriam, principalmente por quê estamos aplicando tudo.

Para manter a conformidade e agir como um “guard rail”, temos integrado o OPA aos nossos workflows do Github. Em cada commit e merge realizado, o código será submetido a verificação aplicadas pelas políticas Rego do OPA, que serão baixadas de um bundle server (ex: bucket S3, NGINX) e poderão estar sempre atualizadas com novas diretrizes. Centralizar as políticas e manter em sua integração o download sempre das últimas versões, te garante que todo o parque receberá novas definições e restrições de segurança de forma a manter continuidade do serviço.

Estabelecendo uma Baseline

Criar uma baseline é essencial para entender o estado atual da infraestrutura e definir padrões mínimos de conformidade. A sua baseline, será insumo para criação das políticas. Elas poderiam conter restrições a quais portas estão sendo aplicadas nas regras de Inbound e Outbound de um Security Group, a garantia que os headers, que tenham sido definidos como padrões para propósito de observabilidade ou segurança no contrato do API Gateway estejam presentes ou até mesmo para garantir que as roles IAM que estão sendo criadas não estejam violando alguma action ou nível de permissionamento para um recurso.

Medindo eficiência

Para medir eficiência do OPA, podemos utilizar alguns indicadores como:

  1. Número de violações detectadas

Podemos monitorar quantas violações de políticas foram detectadas e corrigidas ao longo das Sprints e Releases. Também conseguimos colhermos os resultados para gerarmos indicadores de quais os top serviços ofensores nas violações.

2. Tempo de validação

Conseguimos avaliar o tempo de execução de cada política, pois cada política gera um log de decisão que conterá o tempo de execução, desta maneira garantindo que a eficiência esteja sempre sendo mantida para não causar atrasos ou impactos significativos durante o deploy das pipelines de CI/CD.

3. Impacto na segurança

Garantimos que todas as novas mudanças e implantações sempre seguirão nossos padrões de segurança, qualidade e conformidade aumentando também o nosso grau de governança e visibilidade sobre o ambiente.

Em resumo, o OPA pode ser um grande aliado na segurança de IaC. Ele simplifica a implementação, manutenção e auditoria das políticas de autorização, apoiando também diversas frentes de segurança, como monitoramento, resposta a incidentes e prevenção a fraude, tornando a governança da segurança uma parte integrante de sua arquitetura de aplicação. Com esta ferramenta, você está no controle!

No próximo artigo, iremos compartilhar um hands-on sobre compreender na prática a importância da segurança em infraestrutura como código. Bateu a curiosidade? Então fique atento as atualizações por aqui!

--

--