DevSecOps: como usar a abordagem que prioriza a segurança
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.
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.
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
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!