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 da Escola de DevOps: Matricula-se na escola de DevOps. Junte-se a uma comunidade de mais de 500 mil estudantes. Na Alura você tem acesso a todos os cursos em uma única assinatura; tem novos lançamentos a cada semana; desafios práticos. Clique e saiba mais!

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