InfraestruturaSegurança de Aplicação

Como migrar de DevOps para DevSecOps

A sua empresa produz ou consome software? Pois então saiba que a Segurança para DevOps (DevSecOps) deve, sim, entrar na sua rotina. Entenda como migrar de DevOps para DevSecOps e tornar suas aplicações mais seguras.

Afinal, se a sua empresa não emprega algum modelo ágil ou mesmo práticas de DevOps, com certeza algum de seus fornecedores usa este método no desenvolvimento. 

Isso já é um bom motivo para você saber mais sobre cada um deles, e também sobre como uma equipe de desenvolvimento pode melhorar suas práticas a partir da adoção de metodologias de desenvolvimento ágil.

Você também pode ouvir a versão em áudio deste texto:

DevSecOps e o Desenvolvimento Ágil

Para que possamos entender esta mudança, primeiro temos que fazer uma rápida explicação sobre os dois modelos: DevOps e DevSecOps. Vamos tentar fazer isso da forma mais simples possível.

Modelos DevOps surgiram com o objetivo de proporcionar maior agilidade para as equipes de desenvolvimento, que passaram a assumir atividades operacionais em todo o processo.

Isso possibilitou a integração entre duas etapas, que antes levavam um tempo muito maior, o que muitas vezes acarretava em atrasos nas entregas.

Com a adoção das práticas de DevOps, as equipes de desenvolvimento passaram a entregar produtos de modo cada vez mais rápido. Esse pode ter sido um dos fatores que levaram a exigências cada vez maiores na velocidade de entrega dos produtos, criando um círculo de solicitações.

Desenvolvimento ágil e os riscos para segurança de aplicações

Dentro deste processo, muito se fez em melhorias de desempenho das equipes de desenvolvimento.

No entanto, quando se imprime velocidade a um processo sem que este esteja preparado para isso, alguma coisa se perde.

Neste caso, o que se perdeu foi o foco em segurança das aplicações.

Como não poderia deixar de ser, o foco dos processos de DevOps é a entrega dos produtos dentro do prazo exigido pelo mercado, o que é ótimo do ponto de vista de produtividade. 

No entanto, essa agilidade na entrega passa a ser um problema se isso se tornar mais importante do que preservar o grau de segurança de um produto.

Sabemos que existem alguns testes sendo realizados neste processo, mas muitas vezes eles geram mais trabalho e consomem muito mais recursos do projeto.

Como surgiu DevSecOps

O termo DevOpsSec foi primeiramente analisado pelo Gartner no ano de 2012.  Na época, o termo era escrito desta forma mesmo, com “Sec” depois de “DevOps”, pois o pensamento inicial era apenas acrescentar segurança a um processo já existente.

Naquele momento, o que o estudo feito pelo Gartner acabou constatando foi a necessidade de uma mudança de postura por parte das equipes de desenvolvimento, para que se conseguisse introduzir cada vez mais as melhores práticas de segurança em um modelo de desenvolvimento já bem estabelecido.

Os pesquisadores acabaram definindo o DevOpsSec como um processo que ia muito além de uma nova forma de produzir software: tratava-se de uma mudança cultural dentro das equipes de desenvolvimento.

Esta mudança cultural visava primariamente apresentar o conceito de segurança em todo o processo de desenvolvimento, reduzindo a fricção dos testes dentro do projeto.

Desta forma, seria possível melhorar as práticas de DevSecOps e tornar aplicações mais seguras.

É notável que em projetos cujo foco principal não é a segurança, os testes geralmente são realizados nas últimas etapas. Este foi um dos pontos de melhoria apontados pelo Gartner.

A correção deste ponto levou à criação de um processo de desenvolvimento em que segurança era vista como um componente chave de todo o processo de criação de código. Neste contexto, quanto maior for a automação no processo, mais efetivo ele pode ser.

Como migrar de DevOps para DevSecOps

Agora que temos uma noção do que vem a ser cada uma das duas metodologias, podemos passar a pensar um pouco mais na evolução destes modelos.

Resumindo DevSecOps em poucas palavras, seria basicamente uma mudança de cultura dentro das equipes de desenvolvimento, que passam a olhar segurança em todos os aspectos de desenvolvimento.

Desta forma, esta equipe passaria a identificar as vulnerabilidades ou mesmo a possibilidade de uma vulnerabilidade nos estágios iniciais do desenvolvimento.

Se considerarmos este pensamento como o ponto inicial de uma mudança, temos que pensar em construir um processo de DevSecOps automatizado e com um pensamento muito rígido em segurança por parte do desenvolvedor.

O grande desafio é introduzir, no processo de desenvolvimento, uma mudança radical de pensamento. É necessário passar a todos os envolvidos a mensagem clara de que segurança é um dos componentes mais importantes no desenvolvimento de aplicações, e este deve ser elaborado de forma a possibilitar as verificações necessárias.

Neste ponto, você deve estar se perguntando: “Tudo bem, mas como faço para implementar DevSecOps no meu processo?”

Entendemos que para fazer esta pergunta a empresa já conta com uma estrutura de DevOps com um grau de maturidade considerável, e suas equipes já entendem que a mudança precisa vir de dentro para fora do processo.

Sendo assim, vamos falar um pouco sobre o que podemos fazer para melhorar as práticas de DevSecOps e tornar aplicações mais seguras no próximo tópico.

Adaptando-se ao modelo Shift Left para migrar de DevOps para DevSecOps

Como nosso objetivo é contar com a segurança desde as fases iniciais do processo de desenvolvimento, é natural que um dos primeiros passos seja avaliar o seu processo. É preciso fazer um exercício no sentido de mover o foco de segurança para a esquerda do pipeline de desenvolvimento.

Mas o que isto quer dizer exatamente? Olhar para o início do desenvolvimento com foco em segurança significa que estamos buscando nos antecipar a possíveis problemas que possam surgir no software.

Desta forma, ao iniciar a jornada do desenvolvimento, um dos primeiros pontos que devemos observar é que a responsabilidade pela segurança de um software não deve ser lançada apenas nas equipes de desenvolvimento.

Esta responsabilidade deve ser compartilhada com todos os participantes do processo para melhorar as práticas de DevSecOps e tornar aplicações mais seguras.

Adotando a automação continuada para migrar de DevOps para DevSecOps

Quando falamos em automação continuada, é importante compreender que ela consiste na utilização de ferramentas e técnicas que possam garantir a integração contínua de código.

Este processo, juntamente com a entrega contínua, permite que as equipes de desenvolvimento possam focar em  outras atividades importantes.

Neste artigo sobre a estruturação de práticas e ferramentas para DevOps e DevSecOps, o Gartner nos ajudar a compreender melhor como a automação e a verificação constante de código são fundamentais para um bom planejamento da abordagem de segurança.

A automação, quando colocada no processo de desenvolvimento desde seu início, é uma forte aliada para reduzir – ou mesmo eliminar – o constante conflito entre as equipes de segurança e de desenvolvimento.

Neste outro artigo do blog falamos um pouco sobre isso e como a figura de um Security Champion pode ajudar, mesmo dentro de um processo automatizado.

Os processos automatizados podem ajudar à medida em que permitem que as equipes de desenvolvimento trabalhem em um código que apresentou problemas num curto espaço de tempo, e não mais em 3 ou mais sprints à frente.

Isso é importante pois evita desgastes desnecessário nos times.

Este pensamento pode levar o código a ter mais eficiência e controle por parte de todos os envolvidos no processo de desenvolvimento e segurança de uma aplicação.

Introduzindo Governança no processo de Desenvolvimento para migrar de DevOps para DevSecOps

As equipes de governança e de desenvolvimento geralmente estão em desacordo sobre como o processo irá garantir a segurança do código.

Ferramentas de orquestração podem ser introduzidas para ajudar a resolver esse conflito.

Além disso, a introdução de critérios pode ajudar governança e DevOps a atuarem em conjunto, garantindo que ao ser entregue o código passou por um processo estruturado, reduzindo a possibilidade de falhas.

Como sabemos, realizar testes de segurança no código completo é muito mais complicado e caro do que resolvê-los ainda no início do processo de desenvolvimento. 

Pensando nisso, a governança passa a ser um fator importante nos processos. Deste modo, torna-se possível rastrear os eventos que merecem atenção durante todo o processo de desenvolvimento, de modo que as equipes de segurança possam auditar, monitorar e orientar o progresso ao longo do ciclo de vida.

Utilizando Microsserviços e Containers para migrar de DevOps para DevSecOps

Observamos aplicativos serem cada vez mais construídos por microsserviços e containers, logo, não poderíamos deixar de falar sobre eles.

Precisamos perceber que, mesmo reconhecendo que existam grandes vantagens na utilização de microsserviços e containers, estes também nos trazem novos desafios

Não podemos ignorar que, com a proliferação destes pontos em uma estrutura, e com a facilidade com que eles podem ser criados, eleva-se exponencialmente também a superfície de ataque e, portanto, os riscos.

Tendo isso em mente, é natural que uma das recomendações seja a garantir que estes novos serviços e containers sejam levados ao processo de validação, tanto quando os códigos. 

Neste outro artigo, falamos um pouco sobre containers e algumas recomendações sobre como mantê-los seguros.

Por fim, quando pensamos em segurança de microsserviços e containers, é importante ressaltar que um processo organizado e definido de hardening deve ser implementado.

Este processo de validação de segurança deve sempre ser acompanhado de um monitoramento constante, para que isso possa garantir que qualquer anomalia seja identificada.

A Modelagem de Ameaças na criação do Software

Fugindo um pouco dos modelos abordados acima, o processo de realização de modelagem de ameaças é basicamente todo manual.

Trata-se de um processo mais demorado, voltado para estruturas complexas e pensado de forma a atender modelos de desenvolvimento mais ágil. Apesar de mais trabalhoso, certamente vale todo o tempo e esforço empregado no processo.

Se considerarmos o design moderno de aplicativos, o desafio se torna ainda maior. Podemos hoje estar lidando com centenas de APIs, bem como sistemas virtualizados distribuídos no local e na nuvem.

Observando este cenário, percebemos que essa complexidade pode tornar a visão da estrutura da aplicação bastante confusa.

No entanto, esse é justamente o ponto forte da modelagem de ameaças. Ao desenhar a arquitetura e o sistema da aplicação, torna-se possível identificar de forma bem mais clara e prematura as possíveis ameaças que o software pode sofrer. 

Desta forma, fica mais fácil trabalhar em soluções que irão fortalecer a segurança da aplicação.

Portanto, é inegável que a visualização da estrutura obtida por meio da modelagem de ameaças é um benefício desta prática, mas também entendemos que existe um alto grau de complexidade para implementar um processo de modelagem a cada aplicação criada.

No entanto, o uso deste tipo de metodologia é importante para garantir a segurança em todo o pipeline do desenvolvimento e, consequentemente, o desenvolvimento seguro das aplicações de maneira contínua.

DevSecOps em constante evolução

É evidente que não podemos sintetizar todo o conteúdo relevante acerca do tema DevSecOps em um único artigo. 

No entanto, procuramos aqui dar foco aos pontos que entendemos como fundamentais para melhorar e evoluir de uma metodologia de DevOps para DevSecOps.

Mas é importante ressaltar que, como os demais tópicos acerca dentro do tema AppSec, a lista aqui apresentada não pode ser entendida como definitiva ou mesmo única dentro de um universo em constante evolução, que adere às mudanças de forma cada vez mais rápida.

Portanto, se fazem necessárias a avaliação e a busca constantes pela melhoria dos processos, buscando com isso garantir que o resultado do desenvolvimento de aplicações seja cada vez mais seguro e eficiente.

Esperamos que, com esta leitura, você se sinta capaz de pavimentar um caminho cada vez mais sólido no sentido de manter as suas aplicações seguras dentro do modelo e desenvolvimento ágil.

Desta forma, seu time de Desenvolvimento estará alinhado com as melhores práticas do mercado, garantindo que a metodologia de DevSecOps possa tornar suas aplicações cada vez mais seguras.

About author

Articles

Mais de 15 anos de experiência em segurança da informação e aplicações, graduado em processamento de dados, trabalhei como professor universitário e participei ativamente como instrutor de treinamento para mais de 6000 desenvolvedores em equipes de TI. Sou pai de duas meninas e trader nas horas vagas.
Related posts
Segurança de Aplicação

Implementando uma CI/CD Pipeline: Garantindo a Qualidade e a Segurança do Software

A princípio, no atual cenário de desenvolvimento de software, a velocidade e a qualidade na…
Read more
Segurança de Aplicação

Gerenciamento de Riscos de Segurança: Melhores Práticas e Processos

A princípio, o gerenciamento de riscos de segurança é um processo estratégico que envolve…
Read more
Code FightersSegurança de Aplicação

Como integrar o Semgrep no CI/CD e enviar os resultados para a Conviso Platform

Atualmente, é uma prática muito comum integrar verificações de segurança durante a fase de…
Read more

Deixe um comentário