Visão geral
É fundamental realizar testes em todo o ciclo de vida de desenvolvimento de software para atender às expectativas do usuário, aos requisitos de funcionalidade e às medidas de segurança. Realizar shift left é incorporar testes de segurança logo no início do processo para encontrar vulnerabilidades e corrigir defeitos o mais rápido possível no desenvolvimento. Realizar shift right é monitorar o comportamento, uso, desempenho e métricas de segurança do usuário no estágio de produção para verificar a operabilidade do software.
Os dois recursos têm como objetivo avaliar e assegurar a qualidade e o desempenho de novos produtos e funcionalidades em todo o processo de DevOps e ciclo de vida de desenvolvimento de software (SDLC)com foco em métodos de testes contínuos. A lógica por trás dos princípios de shift left e shift right em uma prática ágil é "falha pequena, recuperação rápida". O objetivo é detectar riscos antes que se transformem em problemas.
Criando um novo paradigma para o desenvolvimento de software
Para entender os conceitos de shift left e shift right, primeiramente, é importante pensar no ciclo de vida de desenvolvimento do software como uma linha que vai da esquerda (left) à direita (right). A metade esquerda da linha consiste nos estágios de codificação e criação. Já a metade direita é o estágio de produção, referente à implantação e monitoramento do software.
Tradicionalmente, os testes de segurança de software só começavam na metade do ciclo de desenvolvimento, pouco antes do envio para produção. Esse atraso cria espaço para que falhas de segurança passem despercebidas à medida que o software avança no processo do ciclo de vida. Isso significa que, quando uma vulnerabilidade é descoberta, as equipes são forçadas a lidar com um retrabalho complexo e custoso para isolar e corrigir as falhas acumuladas na aplicação até aquele ponto.
As empresas estão percebendo que, ao eliminar os obstáculos no início do ciclo de desenvolvimento, conseguem reduzir significativamente os custos associados à correção de falhas e erros. Além disso, essa abordagem promove a economia de recursos e possibilita a criação de soluções de melhor qualidade. Assim surgiu o conceito de "realizar shift left da segurança" que, desde então, tornou-se fundamental para o desenvolvimento moderno de software.
Otimize a segurança do Linux com a Red Hat
O que significa realizar shift left?
Desenvolvedores não são, nem querem ser, profissionais de segurança. Sendo assim, eles têm dificuldade em acompanhar a frequência de lançamentos, principalmente se forem responsáveis por corrigir um código criado por outro desenvolvedor que possa ter introduzido acidentalmente uma vulnerabilidade grave.
À medida que a arquitetura de software se torna mais complexa, cara e descentralizada, fica mais difícil monitorar e gerenciar a segurança das organizações. Métodos modernos de entrega de software, com implantações contínuas em ambientes híbridos, exigem uma nova abordagem de segurança que proteja a aplicação desde o início do processo de desenvolvimento, automatize a segurança em cada etapa e transforme essas práticas em aceleradores de negócios.
Desenvolvedores usam a estratégia de shift left como medida proativa para aumentar a segurança das aplicações, identificando e corrigindo defeitos antes que avancem muito no pipeline. Essa estratégia inclui a integração de práticas e testes de segurança o mais cedo possível no processo de desenvolvimento, em vez de deixar essa preocupação para o final. A prática de shift left está intimamente associada ao surgimento do DevSecOps, que enfatiza a integração antecipada e contínua da segurança.
Tipos de testes de shift left
As organizações enfrentam incidentes de segurança nas fases de criação, implantação e runtime. Implementar e automatizar o DevSecOps, utilizando a abordagem de shift left, oferece aos desenvolvedores recursos de segurança intuitivos que podem reduzir os erros de usuário nos estágios de criação e implantação, além de proteger as cargas de trabalho no runtime.
Algumas das técnicas usadas nos testes de shift left são:
- Testes de segurança de aplicações estáticos (SAST): análise de código-fonte, bytecode ou código binário de uma aplicação em busca de vulnerabilidades de segurança.
- Testes de segurança de aplicações dinâmicos (DAST) : metodologia de testes de caixa preta utilizada para descobrir potenciais falhas de segurança por meio da verificação automatizada de um alvo em execução.
- Modelagem de ameaças: processo de pensar sobre como cada decisão tomada em um determinado sistema pode afetar o perfil de segurança, agora ou no futuro.
- Análise da arquitetura de segurança: processo de identificar, avaliar e mitigar vulnerabilidades para fortalecer as medidas de segurança de uma organização frente às ameaças e riscos emergentes.
- Verificação de imagens de container: análise de todas as camadas de uma imagem de container para detectar potenciais ameaças à segurança.
- Assinatura de códigos: método de adicionar uma assinatura digital a um programa, arquivo ou atualização de software para ser possível verificar sua autenticidade e integridade durante a instalação e a execução.
- Testes de desempenho contínuos (CPT): a prática de executar benchmarks de desempenho (testes) continuamente ao longo do ciclo de vida de desenvolvimento.
Benefícios dos testes de shift left
A prática de shift left tem como objetivo encontrar e corrigir vulnerabilidades e regressões de desempenho no início do processo de desenvolvimento. Isso não só incrementa a segurança, mas também aprimora a experiência de usuário e a funcionalidade ao entregar software com qualidade superior, de forma mais rápida e frequente. Isso acelera a eficiência e também pode reduzir os custos indiretos ao detectar e resolver falhas de software mais cedo no ciclo de desenvolvimento.
O que significa realizar shift right?
À medida que os vetores de ameaças se tornam cada vez mais sofisticados e as superfícies de ataque continuam a crescer exponencialmente, as empresas reconhecem que apenas os testes de shift left durante a fase de criação não são mais suficientes para proteger contra riscos de segurança em constante evolução.
Com isso, o shift left deu origem a um fenômeno complementar: os testes de shift right. Realizar shift right é continuar a prática de testes, controle de qualidade e avaliação de desempenho no ambiente de pós-produção.
Tipos de testes de shift right
Para implementar os testes de shift right, as equipes de desenvolvimento realizam experimentos controlados no final do ciclo de desenvolvimento do software para examinar o funcionamento, desempenho, tolerância a falhas e experiência de usuário da aplicação.
As técnicas envolvidas nos testes de shift right relacionados a controles essenciais e visibilidade em tempo real podem incluir:
- SIEM: gerenciamento de eventos e informações de segurança. É uma solução que ajuda as organizações a detectar, analisar e responder a ameaças.
- SOAR: orquestração, automação e resposta de segurança. Busca aliviar a sobrecarga das equipes de TI ao coordenar, executar e automatizar tarefas envolvendo várias pessoas e ferramentas.
- Implantações canário: testar uma nova funcionalidade em um subconjunto de usuários antes de lançá-la para toda a base.
- Anéis de implantação: implantar e validar gradualmente as alterações na sua extensão em produção e limitar os efeitos nos usuários ao mesmo tempo.
- Testes A/B: abordagem para testar uma hipótese criando um grupo de controle, introduzindo diferentes cenários, funcionalidades, visuais, etc., e comparando as reações obtidas com a reação pretendida.
- Testes de injeção de falhas: introduzir falhas intencionalmente em um sistema para testá-lo.
- Testes de segurança de API: rastrear o tráfego e as chamadas de saída para entender seu comportamento e detectar incidentes de segurança. O Istio é uma plataforma de service mesh que oferece um canal de comunicação subjacente e ajuda a gerenciar a autenticação, a autorização e a criptografia da comunicação de serviços, em grande escala.
- Engenharia do caos: provocar erros intencionalmente para testar a resiliência de um sistema.
- Implantação azul-verde:modelo de lançamento de aplicações que transfere gradualmente o tráfego de usuários de uma versão anterior para uma nova praticamente idêntica, ambas executadas em ambiente de produção.
Benefícios dos testes de shift right
Ao observar o comportamento do software em ambientes reais, as equipes podem detectar proativamente ameaças à segurança no ambiente de runtime e garantir que as aplicações tenham o desempenho pretendido. Os testes de shift right permitem um ciclo de feedback dos usuários contínuo e em tempo real, além de possibilitarem a análise de problemas que talvez não tenham sido previstos.
Shift left, shift right ou os dois?
Com as organizações migrando para estruturas nativas em nuvem e modernizando suas aplicações para incluir tecnologias como microsserviços e containers, a prática recomendada é adotar ambas as estratégias de shift left e shift right. Ao capacitar a equipe para executar testes de ponta a ponta em todas as fases do ciclo de vida de desenvolvimento de software, sua organização se aproxima da integração e entrega contínuas (CI/CD).
Alguns dos benefícios de adotar a metodologia de shift left e shift right são: aumento da eficiência, melhoria na qualidade da solução, segurança aprimorada, time to market mais rápido e maior satisfação do usuário. Além disso, as organizações constataram que o custo relativo para corrigir falhas aumenta ao longo do tempo, com base no momento da detecção. Isso significa que, quanto mais tempo você esperar para corrigir um problema, mais cara será essa correção. Portanto, tomar medidas preventivas de shift left pode fazer a diferença nos seus resultados.
Primeiras etapas
Proteger sua cadeia de suprimentos de software exige uma abordagem versátil. Existem muitas coisas que você pode fazer para melhorar a segurança da cadeia de suprimentos de software, e cada uma delas adiciona uma nova camada de proteção à empresa e aos clientes.
Para adotar os princípios de shift left e shift right no ciclo de vida de desenvolvimento da sua organização, comece implementando uma lista de materiais de software (SBOM), ou seja, um inventário hierárquico de todas as fontes e dependências que compõem um artefato, incluindo código-fonte, software open source e bibliotecas, middleware e frameworks de desenvolvimento.
Depois disso, comece a implementar testes automatizados para reunir dados e analisar todo o pipeline de implantação e desenvolvimento de software. Testes contínuos em cada estágio do ciclo de vida de desenvolvimento de software são a melhor forma de monitorar o desempenho e detectar as causas das falhas.
Talvez mais importante do que tudo isso seja assegurar a colaboração e comunicação dentro e entre departamentos para identificar áreas problemáticas em cada equipe e encontrar as ferramentas que funcionam para você.
Como a Red Hat pode ajudar
Em um cenário de tecnologias que evoluem rapidamente, as empresas vêm adotando os containers para obter maior escalabilidade, portabilidade e eficiência ao implantar aplicações. Embora essa abordagem tenha benefícios, ela também pode apresentar desafios de segurança de TI que devem ser considerados para melhorar a proteção, a confidencialidade e a acessibilidade das aplicações em containers. Com o aumento da utilização de aplicações nativas em nuvem, melhorar a postura de segurança de containers e Kubernetes é vital.
A Red Hat® faz investimentos significativos na manutenção de softwares open source durante toda a vida útil de todas as soluções. Com os softwares que entregamos, assumimos a responsabilidade de não apenas dar suporte, mas também de lidar com preocupações críticas, como a segurança.
O Red Hat Trusted Software Supply Chain ajuda as organizações a integrar a segurança no ciclo de vida de desenvolvimento de software desde o início. Com o software de segurança certo, elas podem se proteger de riscos e vulnerabilidades nos sistemas da cadeia de suprimentos. Sem a proteção adequada, as empresas correm o risco de perder a confiança de usuários, clientes e outros stakeholders. Com o Red Hat Trusted Software Supply Chain, os clientes podem codificar, desenvolver e monitorar software usando plataformas comprovadas, conteúdo confiável e verificação e correção de segurança em tempo real.
O Red Hat OpenShift® promove a abordagem de shift left com automação de DevSecOps e integração da segurança no início e por todo o ciclo de desenvolvimento. Seu conjunto de ferramentas de desenvolvedor prontas para uso, recursos de CI/CD e foco em segurança oferecem uma cadeia de suprimentos de software eficiente e segura. Ele é uma abrangente plataforma de aplicações baseada em Kubernetes que ajuda as empresas a desenvolver, implantar, executar, gerenciar e oferecer segurança a aplicações inovadoras, em grande escala.
O Red Hat Advanced Cluster Security for Kubernetes realiza o shift left da segurança e automatiza as práticas recomendadas de DevSecOps. A plataforma funciona com qualquer ambiente Kubernetes e se integra com o DevOps e as ferramentas de segurança, ajudando as equipes a operacionalizar e proteger melhor suas cadeias de suprimentos, infraestruturas e cargas de trabalho.
O Red Hat Ansible® Automation Platform oferece um framework empresarial consistente para desenvolver e operar a automação da TI em grande escala, priorizando a segurança em todo o ciclo de vida de desenvolvimento de software. Ele permite que as equipes automatizem a segurança e a conformidade em toda a empresa, utilizando conteúdo de automação certificado para dar respostas coordenadas às ameaças, com suporte em tempo integral. O Ansible Automation Platform também oferece diversas integrações de segurança compatíveis com as soluções da Red Hat e nossos parceiros de tecnologia.
O Red Hat Enterprise Linux® adota a segurança desde o início, incorporando princípios "shift-left" para fins de conformidade, como imagens imutáveis, configuração automatizada, cadeia de suprimentos confiável e proteção do runtime. Incorporar políticas de segurança como código desde a fase de design ajuda a manter os sistemas em conformidade desde o início. O image mode para o Red Hat Enterprise Linux oferece uma abordagem nativa em container para desenvolver e implantar golden images (imagens douradas) imutáveis e previamente reforçadas com linhas de base de conformidade incorporadas, minimizando erros manuais, incorporando guardrails de segurança desde o início e aumentando a resiliência contra adulterações.