Tornando o pipeline de IaC mais seguro

Infrastructure-as-Code, (ou IaC) é a nova norma na criação e construção de qualquer novo ambiente de nuvem por meio de arquivos legíveis por máquina ou templates de código. É importante, no entanto, considerar as preocupações de segurança com relação à infraestrutura que você está criando para garantir que ela esteja seguindo as melhores práticas e o compliance da sua organização.

Por que IaC é o novo normal?

O hardware físico pode exigir que você adicione o rack e faça a configuração correta antes de começar a usá-lo, o que às vezes pode levar semanas ou meses só para fazer o setup de um servidor. Agora, com a IaC, você pode criar uma infraestrutura completa para sua aplicação em nuvem em menos de uma hora. Os exemplos abaixo ilustram os processos antigos de criação de servidores versus este novo:

Foto: Rich Miller

Foto: Fernando Cardoso


Antes da Infrastructure-as-Code, as equipes de TI precisariam adicionar o servidor ao datacenter manualmente, instalar o SO e fazer as configurações adequadas antes que pudessem usá-lo. Em alguns casos, eles usariam alguns scripts automatizados para auxiliar em algumas tarefas, mas isso não seria totalmente automatizado. Há cinco anos, me lembro de trabalhar em alguns projetos com bancos, onde eles precisavam esperar de um a dois meses para ter a infraestrutura e conseguir iniciar alguns projetos. Hoje, eles podem criá-lo em algumas horas ou até minutos, seguindo todo o compliance necessário.

Com a IaC, sua infraestrutura assume a forma de templates de código. Como o código é um arquivo de texto, é fácil editá-lo, copiá-lo e compartilhá-lo com sua equipe. É recomendável que você o coloque sob controle de origem, como fazemos com qualquer arquivo de código-fonte usando repositórios de código como GitHub, GitLab ou Bitbucket. Aqui estão os três principais benefícios do uso de IaC:

 

Três principais benefícios do uso de IaC

  • Velocidade -> Permite que você configure rapidamente uma nova infraestrutura usando apenas códigos ou scripts.
  • Controle –> Como você pode visualizar os arquivos de modelo IaC como qualquer outro arquivo de código-fonte, você tem total rastreabilidade, através do repositório de códigos, das alterações sofridas por cada template.
  • Consistência -> Qualquer humano está suscetível a cometer erros. A IaC evita erros usando arquivos de configuração, tendo uma única fonte de verdade e garantindo as mesmas configurações para todo o ambiente.

 

Como Você Pode Criar uma IaC?

Atualmente, há um número significativo de ferramentas de código para criar Infrastructure-as-Code. Aqui estão os mais populares:

“As equipes que implementam IaC podem oferecer ambientes estáveis de forma rápida e em escala. Esses times evitam a configuração manual de ambientes e reforçam a consistência, representando o estado desejado de seus ambientes via código. Os deploys de infraestrutura com IaC são repetíveis e evitam problemas de tempo de execução causados por desvio de configuração ou falta de dependências”, como escreveu Sam Guckenheimer que trabalha no time de DevOps da Microsoft Azure.

Por que é importante integrar a segurança ao pipeline de IaC?

Como afirma o Gartner: “Até 2022, pelo menos 95% da segurança da nuvem será culpa do cliente”.

Devido a configurações incorretas na infraestrutura de nuvem, é essencial implementar uma maneira de garantir visibilidade e feedback em tempo real para os desenvolvedores de IaC antes de construírem ambientes em nuvem contendo falhas de segurança ou compliance que possam gerar dores de cabeça para sua empresa. É importante se certificar de que você esteja criando uma infraestrutura em nuvem, seguindo arquiteturas de práticas recomendadas, tais como:

A maioria dos problemas de Infrastructure-as-Code pode ser gerada por:

  • Erro humano
  • Falta de tempo suficiente para revisar a IaC porque as empresas estão se esforçando para criar aplicações e soluções mais rápido do que nunca
  • Configuração incorreta por falta de conhecimento de serviços em nuvem
  • Desafios de ambientes multicloud pela falta de padrões em diferentes ambientes

O conceito de ferramenta de segurança Cloud Security Posture Management (CSPM) ajuda a organização a detectar, remediar e trazer visibilidade rapidamente em vários ambientes de nuvem que sua organização possa ter.

Exemplo de um CloudFormation Template do EC2 incorreto:

Exemplo de um Template de Cloud Formation incorreto para criar um EC2

 

Este exemplo apresenta alguns problemas, tais como:

  • O grupo de segurança nulo abre um intervalo de portas.
  • O ID da instância Ec2Instance não está usando Instance Profiles/IAM Roles.
  • A instância Ec2Instance não está usando a última geração de instâncias: m1.small
  • O grupo de segurança nulo permite acesso irrestrito a portas incomuns.
  • O monitoramento detalhado não está ativado para a instância EC2 Ec2Instance

Você pode facilmente detectar esses problemas usando plug-ins de segurança no IDE (VSCode da Microsoft) para verificar o template de IaC antes de criar os ambientes em nuvem. Nesse caso, como estou usando o CloudFormation template, se você seguir o AWS Well-Architected Framework, provavelmente obterá o exemplo abaixo para construir um EC2 seguindo as boas práticas.

Exemplo de Well-Architected EC2 Cloud Formation Template:

Well Architected EC2 Cloud Formation Template — Exemplo

Isso poderia ajudar muito a equipe do DevOps e do Cloud Architect a criar uma IaC muito segura e bem configurado com um plug-in de segurança bastante simples.

Três maneiras de adicionar segurança e compliance ao pipeline de IaC

 

Pipeline de Infraestrutura como Código

Os scanners de templates usam diretamente APIs com o CSPM para integrar ferramentas personalizadas ou casos de uso específicos nos pipelines de CI / CD. Eles podem fornecer verificações em tempo real toda vez que você envia um novo código, e os resultados podem ser compartilhados com desenvolvedores e Cloud Architects que podem verificar possíveis problemas antes da produção. Se as varreduras encontrarem um problema “Extremo” ou “Alto risco”, ele poderá ser configurado para interromper o processo de deploy e notificar a equipe de desenvolvimento através dos canais do Slack, por exemplo.

Exemplo de Pipeline de IaC com algumas camadas de segurança que se integram a ferramentas de DevOps

  1. IDE (Ambiente de Desenvolvimento Integrado) – Plug-in de Segurança

O plug-in de segurança IDE foi elaborado para obter rapidamente feedback em tempo real para criadores no desenvolvimento de Infrastructure-as-code e aplicações. Dessa forma, um desenvolvedor pode verificar e corrigir problemas no espaço de trabalho atual do IDE sem precisar de ferramentas de segurança adicionais para detectar problemas.

Isso seria migrar à esquerda o máximo possível, trazendo segurança ao pipeline, portanto, diminuindo o atrito e aumentando a adoção de desenvolvedores para uma melhor validação de segurança contra problemas de segurança e compliance.

  1. Template Scanner

Os scanners de templates usam diretamente APIs com o CSPM para integrar ferramentas personalizadas ou casos de uso específicos nos pipelines de CI / CD. Eles podem fornecer verificações em tempo real toda vez que você envia um novo código, e os resultados podem ser compartilhados com desenvolvedores e Cloud Architects que podem verificar possíveis problemas antes da produção. Se as varreduras encontrarem um problema “Extremo” ou “Alto risco”, ele poderá ser configurado para interromper o processo de deploy e notificar a equipe de desenvolvimento através dos canais do Slack, por exemplo.

  1. CSPM – Gestão de Postura de Segurança na Nuvem

O CSPM é uma ferramenta de segurança que detecta configurações incorretas em vários provedores de serviços em nuvem. Essa tecnologia pode auxiliá-lo com o grande desafio de adicionar “Sec” ao pipeline do DevOps em algumas companhias.

Essas soluções também têm recursos para ajudar na correção automática da infraestrutura cloud. Ele pode auxiliar as organizações com uma imagem coerente dos riscos de segurança e conformidade em ambientes multicloud. O CSPM é uma classe de ferramentas de segurança que inclui os seguintes casos de uso:

  • Monitoramento de compliance
  • Cloud Misconfiguration Visibility
  • DevOps Integration — (Shifting Left Security)
  • Resposta a Incidentes
  • Avaliação de Risco
  • Visualização de Risco

Aqui estão alguns exemplos de visibilidade que as tecnologias CSPM podem trazer para sua equipe e ajudar facilmente com um amplo nível de risco em vários ambientes de nuvem:

dashboard_api_cspmdashboard_iac_dashboard

Exemplos de visibilidade do painel usando a tecnologia Grafana e ElasticSearch com CSPM por meio de APIs

 

Conclusão

A Infrastructure-as-Code possui inúmeros benefícios em nossa vida diária, como criar um ambiente totalmente novo ou encerrar alguns ambientes em nuvem e nos datacenters com tecnologias como NSX e Kubernetes. No entanto, é importante considerar se sua nova infraestrutura é segura e compatível, especialmente porque a detecção de problemas de segurança ou configurações incorretas nos estágios iniciais da construção podem economizar muito dinheiro e reduzir bastante o risco à segurança geral.

Ao escolher soluções de segurança para IaC, certifique-se se essa é a tecnologia certa para você e se se encaixa adequadamente no seu pipeline atual para evitar perda de automação e agilidade no seu trabalho diário.

Originalmente publicado no Medium de Fernando Cardoso