DevSecOps: a segurança integrada ao mundo DevOps

Vanessa Quadros
b2w engineering
Published in
9 min readFeb 24, 2021

O DevOps é a combinação de filosofias, culturas, práticas e ferramentas que aumentam a capacidade de uma empresa de distribuir aplicativos e serviços em alta velocidade: otimizando e aperfeiçoando produtos em um ritmo mais rápido do que o das empresas que usam processos tradicionais de desenvolvimento de software e gerenciamento de infraestrutura. [1]

Mais do que um conceito, deve-se destacar que inclui a aproximação entre pessoas com ações práticas de automação para acelerar as implantações com qualidade, onde os pontos de vista dos envolvidos devem ser considerados. [2] Portanto é uma mentalidade que requer evolução cultural. São pessoas, processos e as ferramentas certas para tornar o ciclo de vida da aplicação mais veloz e mais previsível.

Nota-se que DevOps também proporciona maior agilidade para as equipes de desenvolvimento, que passaram a assumir atividades operacionais em todo o processo. Entretanto, não envolve apenas as equipes de desenvolvimento e de operações. Isso porque, conforme já explicitado, DevOps é mais que uma tecnologia ou um conjunto de ferramentas.

E para usufruir ao máximo a agilidade e a capacidade de resposta, ambas proporcionadas pela abordagem DevOps, também é preciso que a equipe de segurança da TI desempenhe um papel integrado e de forma mais rápida em todo o ciclo de vida das aplicações de uma empresa, de modo que seja possível criar um ambiente seguro, de alta disponibilidade, confiabilidade e produtividade. Assim, obtém-se um melhor resultado para o cliente. [2]

Mas qual é o motivo de falarmos sobre isso?

Em diversas empresas, as atividades e responsabilidades em TI são bastante segmentadas. Por exemplo, os desenvolvedores são os responsáveis por programar as aplicações enquanto a infraestrutura é a responsável por cuidar dos ambientes dos sistemas e implementá-los em produção. Já a segurança é delegada a uma outra equipe específica que atuava isoladamente no estágio final do desenvolvimento.

Essa logística de trabalho dificultava a mitigação de algum problema no ambiente produtivo. Isso porque os desenvolvedores normalmente não tinham acesso direto a ele. Muitas vezes, os analistas de infraestrutura não tinham o menor conhecimento sobre as aplicações. E a segurança somente tinha visibilidade das possíveis vulnerabilidades praticamente no final do processo e normalmente sem saber nenhum contexto relacionado à função que aquela aplicação tem dentro do negócio da empresa. Portanto, em função desses fatores, era complicado resolver problemas muitas vezes básicos e que poderiam ser facilmente solucionados ou minimizados se houvesse maior transparência e união entre as áreas.

Mas hoje em dia, várias empresas não funcionam mais assim. Muitas utilizam o DevOps, cuja implementação eficaz garante ciclos de desenvolvimento rápidos e frequentes, várias vezes com duração de semanas ou dias, onde o foco é entregar algo para o cliente de forma otimizada, transparente e colaborativa. Desta forma, ao trabalhar com entregas incrementais, as equipes de desenvolvimento conseguem entregar produtos de modo cada vez mais rápido.

Fig1. Exemplo de Fluxo DevOps com ferramentas.

Embora o termo DevOps já contemple as iniciativas e práticas de segurança da informação no ciclo de desenvolvimento [3], vendo essas questões apresentadas, surgem novas dúvidas: como introduzir a segurança nesse mundo tão dinâmico? Quais são os riscos de segurança das aplicações no desenvolvimento ágil?

Os riscos para segurança de aplicações no DevOps

Muitos pensam que o desenvolvimento ágil foca literalmente na “agilidade”, mas ele na verdade valoriza a capacidade de adaptar-se mais rápido as mudanças necessárias para uma entrega final de maior qualidade e valor para o cliente. E, durante o uso desta, é possível observar melhorias de desempenho das equipes de desenvolvimento. Isso é algo extremamente importante para as empresas. Entretanto, quando se imprime um ritmo bastante veloz a um processo sem que este esteja preparado para isso, alguma coisa se perde. E neste caso, o que se perdeu foi o foco na segurança das aplicações.

No ponto de vista de produtividade, o foco dos processos de DevOps consegue trabalhar eficientemente com entrega dos produtos dentro do prazo exigido pelo mercado. 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 ou de qualidade de um produto.

Para que a segurança não seja esquecida, ela precisa ser vista como uma responsabilidade compartilhada e integrada do início ao fim. É uma mentalidade tão importante que resultou na criação do termo “DevSecOps” para enfatizar a necessidade de criar um alicerce de segurança para sustentar as iniciativas de DevOps. Mas vamos entender um pouco mais a fundo o que é DevSecOps.

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.

O estudo do Gartner constatou a necessidade de uma mudança de postura por parte das equipes de desenvolvimento, para que fosse possível introduzir cada vez mais as melhores práticas de segurança em um modelo de desenvolvimento já bem estabelecido. Ou seja, DevSecOps ia muito além de uma nova forma de produzir software: tratava-se de uma mudança cultural dentro dos times de desenvolvimento.

Esta mudança cultural visava primariamente apresentar o conceito de segurança em todo o processo de desenvolvimento. Inclusive, este estudo apontou que um ponto de melhoraria era que os testes passassem a ser realizados durante o ciclo de desenvolvimento, não somente nas últimas etapas. Isso, inclusive, ajuda a reduzir o custo de correção de código, pois quanto mais tarde o problema for visualizado, mais caro é o custo para ajustá-lo na empresa.

Este ponto levou à criação de um processo de desenvolvimento em que a segurança era vista como um componente chave de todo o processo de criação de código e implementação da aplicação. Neste contexto, quanto maior for a automação no processo, mais efetivo ele poderá ser.

Portanto, DevSecOps significa pensar na segurança da aplicação e da infraestrutura desde o início, durante todo o ciclo de desenvolvimento. Também implica em automatizar algumas atividades de segurança para evitar lentidão no fluxo de trabalho de DevOps.

Existem diferentes formas de integrar a segurança com DevOps, como implementar ferramentas de segurança em um ambiente de desenvolvimento integrado (IDE), em pipelines com a opção de quebra ou não de build, de permitir ou não um commit com código vulnerável, etc. No entanto, uma segurança eficaz em DevOps requer mais do que ferramentas novas: ela deve ser construída tendo como base as mudanças culturais geradas pelo DevOps e se integrar ao trabalho das equipes de segurança o quanto antes.

E como migrar de DevOps para DevSecOps?

Como DevSecOps representa uma mudança de cultura nas equipes de desenvolvimento, que passam a olhar segurança em todas as etapas para a construção e disponibilização de uma aplicação, esses times tornam-se capazes de identificar as vulnerabilidades ou ameaças nos estágios iniciais do desenvolvimento.

O grande desafio é introduzir no processo de desenvolvimento uma mudança radical de pensamento. É necessário que os envolvidos entendam que segurança é um dos componentes mais importantes no desenvolvimento de aplicações, ou seja, ele deve ser elaborado e inserido 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?”

Espera-se que para fazer esta pergunta, a equipe já conta com uma estrutura de DevOps com um grau de maturidade considerável e que suas equipes já entendem que a mudança precisa vir de dentro para fora do processo. Portanto, uma etapa natural é avaliar o seu processo. Isso poderá ser feito fazendo uma avaliação da maturidade de segurança da aplicação através do uso de alguns frameworks, como o Software Assurance Maturity Model (SAMM)[4].

Ele é uma estrutura aberta para ajudar as organizações a formular e implementar uma estratégia de segurança de software adaptada aos riscos específicos enfrentados pela organização. Os recursos fornecidos pelo SAMM ajudarão [4] na:

  • Avaliação da existência de uma organização prática de segurança de software;
  • Criação de um programa de segurança de software equilibrado em iterações bem definidas;
  • Demonstração de melhorias concretas a um programa de garantia de segurança;
  • Definição e medição das atividades relacionadas à segurança dentro de uma organização.

Através do uso deste framework, é possível visualizar os pontos fortes e fracos do seu processo, de modo que a empresa possa focar nas melhorias que precisam ser feitas. Normalmente, como consequência, é feito um exercício no sentido de mover o foco de segurança para a esquerda do pipeline de desenvolvimento (prática “shift-left”) para ir evoluindo a sua maturidade de segurança, ou seja, insere-se a segurança a partir da fase de Deployment até chegar na etapa de Requirements, conforme indicado na imagem abaixo. Isso ocorre porque é comum as empresas enxergarem a importância da segurança no ambiente de produção, mas não necessariamente nas etapas anteriores.

Abaixo é apresentado o Ciclo de Desenvolvimento de Software.

Fig2. Exemplo do Ciclo de Desenvolvimento de Software.

Usar a prática “shift-left” implica em desenvolver aplicações com foco em segurança desde o início, pois assim antecipam-se os possíveis problemas que possam surgir no software. E como o início de uma construção de uma aplicação não depende só dos desenvolvedores, é preciso que esteja claro 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, como arquitetos, equipe de requisitos, entre outros. Porque assim é possível melhorar as práticas de DevSecOps e tornar aplicações mais seguras.

Entretanto, se o seu time ainda não chegou nesse nível de maturidade de DevOps ou se ele nem sabe o que é DevOps, ainda sim é possível pensar na segurança dentro do contexto das aplicações. Neste caso, ela poderá ser implementada independente de atividades dentro de um pipeline DevOps, como: execução de Code Review, inserção de plugins para avaliar a segurança de código nas IDEs; realização de SAST usando como objeto de análise os repositórios de código, etc.

Uso da automação continuada para migrar de DevOps para DevSecOps

A automação continuada 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 gastem menos tempo com atividades manuais para que possam focar em outras atividades importantes.

Existem alguns artigos que falam sobre a estruturação de práticas e ferramentas para DevOps e DevSecOps. Este artigo do Gartner[5] auxilia a entender 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. Ele, inclusive, defende que a automação, quando colocada no processo de desenvolvimento desde seu início, é uma forte aliada para reduzir os conflitos entre as equipes de segurança e de desenvolvimento.

Os processos automatizados ajudam significativamente à medida em que possibilitam 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. Uma forma de facilitar na visualização de vulnerabilidades de código é através do uso de ferramentas:

  • SAST (Static Application Security Testing)
  • IAST ( (Interactive Application Security Testing)
  • OSA (Software Composition Analysis)
  • SCA (Open Source Analysis)

Um outro ponto importante é a identificação da figura de um Security Champion nos times de desenvolvimento, que seriam membros destes times e que tem como função unir a equipe de segurança com o seu próprio time, ajudando no entendimento de questões de segurança e na tomada de decisões[6].

DevSecOps evolui constantemente

DevSecOps é um tópico bastante vasto! Então, infelizmente, não é possível sintetizarmos todo o conteúdo relevante em um único artigo. No entanto, esperamos ter contribuído aqui pelo menos apresentando alguns dos pontos fundamentais para melhorar e evoluir de uma metodologia DevOps para DevSecOps.

É muito importante esclarecer que, como os demais tópicos sobre o tema Aplicação Segura, tudo o que foi falado aqui não representa uma lista definitiva ou única do assunto. Isso porque este universo está em constante evolução e busca ter uma grande aderência de forma cada vez mais veloz.

Portanto, é válido avaliar e aprimorar os processos, levando em consideração as melhores práticas do mercado e do mundo acadêmico, para garantir que o desenvolvimento de aplicação seja cada vez mais eficaz e seguro.

Se você busca uma oportunidade de desenvolvimento, trabalhando com inovação em um negócio de alto impacto, acesse o portal B2W Carreiras! Nele, você consegue acessar todas as vagas disponíveis. Venha fazer parte do nosso time!

--

--