DevSecOps: como usar a abordagem que prioriza a segurança

DevSecOps: como usar a abordagem que prioriza a segurança
Victor Costa Santos
Victor Costa Santos

Compartilhe

Nesse artigo, você vai entender o que é DevSecOps e como pode mitigar os riscos associados à falta de segurança no desenvolvimento de software. Vamos pensar em um caso que exemplifica a importância dessa prática?

Em um esforço para superar a concorrência, uma equipe de desenvolvimento de um e-commerce implementou uma nova funcionalidade de pagamento sem as devidas verificações de segurança.

Pouco depois do lançamento, a empresa descobre que hackers exploraram vulnerabilidades no novo sistema, resultando no roubo de dados de cartões de crédito de milhares de clientes.

Esse incidente não só prejudicou a confiança dos clientes, mas também causou um grande impacto financeiro e de reputação para a empresa.

Além disso, a necessidade de corrigir rapidamente as falhas de segurança pode exigir que a aplicação seja temporariamente retirada do ar, resultando em perda de receita e insatisfação dos clientes.

Durante esse período, a empresa perdeu vendas e viu seus clientes migrando para concorrentes, aumentando ainda mais os danos causados pela falta de segurança inicial.

Tal situação poderia ser evitada com a aplicação do DevSecOps. Por isso, vamos discutir as principais práticas, ferramentas e benefícios da abordagem, mostrando como ela pode ser uma peça fundamental para a criação de produtos mais seguros e confiáveis.

O que é DevSecOps?

Para explicar o que é DevSecOps, é necessário voltar ao passado, à época em que as práticas de desenvolvimento estavam em seus estágios iniciais, o famoso quando "tudo era mato".

Antes até do surgimento do DevOps, as equipes de desenvolvimento e operações funcionavam em silos, ou seja, de forma isolada e sem comunicação efetiva entre si.

A imagem mostra quatro ilustrações em estilo cartoon, cada uma três pessoas em frente a um grande silo cilíndrico. Cada silo representa uma equipe diferente no processo de desenvolvimento de software, indicado pelas etiquetas na parte inferior. Da esquerda para a direita, as equipes são: “Time de produtos”, “Desenvolvedores”, “Testes (QA)”, “Time de segurança” e “time de implatação”

Em muitas empresas, como no caso de um e-commerce, acontecia das pessoas desenvolverem código e passarem-no para o time de operações, responsável por implantar e gerenciar a infraestrutura necessária para executar o software.

Tal cultura era conhecida como modelo em Cascata (Waterfall), uma metodologia de desenvolvimento de software linear e sequencial, na qual cada fase só começa após a conclusão da anterior. Isso reforçava a separação entre desenvolvimento e operações.

Foi então que o Agile entrou em cena, introduzindo uma abordagem revolucionária que promovia valores como comunicação, colaboração e entrega contínua de valor.

Diversos processos leves, como XP, Scrum e Kanban, surgiram na década de 90, todos compartilhando ideais e valores semelhantes.

No entanto, o marco definitivo veio em fevereiro de 2001, quando dezessete visionários se reuniram para definir os valores e princípios que formariam o Agile manifesto, ponto de virada na indústria de desenvolvimento de software.

Um avanço significativo ocorreu em 2009 com o surgimento do DevOps que rapidamente foi adotado e utilizado em diversas empresas desde então. Impulsionado por Patrick Debois, ele promove uma cultura de colaboração e integração contínua entre as equipes de desenvolvimento e operações.

O objetivo é acelerar o ciclo de desenvolvimento, aumentar a eficiência e melhorar a qualidade do software entregue.

Caso queira se aprofundar em DevOps, assista ao vídeo Aprofundando no DevOps: Times e Produção de Software da Casa do Código no youtube.

No entanto, à medida que o DevOps se popularizou, ficou evidente que a segurança frequentemente não recebia a devida atenção. Diante dessa problemática, surge o DevSecOps, junção dos termos Desenvolvimento (Dev), Segurança (Sec) e Operações (Ops), introduzido pela Gartner, empresa focada em pesquisa e consultoria em tecnologia, em meados de 2012.

O DevSecOps propõe a incorporação de práticas de segurança desde o início do ciclo de desenvolvimento, promovendo uma cultura de responsabilidade compartilhada na qual todas as partes envolvidas em desenvolver software têm um papel ativo na segurança.

Essa abordagem garante que a segurança seja tratada de forma contínua e integrada, evitando os silos e melhorando a resiliência e a qualidade do software entregue.

A imagem mostra um grupo de cinco estruturas cilíndricas verticais (silos). Há setas que apontam de um silo para o outro, formando um círculo. No meio das estruturas há pessoas conversando umas com as outras. Banner promocional da Alura, com um design futurista em tons de azul, apresentando dois blocos de texto, no qual o bloco esquerdo tem os dizeres:

Benefícios da DevSecOps

Com a abordagem DevSecOps, não apenas abraçamos os princípios fundamentais do DevOps, mas também os fortalecemos, com uma mentalidade voltada para a segurança desde o início do processo de desenvolvimento.

Isso proporciona uma série de vantagens em um mundo cada vez mais digital e interconectado, no qual os dados são extremamente valiosos e os ataques cibernéticos são uma preocupação crescente.

O DevSecOps está ganhando cada vez mais relevância e tornando-se essencial, especialmente diante dos desafios globais atuais.

Em comparação com outras abordagens mencionadas anteriormente, suas vantagens incluem:

Melhoria na experiência do usuário: um software mais seguro e confiável resulta em uma melhor experiência do usuário, aumentando a confiança e garantindo a proteção dos seus respectivos dados.

Identificação e reação mais rápida às vulnerabilidades e ameaças: integrar segurança desde o início permite a identificação e correção precoce de vulnerabilidades, diminuindo brechas para ataques cibernéticos. Além disso, as equipes podem responder rapidamente a novas ameaças e falhas de segurança, implementando correções e atualizações de maneira mais ágil ao longo do processo de desenvolvimento.

Redução de custos: resolver problemas de segurança no início do ciclo de desenvolvimento é mais econômico do que corrigir vulnerabilidades após a implantação. Isso economiza recursos e reduz os custos associados a remediações e violações de segurança. É como reparar uma goteira no telhado logo que ela aparece, evitando que se torne um vazamento grave que cause danos maiores e mais caros.

Esses benefícios não só melhoram a experiência, mas também ajudam a cumprir regulamentos e legislações, aumentando a confiança de clientes e parcerias.

Principais ferramentas durante o ciclo de desenvolvimento

A cultura DevSecOps pode ser composta por diversas equipes, consequentemente, uma variedade de ferramentas.

É importante destacar aquelas que são essenciais em todo o processo, assegurando a segurança da aplicação.

As ferramentas principais são empregadas continuamente pelas pessoas desenvolvedoras para garantir tanto a segurança quanto a manutenção dos sistemas e não só identificam vulnerabilidades potenciais como também automatizam processos, assegurando que a segurança seja abordada de maneira integrada e contínua.

Isso pode ser observado em cada fase do ciclo de desenvolvimento:

Loop infinito de DevOps

A imagem mostra um diagrama em formato de 8 na vertical. Em cima dele está escrito Sec. Dentro do 8, à esquerda, lê-se “Dev” e à direita, “Ops”. A imagem também está dividida em 8 partes nas quais, da metade do 8 correspondente ao Dev, lê-se no sentido anti-horário,  “Planejar”, “Code”, “Build”, “Testar”. Na parte do 8 correspondente ao Ops, no mesmo sentido, lê-se “Release”, “Deploy”,  “Operar” e “Monitorar”.

Planejamento: na fase de planejamento, são estabelecidas as políticas de segurança, os padrões de código e as ferramentas que serão utilizadas ao longo do ciclo. Entre as ferramentas populares para gerenciamento e comunicação estão, por exemplo, o Jira e o Slack.

Codificação: durante a fase, quem desenvolve utiliza ferramentas de análise estática de código (SAST) para identificar e corrigir vulnerabilidades em tempo real. Isso ajuda a garantir que o código seja escrito de acordo com os padrões de segurança estabelecidos, como o Sonar Qube, que é usado no curso de Desenvolvimento Seguro: implementando Secret Scanning e SAST na esteira de CI

Construção: aqui a aplicação é compilada e empacotada, além de serem realizados testes automatizados para verificar a integridade do código e a ausência de erros.

As ferramentas de análise dinâmica de aplicações (DAST) são utilizadas para simular ataques e identificar vulnerabilidades que só se manifestam em tempo de execução, como o OWASP ZAP e o Dependency Track. Podemos aprender mais e utilizar tais ferramentas em exemplos práticos no curso de Desenvolvimento seguro com DAST e SCA: protegendo as dependências e a aplicação em execução.

Teste: é crucial para garantir a qualidade e a segurança da aplicação. Digamos que aqui “vale tudo”, para mitigar erros.

Além dos testes funcionais, são realizados testes de segurança específicos, como os de penetração e análise de vulnerabilidades, para identificar e corrigir falhas antes da implantação em produção.

O termo é conhecido como Software Composition Analysis (SCA) e tem como ferramentas, além das mencionadas anteriormente como Dependency Track, a Nessus e a (Snyck)(https://snyk.io/pt-BR/).

Implantação: com a aplicação testada e aprovada, chega o momento da implantação em produção. As ferramentas de infraestrutura como código (IaC) garantem que a infraestrutura seja provisionada, ou seja, receba de forma segura e consistente a nova implantação.

Enquanto isso, ferramentas de orquestração de containers facilitam a implantação e o escalonamento da aplicação em ambientes distribuídos.

Algumas delas são populares, como Terraform Para saber mais a respeito dele, leia nosso artigo “Conheça o Terraform”. Além dele, há o Kubernetes, para o qual também temos o artigo “O que é Kubernetes”.

Além disso, para ir ainda mais fundo, recomendo fazer o curso de Infraestrutura como código: Terraform e Kubernetes.

Operação: uma vez em produção, a aplicação é monitorada continuamente para identificar e responder a incidentes de segurança.

As ferramentas de monitoramento e registro coletam dados sobre o desempenho da aplicação e os eventos de segurança, permitindo que as equipes identifiquem e corrijam problemas rapidamente. ferramentas como o Splunk, auxiliam nessa etapa.

Feedback: o feedback contínuo é essencial para a melhoria contínua do processo DevSecOps. As equipes de desenvolvimento, segurança e operações trabalham juntas para analisar os resultados dos testes, as métricas de segurança e os incidentes ocorridos, buscando identificar oportunidades de melhoria e aprimorar a segurança da aplicação. Assim, ferramentas de comunicação se tornam muito úteis novamente.

Como seria o desenvolvimento com DevSecOps?

Voltando ao exemplo do e-commerce, após tudo o que aprendemos, como podemos esperar que fosse o ciclo para desenvolver a implementação de uma nova funcionalidade de pagamento, agora com o DevSecOps aplicado à cultura da empresa?

Desde o começo, a segurança teria sido uma preocupação. Com o DevSecOps, a nova funcionalidade de pagamento do e-commerce seria desenvolvida em um ambiente de colaboração constante, no qual a segurança seria prioridade em todas as etapas.

Durante o planejamento, a equipe definiria requisitos rigorosos e utilizaria ferramentas de análise de código para identificar vulnerabilidades em tempo real.

Testes automatizados seriam realizados continuamente, simulando ataques e garantindo a robustez da aplicação.

A equipe monitoraria o desenvolvimento da implantação, utilizando ferramentas como o Nessus, dentre outras, visando identificar e reparar qualquer incidente de segurança.

Após a implantação, a equipe acompanharia continuamente a nova funcionalidade na produção, a fim de identificar e responder de forma mais rápida a qualquer incidente de segurança.

Com essa abordagem, erros como o da empresa de e-commerce poderiam ser reparados durante o ciclo, fazendo com que os dados dos clientes ficassem seguros, a boa reputação da empresa fosse mantida e o produto entregue fosse mais seguro e confiável, com proteção contra eventuais invasores e maior garantia na disponibilidade do site e operações realizadas por meio dele.

Boas práticas para implementação de DevSecOps nas empresas

Implementar DevSecOps de maneira eficaz requer uma mudança cultural e técnica que fortalecerá a segurança dos processos, já que essa será uma preocupação ao longo de todo o ciclo de desenvolvimento. Vamos conferir como fazer isso:

Promover a Cultura DevSecOps na equipe

É importante tentar evitar resistência à nova cultura, o que pode ser comum diante de qualquer mudança. Por isso é fundamental entender o momento das pessoas colaboradoras e que as lideranças encontram os melhores meios para criar a integração, auxiliando na ponte entre as equipes. Algumas práticas importantes incluem:

  • Comunicação aberta: promova a comunicação transparente entre as equipes de desenvolvimento, segurança e operações. Incentive o diálogo constante para alinhar expectativas, compartilhar conhecimentos e solucionar problemas em conjunto.
  • Treinamento e conscientização: invista em treinamento contínuo para que cada pessoa da equipe compreenda os princípios DevSecOps e suas responsabilidades em relação à segurança. Realize workshops, palestras e atividades práticas para fortalecer a cultura de segurança.
  • Incentivo à colaboração: crie um ambiente colaborativo, no qual haja confiança para compartilhar tanto ideias quanto preocupações, trabalhando conjuntamente para o encontro de soluções. Incentive a troca de experiências e o aprendizado mútuo.

Uso de abordagens de Shift Left e SSDLC

Abordagens como Shift Left e SSDLC (Secure Software Development Lifecycle) são para o DevSecOps o que semáforos e placas de trânsito são para o tráfego: fundamentais para um fluxo contínuo e seguro. Sem eles, a esteira de desenvolvimento pode enfrentar gargalos e riscos, assim como o trânsito sem sinalização resulta em caos.

Shift Left: segurança como prioridade

Assim como o pedestre tem prioridade no trânsito, a segurança no DevSecOps também deve ser priorizada em todas as etapas.

O Shift Left coloca a segurança no centro do processo, deslocando-a para a "esquerda" da esteira de desenvolvimento, ou seja, para as fases iniciais.

Essa mudança de paradigma garante que a segurança seja incorporada desde o início, evitando riscos e vulnerabilidades que possam surgir posteriormente.

Para entender mais sobre a abordagem, recomendo assistir o Alura + sobre Shift Left em DevOps.

SSDLC (Secure Software Development Lifecycle

Similar ao Shift Left, o SSDLC integra práticas de segurança em cada fase do ciclo de vida do software, começando pelo planejamento e seguindo até a manutenção.

Desse modo, garante que a segurança seja uma consideração contínua, resultando em aplicativos mais seguros e resilientes. Caso queira entendê-lo melhor, indico a leitura do artigo “Entenda o que é Secure Software Development Life Cycle”.

Conclusão

Vimos que a implementação do DevSecOps é uma jornada que requer um compromisso genuíno com a segurança e uma mudança cultural.

Acompanhamos a evolução das culturas organizacionais, desde os modelos em cascata até o surgimento do Agile e, finalmente, a integração do DevOps e DevSecOps.

Essa trajetória nos mostrou como a colaboração e a comunicação entre equipes são cruciais para criar produtos mais seguros e confiáveis.

Ao adotar a abordagem DevSecOps, as empresas podem identificar e corrigir vulnerabilidades mais rapidamente, reduzir custos de remediação e melhorar a experiência de usuário final.

As ferramentas e práticas discutidas garantem que a segurança seja incorporada em todas as fases do desenvolvimento, desde o planejamento até a operação.

Para aprofundar seus conhecimentos e habilidades em segurança de desenvolvimento, recomendo a formação de Desenvolvimento Seguro, que oferece uma visão abrangente sobre as práticas e ferramentas essenciais para implementar a segurança de forma eficaz em todas as etapas do ciclo de desenvolvimento.

Desejo muito sucesso na sua trajetória, um grande abraço e até mais!

Victor Costa Santos
Victor Costa Santos

Olá, sou o Victor, estudante de jogos digitas pela FIAP, sou um entusiasta da tecnologia e apaixonado pela suas possibilidades, adoro ler e me informar sobre o que se passa no mundo, Jogar é claro, e ver filmes e séries que trazem reflexão sobre o seu eu, acredito que a tecnologia é o melhor meio para democratizar a educação e fazendo parte do Fórum da Escola Semente aqui na própria alura, eu acabo ajudando um pouco nessa transformação.

Veja outros artigos sobre DevOps