Skip to main content

Como usar o Open Policy Agent (OPA) para segurança e conformidade na nuvem

Escrito por
blog hero iac drift purple

9 de outubro de 2019

0 minutos de leitura

Assim como os desafios de gerenciar grandes operações de infraestrutura em nuvem levaram ao desenvolvimento da infraestrutura como código, garantir a segurança e a conformidade desses ambientes levou à criação das políticas como código. Os ambientes de infraestrutura em nuvem são simplesmente vastos, complexos e dinâmicos demais para serem protegidos com abordagens tradicionais, como auditorias manuais e listas de verificação.

Infelizmente, a maioria das linguagens de políticas como código é proprietária e de código fechado, oferecida por provedores de nuvem. Isso cria dependência do fornecedor, gera incompatibilidade com outros frameworks de políticas que a empresa talvez use e pode dificultar muito a aplicação dessas linguagens a casos de uso específicos.

O Open Policy Agent (OPA) é um mecanismo de políticas de código aberto e uso geral, e Rego é a linguagem declarativa de políticas do OPA. Com o Fugue, ele oferece máxima flexibilidade na implementação de políticas para a infraestrutura em nuvem. Em abril de 2019, a Cloud Native Computing Foundation (CNCF) aceitou o OPA como um projeto hospedado em nível de incubação.

Na Fugue, usamos OPA e Rego como framework de políticas como código na nossa solução SaaS de segurança e conformidade na nuvem — e os resultados são incríveis. Embora grande parte do foco do OPA tenha sido o desenvolvimento de políticas de acesso para Kubernetes, nós o usamos amplamente em uma variedade muito maior de casos de uso de infraestrutura em nuvem na Amazon Web Services (AWS) e no Microsoft Azure. Leia nosso anúncio aqui.

Ao adotar OPA e Rego, conseguimos oferecer aos nossos clientes recursos poderosos e flexíveis de políticas como código, inclusive a possibilidade de criar políticas personalizadas para a infraestrutura em nuvem com rapidez e facilidade.

Os recursos de regras personalizadas da Fugue, que usam OPA, permitem que os usuários:

  • Criem e gerenciem regras personalizadas de infraestrutura em nuvem, definidas pelos próprios usuários, em OPA Rego, usando a API, a CLI e a interface web da Fugue

  • Validem e testem regras personalizadas durante a criação, com mensagens de erro úteis que economizam tempo

  • Validem continuamente e gerem relatórios de conformidade para regras personalizadas e frameworks de políticas prontos para uso

Veja alguns exemplos de políticas personalizadas que usam OPA com Fugue:

  • Verificar se há buckets S3 públicos e sem criptografia

  • Definir quais regiões de nuvem são permitidas

  • Definir quais imagens de máquina (por exemplo, AMIs) são permitidas

  • Garantir que os logs de fluxo da VPC estejam configurados

  • Definir quais tamanhos de instância (por exemplo, EC2) são permitidos

  • Verificar se as políticas do IAM seguem o princípio do menor privilégio

  • Definir quais regras de entrada são permitidas para grupos de segurança

Por exemplo, se um grupo de segurança não deve permitir que a porta 9200 fique aberta para qualquer pessoa, a regra pode ser expressa assim:

deny {
  input.ingress[i].from_port <= 9200
  input.ingress[i].to_port >= 9200
  input.ingress[ij.cidr_blocks[_]=="0.0.0.0/0"
}

A maioria das organizações também precisa seguir um ou mais frameworks de conformidade. Por isso, a Fugue oferece suporte pronto para uso com OPA para os CIS Foundations Benchmarks (AWS e Azure), GDPR, HIPAA, ISO 27001, NIST 800-53, PCI e SOC 2.

A Fugue executa milhões de avaliações de regras de segurança todos os dias com OPA. Por isso, investimos bastante em ferramentas para desenvolvedores e vamos contribuir com todo esse trabalho para a comunidade de código aberto. Estamos empolgados com o OPA e com a oportunidade de participar ainda mais desse importante projeto de código aberto.

Segurança de IaC pensada para quem desenvolve

A Snyk protege sua infraestrutura como código do ciclo de vida do desenvolvimento de software até a execução na nuvem, com um mecanismo unificado de políticas como código para que todas as equipes possam desenvolver, implantar e operar com segurança.