O que é o DevSecOps?
Saiba como integrar práticas de segurança em todas as fases do ciclo de vida de desenvolvimento de software no seu ambiente multicloud.
DevSecOps definido
O DevSecOps, que significa desenvolvimento, segurança e operações, é um quadro que integra a segurança em todas as fases do ciclo de vida de desenvolvimento de software. As organizações adotam esta abordagem para reduzir o risco de lançar código com vulnerabilidades de segurança. Através da colaboração, automatização e processos claros, as equipas partilham a responsabilidade pela segurança, em vez de a deixarem para o fim quando pode ser muito mais difícil e dispendioso abordar os problemas. O DevSecOps é um componente crítico de uma estratégia de segurança de multicloud.
DevSecOps versus DevOps
No desenvolvimento de software tradicional, os projetos são divididos em fases distintas para planeamento, design, desenvolvimento, integração e teste, que ocorrem sequencialmente ao longo de vários meses ou até mesmo anos. Embora esta abordagem seja muito metódica, muitas organizações consideraram-na demasiado lenta, o que dificulta a satisfação das expectativas dos clientes relativamente às melhorias contínuas dos produtos. Além disso, a segurança é normalmente incorporada no final, o que coloca as empresas em risco de violação.
Para se manterem competitivas, muitas empresas adotaram um modelo DevOps que dá prioridade à entrega de pacotes mais pequenos de código de alta qualidade, em vez de projetos ricos em funcionalidades que demoram mais tempo. Neste quadro, as equipas de desenvolvimento de software e de operações colaboram para incorporar os testes e a integração em todo o processo. A automatização, os processos padronizados e a colaboração ajudam as equipas a moverem-se rapidamente sem sacrificar a qualidade.
O DevSecOps é uma melhoria do DevOps que integra a segurança em todos os aspetos do processo. O objetivo é abordar problemas de segurança desde o início do projeto. Neste quadro, toda a equipa assume a responsabilidade não só pela garantia de qualidade e pela integração do código, mas também pela segurança. Na prática, isto significa que as equipas debatem as implicações de segurança durante o planeamento e começam a testar problemas de segurança em ambientes de desenvolvimento, em vez de aguardarem até ao fim. Outro nome para esta abordagem é segurança shift left.
Porque é que o DevSecOps é Importante?
Existem muitos métodos que os atacantes utilizam para obter acesso aos dados e recursos de uma organização, mas uma tática comum é a exploração de vulnerabilidades de software. Estes tipos de falhas de segurança são dispendiosos, demorados e, dependendo da gravidade, prejudiciais para a reputação de uma empresa. A estrutura de DevSecOps reduz o risco de implementar software com configurações incorretas e outras vulnerabilidades de que os agentes maliciosos podem tirar proveito.
Componentes Principais do DevSecOps
Um processo de DevSecOps com êxito inclui os seguintes componentes:
-
Integração contínua
Com a integração contínua, os programadores enviam o seu código para um repositório central várias vezes por dia. Em seguida, o código é automaticamente integrado e testado. Esta abordagem permite que as equipas detetem problemas de integração e erros numa fase inicial do processo, em vez de aguardarem até ao fim quando podem haver vários problemas que têm de ser resolvidos.
-
Entrega contínua
A entrega contínua baseia-se na integração contínua para automatizar o processo de mover o código do ambiente de compilação para um ambiente de teste. Uma vez no processo de teste, para além dos testes de unidades, o software é automaticamente testado para garantir que a interface de utilizador está a funcionar, que o código foi integrado com êxito, que as APIs são fiáveis e que o software consegue lidar com os volumes de tráfego esperados. O objetivo desta abordagem é fornecer consistentemente código pronto para produção que proporciona valor aos clientes.
-
Segurança contínua
A criação de segurança em todo o ciclo de vida de desenvolvimento de software é um componente fundamental do DevSecOps. Isto inclui a modelação de ameaças numa fase inicial do processo e testes de segurança automatizados ao longo de todo o ciclo de vida, começando com os próprios ambientes dos programadores. Ao testar exaustivamente o software para problemas de segurança de forma antecipada e frequente, as organizações podem fornecer software de forma eficiente com problemas mínimos.
-
Comunicação e colaboração
O DevSecOps é altamente dependente de indivíduos e equipas que trabalham em conjunto. A integração contínua exige que as pessoas colaborem para resolver conflitos no código, e as equipas precisam de comunicar eficazmente para se unirem em torno dos mesmos objetivos.
Como implementar o DevSecOps
Adicionar segurança ao seu processo de DevOps requer um planeamento cuidadoso. Comece lentamente com processos que introduzam o mínimo de fricção para a equipa e ofereçam o maior retorno em termos de segurança. Eis algumas formas de adicionar segurança a um sprint de DevOps típico.
-
Planeamento e desenvolvimento
A introdução da segurança numa fase inicial dos sprints de desenvolvimento não só ajuda a reduzir as vulnerabilidades mais tarde, como também poupa tempo, porque é mais fácil resolver os problemas antes de o código ter sido criado e integrado. Durante o planeamento e o desenvolvimento, utilize a modelação de ameaças para identificar e mitigar potenciais ameaças à aplicação. Isto irá ajudá-lo a integrar segurança na aplicação desde o início. Para descobrir problemas de segurança antes de o código ser introduzido no repositório partilhado, implemente verificações automatizadas, tais como plug-ins de segurança do ambiente de desenvolvimento integrado, que dão aos programadores feedback imediato se houver um potencial risco de segurança no código que escreveram. Durante a revisão do código, peça a alguém com conhecimentos de segurança que apresente recomendações para efetuar melhorias.
-
Compromisso de código
Uma das chaves para um processo de DevSecOps bem-sucedido é a integração contínua. Normalmente, os programadores submetem o seu código a um repositório central várias vezes por dia para garantir que os problemas de integração são detetados numa fase inicial. É importante adicionar verificações de segurança automatizadas a esta fase. Isto pode incluir a análise de bibliotecas e dependências de terceiros, testes de unidades e testes de segurança de aplicações estáticas. Também é importante implementar controlos de acesso baseados em funções para proteger a sua infraestrutura de integração contínua e entrega contínua contra atacantes que procuram executar código malicioso ou roubar credenciais.
-
Criar e testar
Executar scripts de segurança automatizados no ambiente de teste ajuda a descobrir potenciais problemas que não foram detetados anteriormente. Alguns dos testes de segurança que pode executar durante esta fase incluem testes dinâmicos de segurança de aplicações, análise de infraestrutura, análise de contentores, validação da configuração da cloud e testes de aceitação de segurança.
-
Produção
Depois de a aplicação ser implementada para produção, algumas organizações participam em testes de penetração para tentar encontrar pontos fracos no ambiente em tempo real. Nos testes de penetração, as pessoas adotam a mentalidade de um atacante e procuram formas de violar a aplicação.
-
Operação
Mesmo o melhor processo de DevSecOps não irá capturar tudo, pelo que é fundamental monitorizar continuamente as aplicações quanto a vulnerabilidades e ameaças. Os dados de análise podem ajudá-lo a avaliar se a sua postura de segurança está a melhorar e realça as áreas para otimização.
-
Ferramentas e Tecnologias de DevSecOps
Ao escolher ferramentas de segurança, é importante selecionar as que funcionam bem com a sua tecnologia de DevOps atual. Isto facilitará a incorporação da segurança em todo o processo. Seguem-se alguns dos tipos de ferramentas de que poderá precisar:
-
Infraestrutura como análise de código
Para melhorar a sua eficiência, as equipas DevSecOps utilizam normalmente ferramentas de código aberto como o Terraform para gerir e aprovisionar infraestruturas como redes, máquinas virtuais e balanceadores de carga através de código, em vez de o fazerem manualmente. O Terraform ajuda a garantir que a infraestrutura é configurada e atualizada de forma consistente em centenas ou milhares de servidores. Para reduzir o risco de que as configurações incorretas sejam implementadas no ambiente de produção, as ferramentas de verificação da infraestrutura como código verificam automaticamente a infraestrutura ao nível do código para detetar a não conformidade com as políticas e normas de segurança.
-
Testes de segurança de aplicações estáticas
Antes de o código ser compilado, os programadores de DevSecOps começam a testar o código personalizado para detetar vulnerabilidades de segurança. Isto ajuda-os a corrigir problemas sem afetar a compilação. As ferramentas de teste de segurança de aplicações estáticas facilitam este processo com verificações automáticas e feedback em tempo real. Muitas ferramentas identificam exatamente que código é arriscado e oferecem sugestões de correções.
-
Análise de composição de software
Uma forma de as equipas criarem aplicações e funcionalidades de forma mais eficiente é através da utilização de plug-ins e estruturas de terceiros. Estas ferramentas pré-construídas poupam tempo, mas também podem introduzir riscos, como problemas com o licenciamento, código mal escrito ou vulnerabilidades de segurança. As ferramentas de análise de composição de software identificam componentes open source em aplicações e avaliam-nos em relação a bases de dados proprietárias ou gratuitas para deteção de violações de licenças e problemas de segurança e qualidade.
-
Testes de segurança de aplicações interativas
Durante os testes de garantia de qualidade ou quando uma aplicação está a ser utilizada, as ferramentas de segurança de aplicações interativas analisam o código para encontrar vulnerabilidades e fornecerem relatórios que identificam onde está o problema no código.
-
Testes de segurança de aplicações dinâmicas
Os testes de segurança de aplicações dinâmicas emulam os métodos que um agente malicioso pode utilizar para atacar uma aplicação. Estes testes ocorrem enquanto a aplicação está em execução e baseiam-se em casos de utilização predefinidos.
-
Análise de contentores
Os contentores são amplamente utilizados no DevSecOps porque ajudam os programadores a implementar facilmente unidades de código autónomas. Dentro de um contentor existe uma imagem de contentor que inclui o código que executa processos para o contentor. No entanto, estas imagens são muitas vezes criadas com imagens existentes ou retiradas de repositórios públicos. As ferramentas de análise de contentores analisam os contentores e comparam-nos com bases de dados de vulnerabilidades públicas ou proprietárias para descobrir potenciais problemas de segurança.
Melhores Práticas de DevSecOps
O DevSecOps tem tanto a ver com a mudança de cultura como com processos e ferramentas. Eis algumas melhores práticas para ajudar a tornar a adoção desta estrutura o mais simples possível.
-
Mudar a cultura
Reconheça que as pessoas podem ter dificuldades em alterar a forma como trabalham e podem surgir conflitos. Para ajudá-los a adaptarem-se, comunique claramente os objetivos e expectativas da organização, forneça muitas oportunidades para diálogos abertos e preveja que terá de ser flexível até que as equipas encontrem as ferramentas, o processo e a cadência que melhor se adequam às suas capacidades.
-
Definir requisitos e métricas
Estabeleça uma linha de base de segurança mínima. Para obter orientações, consulte os requisitos regulamentares e do sector ou os dez principais riscos críticos para as aplicações Web do Open Worldwide Application Security Project® (OWASP) e os 25 principais erros de software do SANS. Depois de definir os requisitos, determine quais as métricas que pretende seguir para o ajudar a monitorizar o seu progresso.
-
Começar com pouco
As ferramentas de automatização de segurança oferecem muitas opções para verificar se existem problemas no código, mas a adoção de todas elas, especialmente no início da adoção do DevSecOps, pode sobrecarregar a sua equipa. Seja criterioso quanto às ferramentas que implementa e ao número de problemas que procura.
-
Executar modelação de ameaças
Desenvolva um processo de modelação de ameaças, que pode ser tão simples ou tão pormenorizado e técnico quanto necessário. Utilize esta abordagem para documentar uma vista de segurança realista da sua aplicação que inclui:
- Como os atacantes podem abusar da arquitetura da aplicação.
- Como corrigir vulnerabilidades.
- Prioridade de diferentes problemas.
-
Implementar automatização
A automatização é fundamental para permitir a qualidade e a velocidade no processo de DevSecOps. Ao incorporar análises de segurança automatizadas durante todas as fases da integração contínua e do ciclo de vida de entrega contínua, poderá melhorar a segurança das suas aplicações sem abrandar significativamente o processo.
-
Gerir dependências
A maioria dos programadores utiliza bibliotecas e pacotes de terceiros para criar aplicações de forma eficiente. O problema é que algumas destas soluções têm falhas de segurança e os programadores nem sempre são diligentes em mantê-las atualizadas. Para reduzir o risco, certifique-se de que os componentes que utiliza são verificados quanto aos riscos de segurança e desenvolva um processo normalizado para os atualizar.
-
Avaliar e melhorar
Avalie regularmente como o processo está a funcionar e ajuste conforme necessário para garantir que a sua organização está a cumprir os seus objetivos. Um "post-mortem " sem culpa após a conclusão de um sprint pode ajudar a descobrir oportunidades de melhoria. Os dados de análise e as informações sobre ameaças também podem ajudá-lo a determinar se existem necessidades de segurança que não estão a ser cumpridas pela sua abordagem atual.
-
DevSecOps para aplicações nativas da cloud
As aplicações nativas da cloud são arquitetadas para a cloud e, normalmente, são neutras no fornecedor, o que permite que sejam transferidas de uma nuvem para outra. Concebidas para serem altamente dimensionáveis e resilientes, as equipas de desenvolvimento normalmente criam-nas utilizando microsserviços, contentores e automatização, tornando-as idealmente adequadas para um processo de DevSecOps. Criar segurança contínua, integração contínua e entrega contínua no processo de desenvolvimento para aplicações nativas da cloud permite a escalabilidade sem comprometer a segurança. Utilize soluções de segurança automatizadas, como o Microsoft Defender para DevOps, para ajudar a proteger o seu código e todo o pipeline de DevOps. Depois de ter implementado a sua aplicação na cloud, continue a monitorizá-la para detetar riscos. As plataformas de proteção de cargas de trabalho na nuvem (PPCTN) ajudam a salvaguardar estas aplicações e os dados subjacentes ao detetar e mitigar ameaças a cargas de trabalho em ambientes de várias nuvens. As soluções de gestão da postura de segurança da cloud (GPSC) descobrem e resolvem erros de configuração e vulnerabilidades em todo o seu ambiente.
Saiba mais sobre o Microsoft Security
Microsoft Defender para a Cloud
Proteja ambientes híbridos e de várias nuvens, desde o desenvolvimento ao runtime, com uma plataforma de proteção de aplicações nativas da nuvem.
Microsoft Defender for Cloud Apps
Modernize a proteção das suas aplicações, proteja os seus dados e melhore a postura das suas aplicações com esta solução de software como um serviço.
Gestão da Postura de Segurança do Microsoft Defender para a Cloud
Concentre-se nos riscos mais críticos em ambientes multicloud com gestão da postura de segurança da cloud contextual.
Microsoft Defender para DevOps
Obtenha gestão de segurança unificada do DevOps em ambientes de várias nuvens e de vários pipelines.
Perguntas mais frequentes
-
O DevSecOps é um processo que integra a segurança em todo o ciclo de vida de desenvolvimento de software. As organizações adotam esta abordagem para reduzir o risco de lançar código com vulnerabilidades de segurança. Através da colaboração, automatização e processos claros, as equipas partilham a responsabilidade pela segurança, em vez de a deixarem para o fim, quando pode ser muito mais difícil e dispendioso resolver problemas.
-
DevSecOps significa desenvolvimento, segurança e operações. Refere-se ao processo de integração da segurança em todas as fases do desenvolvimento de software.
-
Shift left é um conceito no DevSecOps que se refere à incorporação de práticas de segurança a partir do início do processo de desenvolvimento.
-
A estrutura de DevSecOps inclui integração contínua, entrega contínua e segurança contínua. É um método através do qual as equipas de segurança e operações trabalham em conjunto e partilham a responsabilidade de produzir rapidamente software de qualidade, reduzindo simultaneamente as vulnerabilidades de segurança.
-
Não existe um único processo de DevSecOps, mas uma forma comum de as pessoas executarem estes projetos é através da divisão do trabalho em sprints, cada um dos quais inclui os seguintes componentes: planeamento e desenvolvimento, composição e teste e produção. Ao longo do sprint, as equipas utilizam a automatização para resolver continuamente problemas de garantia de qualidade, integrar continuamente e testar continuamente os riscos de segurança.
Siga o Microsoft Security