SEC11-BP02 Automatizar o teste durante o ciclo de vida de desenvolvimento e lançamento - AWS Well-Architected Framework

SEC11-BP02 Automatizar o teste durante o ciclo de vida de desenvolvimento e lançamento

Automatize o teste das propriedades de segurança durante o ciclo de vida de desenvolvimento e lançamento. Com a automação, é mais fácil identificar de forma consistente e repetível possíveis problemas no software antes do lançamento, o que reduz o risco de problemas de segurança no software que está sendo fornecido.

Resultado esperado: o objetivo do teste automatizado é oferecer uma forma programática de detectar possíveis problemas precocemente e com frequência ao longo do ciclo de vida de desenvolvimento. Ao automatizar o teste de regressão, você pode executar novamente testes funcionais e não funcionais para verificar se o software testado anteriormente ainda funciona da forma esperada após uma alteração. Ao definir testes de unidade de segurança para conferir configurações incorretas comuns, como uma autenticação ausente ou danificada, é possível identificar e resolver esses problemas logo no início do processo de desenvolvimento.

A automação de testes utiliza casos de teste para um propósito específico para validação de aplicações, com base nos requisitos e na funcionalidade desejada da aplicação. O resultado dos testes automatizados baseia-se na comparação da saída do teste gerado com a respectiva saída esperada, o que acelera o ciclo de vida dos testes em geral. As metodologias de teste, como teste de regressão e pacotes de teste de unidade, são mais adequadas para automação. A automação dos testes de propriedades de segurança possibilita aos criadores receber feedback automatizado sem precisar esperar por uma avaliação da segurança. Os testes automatizados em forma de análise de código estático ou dinâmico podem melhorar a qualidade do código e ajudar a detectar possíveis problemas de software no ciclo de vida de desenvolvimento.

Antipadrões comuns:

  • Não comunicar os casos de teste e os resultados dos testes automatizados.

  • Realizar os testes automatizados somente antes de um lançamento.

  • Automatizar casos de teste com requisitos que mudam com frequência.

  • Não fornecer orientações sobre como abordar os resultados dos testes de segurança.

Benefícios do estabelecimento desta prática recomendada:

  • Redução da dependência de pessoas que avaliam as propriedades de segurança dos sistemas.

  • Descobertas consistentes em vários fluxos de trabalho que melhoram a consistência.

  • Redução da probabilidade de introduzir problemas de segurança no software de produção.

  • Redução do período de tempo entre a detecção e a correção devido à detecção mais antecipada de problemas de software.

  • Maior visibilidade do problema sistêmico ou repetido entre os vários fluxos de trabalho, o que pode ser utilizado para promover melhorias em toda a organização.

Nível de exposição a riscos se esta prática recomendada não for estabelecida: médio

Orientação de implementação

Ao criar um software, adote vários mecanismos de teste para garantir que você esteja testando os requisitos funcionais da aplicação, com base na respectiva lógica de negócios e em requisitos não funcionais, os quais se concentram na confiabilidade, performance e segurança da aplicação.

O teste de segurança de aplicação estática (SAST) analisa padrões de segurança anômalos no código-fonte e fornece indicações de código propenso a defeitos. O SAST depende de entradas estáticas, como documentação (especificação de requisitos, documentação e especificações de design) e código-fonte da aplicação, para testar uma série de problemas de segurança conhecidos. Os analisadores de código estático podem ajudar a acelerar a análise de grandes volumes de código. O NIST Quality Group oferece uma comparação de analisadores de segurança de código-fonte, o que inclui ferramentas de código aberto para leitores de código de byte e leitores de código binário.

Complemente seu teste estático com metodologias de teste de segurança de análise dinâmica (DAST), que realizam testes na aplicação em execução a fim de identificar comportamento possivelmente inesperado. O teste dinâmico pode ser utilizado para detectar possíveis problemas que não são detectáveis por meio de análise estática. Por meio dos testes nos estágios de repositório de código, compilação e pipeline, é possível impedir que diferentes tipos de problema em potencial ocorram no código. O Amazon CodeWhisperer oferece recomendações de código, como verificação de segurança, no IDE do criador. O Amazon CodeGuru Reviewer pode identificar problemas críticos, problemas de segurança e bugs difíceis de detectar durante o desenvolvimento da aplicação e oferece recomendações para melhorar a qualidade do código.

O workshop Segurança para desenvolvedores utiliza ferramentas de desenvolvedor da AWS, como AWS CodeBuild, AWS CodeCommit e AWS CodePipeline, para automação de pipeline de lançamento que inclui as metodologias de teste SAST e DAST.

À medida que você avançar no SDLC, estabeleça um processo iterativo que inclua avaliações de aplicação periódicas com sua equipe de segurança. O feedback coletado dessas avaliações de segurança deve ser abordado e validado como parte de sua avaliação de prontidão do lançamento. Essas avaliações estabelecem um procedimento de segurança robusto de aplicações e fornecem aos criadores feedback útil para resolver possíveis problemas.

Etapas da implementação

  • Implementar um IDE consistente, análise de código e ferramentas de CI/CD que incluam teste de segurança.

  • Considerar quando no SDLC é adequado bloquear pipelines em vez de apenas notificar os criadores de que problemas precisam ser corrigidos.

  • O workshop Segurança para desenvolvedores fornece um exemplo de como integrar testes estáticos e dinâmicos a um pipeline de lançamento.

  • Realizar testes ou análise de código com ferramentas automatizadas, como o Amazon CodeWhisperer integrado a IDEs de desenvolvedores e o Amazon CodeGuru Reviewer para verificação do código na confirmação, ajuda os criadores a obter feedback no momento certo.

  • Ao criar com o AWS Lambda, é possível usar o Amazon Inspector para verificar o código de aplicação em suas funções.

  • O workshop CI/CD na AWS fornece um ponto de partida para criar pipelines de CI/CD na AWS.

  • Quando testes automatizados são incluídos em pipelines de CI/CD, você precisa usar um sistema de emissão de tíquetes para rastrear a notificação e a correção de problemas de software.

  • Para testes de segurança que podem gerar descobertas, a vinculação com orientações para correção ajuda os criadores a melhorar a qualidade do código.

  • Analise regularmente as descobertas das ferramentas automatizadas para priorizar a próxima automação, o treinamento de criadores ou a campanha de conscientização.

Recursos

Documentos relacionados:

Vídeos relacionados:

Exemplos relacionados: