DevSecOps

30 set, 2015

SecOps – Segurança em DevOps

Publicidade

A abordagem do DevOps envolve o conjunto de práticas que tem como foco o desenvolvimento de software que enfatiza a comunicação, a colaboração e a integração entre as equipes de desenvolvimento e as operações de uma empresa. O principal objetivo na implementação do DevOps é reduzir o tempo no lançamento de novas versões e funcionalidades, além de agilizar o desenvolvimento e aumentar a estabilidade de aplicações.

Essa entrega contínua já é amplamente utilizada por grandes empresas da Internet como Amazon, Netflix, Google e Flickr, além de algumas brasileiras como Sieve e Pagar.me. Claro que nem todos os deploys são novas funcionalidades ou atualizações de segurança – muitas vezes esses deploys resolvem algum problema de configuração, implementam alguma sugestão do cliente etc.

Em um primeiro momento, do ponto de vista de segurança, isso dificulta o trabalho de fazer a auditoria do código e outras rotinas de segurança antes de ser colocado em produção. Mas como podemos integrar a segurança nesse processo? Como é possível automatizar as verificações para garantir o mínimo de segurança?

A implementação do DevOps é uma grande oportunidade para a equipe de segurança instituir as melhores práticas na infraestrutura e no desenvolvimento seguro desde o início do projeto e não apenas no final, como é feito hoje por muitas empresas. Quando pensamos dessa forma, e nos preocupamos em automatizar e integrar segurança no processo, estamos falando de SecOps, que também conhecido como SecDevOps.

O primeiro passo para conseguir realizar essa integração da segurança no ciclo de desenvolvimento e no apoio das equipes operacionais é incluir a área de segurança desde o início do projeto, ou seja, no planejamento.

Como começar

  • Planeje a segurança: pesquise a tecnologia e as soluções que serão utilizadas tanto no desenvolvimento como na implementação e levante os aspectos de segurança de cada item.
    Em tecnologia, fique atento às melhores práticas de segurança para implementação dos servidores e serviços que serão utilizados. Já na parte de desenvolvimento, faça o mapa das áreas mais críticas do código – um código back-end que não possui interação com o usuário não possui a mesma criticidade de uma área onde é possível trocar a senha.
    Além disso, pesquise as melhores práticas no desenvolvimento seguro dessa linguagem e verifique se existe algum framework de segurança.
  • Traga os desenvolvedores para próximo de segurança: isso vai muito além de apontar as falhas que devem ser corrigidas ou dar uma passada no departamento; é oferecer treinamentos constantes sobre os problemas de segurança que acontecem em todos os lugares.
    Uma ótima referência para isso é o projeto OWASP, que enumera as principais vulnerabilidades em aplicações web. Além disso, compartilhar exemplos, ferramentas e casos reais ajuda a visualizar e a entender o problema.
  • Disponibilize ferramentas: a utilização de frameworks e ferramentas de segurança para análise de códigos auxilia os desenvolvedores a prevenir diversos problemas de segurança já no código-fonte, e pode fazer parte dos testes automatizados do clico de DevOps.
    Alguns exemplos de frameworks são OWASP Python Security, HTML Purifier, Spring Security, Apache Shiro. Entre as ferramentas que analisam o código podemos citar Visual Code Grepper (C/C++, C#, VB, PHP, Java e PL/SQL), Brakeman (Rails), FindBugs (Java), Flawfinder (C/C++).
  • Faça verificações constantes: mesmo adotando as práticas anteriores, as vulnerabilidades irão aparecer, mas pode ser em quantidades bem menores. A cada seis meses, é indicado realizar um teste de invasão que irá verificar manualmente as vulnerabilidades existentes em sua aplicação e infraestrutura. A utilização de uma empresa que faça um code review mais abrangente também é recomendada nesta fase.

Se a sua aplicação utiliza a estrutura da Amazon, você precisa conhecer o conjunto de ferramentas chamado Simian Army, que foi disponibilizado pela Netflix. Dentro desse pacote, o Chaos Monkey derruba um servidor de produção para simular uma falha real, o Conformity Monkey procura por instâncias que não estão utilizando as melhores práticas e o Security Monkey monitora e analisa vulnerabilidades e falhas de configuração. Aconselho você visitar o blog da Netflix para conhecer todas as ferramentas e suas funcionalidades.

Conclusão

Colocar segurança junto com DevOps irá reduzir drasticamente o risco de vulnerabilidades, e a segurança se tornará parte integrante desse processo contínuo. Mas para que isso aconteça com sucesso, a área de segurança deve ser colaborativa e todo processo deve ser iniciado aos poucos e, preferencialmente, com os pontos mais críticos e depois ir se estendendo para todo o restante.