Cloud One Conformity Template Scanner 🔎

O jeito mais facil de analisar seus templates Cloud Formation direto em seu pipeline CI/CD por Felipe Costa e Raphael Bottino

Photo by Markus Winkler on Unsplash

 

Infrastructure as Code (IaC) tem sido a tecnologia mais usada para criar infraestrutura em nuvem, especialmente por ferramentas de automação CI/CD, como Jenkins, GitHub Actions e tantos outros. O IaC nos permite tornar aplicações mais dinâmicas, dando a capacidade de implantar e atualizar essas aplicações ou stacks várias vezes ao dia.

Se voce quiser entender mais profundamente este conceito, deixo aqui um excelente artigo do meu amigo Fernando Cardoso: https://medium.com/swlh/putting-security-into-the-iac-pipeline-4de98f88ad24.

Não há dúvida de que essas ferramentas oferecem grande flexibilidade e recursos para capacitar os desenvolvedores a fazer mais com menos… Entretanto, como podemos medir a segurança nessas configurações e que tipo de “Baselines” devemos seguir?

 

R: Essas são as questoes que o Trend Micro Cloud One Conformity está ajudando a resolver.

 

O Trend Micro Cloud One Conformity é uma ótima ferramenta para ajudá-lo a evitar erros de configuração em seu ambiente de nuvem. A plataforma analisa seu ambiente de nuvem procurando por erros de configuração e/ou riscos de segurança, notificando quando alguém (Humano) ou algo (ferramentas de CI / CD) introduz uma nova configuração fora das melhores práticas em diferentes fases do seu ciclo de desenvolvimento no seu ambiente de nuvem publica. Essas configurações incorretas podem ser detectadas na fase de construção, quando a equipe está alterando e testando o código, analisando seus modelos IaC diretamente no IDE (VS Code) ou mesmo durante a “build” por sua ferramenta de CI / CD. Depois de implantar a aplicacao em producao, a plataforma monitora sua nuvem publica para qualquer intervenção manual ou nova configuração incorreta introduzida diretamente no ambiente de nuvem. Veja a ilustração abaixo, que descreve onde a plataforma se encaixa no ciclo DevOps:

 

Cloud One Conformity no Ciclo de Desenvolvimento

 

Com a missão de tornar mais fácil a tarefa de analisar os templates de IaC, decidimos criar este projeto open-source, no GitHub, para que cada cliente possa ter acesso ao código fonte e usá-lo por conta própria. Junto com o código também criamos um GitHub Action: uma ferramenta de automação de CI / CD para tornar essa varredura reproduzível, usando um módulo NPM para implementar todas as funcionalidades que ele precisa.

Você pode obter esse “Action” direto no GitHub Marketplace GRATUITAMENTE e usar em qualquer repositório GitHub:

https://github.com/marketplace/actions/cloud-one-conformity-pipeline-scanner

Raphael Bottino criou originalmente o módulo NPM que traduz a API do Cloud One Conformity para tornar seu uso em pipeline e no IDE mais fácil, para verificar seus templates de IaC. Você pode ter acesso ao módulo NPM aqui e usar em seus próprios projetos também :

https://www.npmjs.com/package/cloud-conformity

Não vamos cobrir a integração com o IDE neste artigo, mas recomendamos que você leia este outro artigo abaixo:

https://medium.com/@raphabot/shift-well-architecture-left-by-extension-security-will-follow-9012168b56e8 

A melhor maneira de demonstrar o quão incrível é essa tecnologia, é praticando. Então vamos experimentar este Action! Eu criei um repositório no GitHub para mostrar como funciona, você pode ter acesso ao repositório neste link abaixo:

https://github.com/felipecosta09/Demo-Cloud-One

Eu adicionei um template Cloud Formation neste repositório, que simula um cenário real de um cliente criando uma infraestrutura dinamica na AWS, este é o caminho do template. Também criamos o arquivo de pipeline que o GitHub Actions precisa para automatizacao: toda vez que houver um novo commit, seu template IaC será analisado.

O Pipeline possui apenas 2 ações, a primeira fará checkout do código do repositório, e a segunda fará a analise do template. Abaixo está o arquivo do pipeline, comentei o código também para facilitar a sua leitura.

https://gist.github.com/felipecosta09/797d49e0f5515ef87ece85281a93631f 

 

Existem alguns parâmetros que precisam ser passados para que o Action funcione, são eles:

 

  • Cloud One Conformity API Key – Autenticação necessária para acessar a API, você pode ver como gerar a chave de API aqui;

 

  • Triggers – Quantidade de configurações incorretas que sao “aceitáveis” com base na gravidade de cada uma (maxExtreme, maxVeryHigh, maxHigh, maxMedium e maxLow);

 

 

 

Com base nos “triggers”, seu pipeline vai ter sucesso ou falha, e fim: você terá uma ferramenta totalmente automatizada que pode analisar modelos IaC e ajudá-lo a melhorar a segurança em seu ciclo de desenvolvimento.

Resultado do Action direto no Pipeline CI/CD

 

É incrível como o uso de uma ferramenta simples pode fazer grande diferença em como abordamos a segurança, ajudando os desenvolvedores a analisar seu código diretamente nas ferramentas do dia-a-dia. Mas ainda tem algo faltando, porque se você não usar o GitHub Actions e decidir usar uma ferramenta de CI / CD diferente, como Gitlab ou mesmo Jenkins?

Neste caso voce não conseguirá executar as etapas que acabei de mostrar. Estamos sempre procurando fornecer o máximo de opções possível para que nossos clientes implementem controles de segurança. Por isso decidimos portar este projeto para ser executado dentro de um container tambem, o que o torna muito mais portátil e mantém a execução da analise leve. Publicamos esse container no Dockerhub para que todos possam acessar.

Este é o comando que você pode usar para analisar seus templates IaC usando um comando docker:

 

docker run -v /home/ec2-user/dynamotest.template:/app/dynamotest.template -e cc_apikey=$MYAPIKEY -e cc_region=$MYREGION -e maxExtreme=0 -e maxVeryHigh=0 -e maxHigh=0 -e maxMedium=0 -e maxLow=0 -e templatePath=infrastructure.yaml felipecosta09/conformity-template-scanner-pipeline:latest

 

Obs .: Para poder analisar um template local de uma máquina ou dentro de um pipeline, o parâmetro “-v” é necessário no comando docker run. O exemplo especifica um arquivo local sendo copiado para o contêiner que irá analisar o seu Cloud Formation template 

 

/home/ec2user/dynamotest.template:/app/infrastructure.yaml, onde:

 

  • /home/ec2-user/infrastructure.yaml – Representa o caminho absoluto do arquivo de Cloud Formation local a ser verificado;

 

  • /app/infrastructure.yaml – O caminho onde o arquivo será copiado (Nao precisa alterar);

 

Você também pode invocar o arquivo Javascript para analisar seus templates, basta clonar o repositorio original no GitHub, substituir as variáveis e, claro, você precisa do nodejs instalado:

 

cc_apikey=$MYAPIKEY cc_region=$MYREGION maxExtreme=0 maxVeryHigh=0 maxHigh=0 maxMedium=0 maxLow=0 templatePath=infrastructure.yaml node scan.js

 

Esperamos que essas ferramentas ajudem você na sua jornada para a nuvem, na modernização de aplicacoes e para alcançar a excelência operacional que deseja. Todo o trabalho que começamos há alguns meses com este projeto foi porque recebemos muitos feedbacks de clientes e também da comunidade open-source,. Então, se há algo que podemos fazer para te ajudar, por favor, dê seu feedback para que possamos melhorar ainda mais. Nossa missão é ajudar com os desafios de segurança para que você possa ter sucesso.

 

Referencias:

 

https://www.npmjs.com/package/cloud-conformity

https://github.com/raphabot/cloud-conformity-cloudformation-scanner

https://hub.docker.com/r/raphabot/conformity-template-scanner-pipeline

https://github.com/raphabot/conformity-template-scanner-pipeline

https://github.com/cloudconformity/documentation-api

https://www.cloudconformity.com/

https://github.com/felipecosta09/Demo-Cloud-One

https://medium.com/swlh/putting-security-into-the-iac-pipeline-4de98f88ad24

https://medium.com/@raphabot/shift-well-architecture-left-by-extension-security-will-follow-9012168b56e8

 

Descubra mais sobre o Template Scanner, seu melhor parceiro na hora de implantar IaC em seu pipeline de CI/CD.