Jump to section

Shift left e shift right

Copiar URL

É fundamental realizar testes em todo o ciclo de vida de desenvolvimento do 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 garantir a qualidade e o desempenho de novas soluções e funcionalidades em todo o processo de DevOpsciclo de vida de desenvolvimento do software (SDLC), concentrando-se 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". Ela tem como objetivo detectar riscos antes que se transformem em problemas.

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.

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 vulnerabilidades 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. 

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:

  • Teste de segurança de aplicações estático (SAST): análise de origem, bytecode ou código binário de uma aplicação em busca de vulnerabilidades de segurança.
  • Teste de segurança de aplicações dinâmico (DAST) : metodologia de teste 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 empresa frente às crescentes ameaças e riscos.
  • 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 que seja possível verificar sua autenticidade e integridade durante a instalação e execução. 

A prática de shift left tem como objetivo encontrar e corrigir vulnerabilidades no início do processo de desenvolvimento. Isso não apenas incrementa a segurança mas também aprimora a experiência do 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. 

À 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. 

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, ao mesmo tempo em que limita os efeitos nos usuários.
  • Teste A/B: abordagem para testar hipóteses, criando um grupo de controle, introduzindo diferentes cenários, funcionalidades, visuais, etc., e comparando as reações obtidas com a reação pretendida.
  • Teste de injeção de falhas: introduzir falhas intencionalmente em um sistema para testá-lo.
  • Teste 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 fornece 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 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. 

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. 

Com as empresas 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 desenvolvimento de software, sua organização se aproxima da  integração contínua e entrega contínua (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 do produto, segurança aprimorada, redução do time to market 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. 

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 são a melhor forma de monitorar o desempenho e detectar as causas das falhas.

Talvez mais importante do que tudo isso seja garantir 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ê. 

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 software que entregamos, assumimos a responsabilidade de não apenas oferecer suporte, mas também de lidar com questões críticas, como a segurança.

O Red Hat Trusted Software Supply Chain ajuda as empresas 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 do desenvolvedor prontas para uso, recursos de CI/CD e foco em segurança garantem uma cadeia de suprimentos de software eficiente e segura. Ele é uma abrangente plataforma de aplicações baseada em Kubernetes que ajuda as empresas a criar, implantar, executar, gerenciar e oferecer segurança a aplicações inovadoras, em 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 criar e operar a automação da TI em escala, priorizando a segurança em todo o ciclo de vida de desenvolvimento do 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 responder às ameaças de maneira coordenada, com suporte em tempo integral. Além disso, o Red Hat Ansible oferece diversas integrações de segurança compatíveis com as soluções da Red Hat e de seus parceiros de tecnologia de segurança.

Leitura recomendada

ARTIGO

O que é DevSecOps?

Se você quiser aproveitar ao máximo a agilidade e a capacidade de resposta do DevOps, a equipe de segurança da TI precisará participar de todo o ciclo de vida das suas aplicações.

ARTIGO

O que é CI/CD?

A prática de CI/CD aplica monitoramento e automação contínuos a todo o ciclo de vida das aplicações, desde as etapas de teste e integração até a entrega e a implantação.

ARTIGO

O que faz o engenheiro de DevOps?

O engenheiro de DevOps é um profissional que reúne uma combinação única de habilidades e tem o conhecimento especializado para promover mudanças em termos de colaboração, inovação e cultura dentro da empresa.  

Leia mais sobre DevOps

Soluções Red Hat

Um programa de residência imersiva com especialistas da Red Hat, no qual você aprende a usar uma metodologia ágil e ferramentas open source para solucionar problemas empresariais.

Os consultores estratégicos da Red Hat fornecem uma visão geral da sua organização, analisam os desafios e ajudam a superá-los com soluções abrangentes e econômicas.

Conteúdo adicional