Melhores práticas para cadeias de ferramentas d DevSecOps

As seções a seguir descrevem as melhores práticas para cada cadeia de ferramentas do DevSecOps: integração contínua (CI), CI para infraestrutura como código ( IaC ), implantação contínua (CD) e conformidade contínua (CC).

Melhores práticas para a cadeia de ferramentas de integração contínua (CI)

A cadeia de ferramentas de CI do DevSecOps segue estas práticas:

  • Executa o detect-secrets nos repositórios de aplicativos para evitar vazamentos de segredos no código-fonte dos aplicativos.
  • Executa testes de unidade e testes de aplicação no código do aplicativo.
  • Executa verificadores de código estáticos nos repositórios das aplicações para identificar vulnerabilidades de segurança no código-fonte.
  • Realiza verificações de conformidade utilizando ferramentas de análise de conformidade, como o Code Risk Analyzer, em todos os repositórios de aplicativos, incluindo a verificação de vulnerabilidades e uma verificação da Lista de Materiais (BOM) em todas as dependências dos pacotes.
  • Coleta dados de conformidade sobre revisões por pares para todas as solicitações de pull mescladas desde a última compilação.
  • Gera uma imagem de contêiner a cada commit no Git, definindo uma tag com base no número da compilação, no carimbo de data/hora e no ID do commit para fins de rastreabilidade.
  • Assina a imagem do contêiner compilada.
  • Verifica se há vulnerabilidades de segurança na imagem do contêiner.
  • Implanta o artefato compilado em um ambiente de desenvolvimento e executa uma varredura dinâmica (varreduras via API e interface do usuário do ZAP) na aplicação em execução para detectar vulnerabilidades em tempo de execução.
  • Executa testes de aceitação e integração no artefato implantado no ambiente de desenvolvimento.
  • Reúne todas as evidências (resultados de varreduras, resultados de testes, registros, dados de revisão por pares e dados de execução do pipeline) em um repositório de evidências ao final de cada execução do pipeline.

Melhores práticas para a integração contínua (CI) na cadeia de ferramentas de infraestrutura como código ( IaC )

A infraestrutura de integração contínua (CI) do DevSecOps para a cadeia de ferramentas IaC segue estas práticas:

  • Executa o detect-secrets nos repositórios IaC para evitar vazamentos de segredos na configuração do Terraform.
  • Executa testes unitários na configuração IaC a cada commit no Git.
  • Executa uma verificação estática de código nos repositórios do IaC, incluindo ferramentas específicas do Terraform, como tflint para verificação de conformidade e aplicação das melhores práticas, e terraform fmt e terraform validate para garantir a consistência da formatação e a validade da configuração.
  • Executa verificações de conformidade nos repositórios do IaC utilizando ferramentas do IaC-specific (como o Code Risk Analyzer ou o checkov) para detectar problemas de conformidade.
  • Gera um arquivo Tar contendo a configuração do Terraform a cada commit no Git.
  • Assina o artefato Tar compilado.
  • Implemente a configuração do IaC em um ambiente de desenvolvimento usando IBM Cloud Schematics ou a CLI do Terraform.
  • Executa testes de aceitação e integração na configuração implantada no ambiente de desenvolvimento.
  • Adiciona os artefatos compilados ao repositório de inventário para fins de rastreabilidade e implantação em ambientes posteriores.
  • Reúne todas as evidências (resultados de varredura, resultados de testes, dados de assinatura, registros e dados de execução do pipeline) em um repositório de evidências ao final de cada execução do pipeline.

Melhores práticas para a cadeia de ferramentas de implantação contínua (CD) na implantação de um aplicativo seguro

Para implantar um aplicativo seguro, a cadeia de ferramentas de CD do DevSecOps segue estas práticas:

  • Utiliza um pull request de promoção no repositório de inventário para definir o escopo da implantação e calcular o delta da implantação, que é o conjunto de artefatos que sofreram alterações desde a última implantação concluída.
  • Verifica se todas as solicitações de pull no escopo da implantação atual foram revisadas por pares e aprovadas antes de prosseguir. Interrompe a implantação se alguma solicitação de pull não estiver aprovada.
  • Verifica se todos os artefatos programados para implantação estão corretamente assinados. Bloqueia a implantação caso falte uma assinatura válida.
  • Calcula a lista de materiais (BOM) da implantação a partir do delta da implantação e coleta um resumo de evidências tanto da execução do pipeline de CI associado quanto da execução atual do pipeline de CD.
  • Cria uma solicitação de mudança no sistema de gerenciamento de mudanças configurado e anexa a lista de materiais (BOM) da implantação, o resumo das evidências e os dados de conformidade da revisão por pares.
  • Aprova automaticamente a solicitação de alteração se todos os critérios de conformidade forem atendidos. Permite a aprovação manual ou a marcação de emergência quando os critérios não forem totalmente atendidos.
  • Implemente os artefatos do inventário no ambiente de destino (como o ambiente de teste ou de produção) assim que a solicitação de mudança for aprovada ou marcada como emergência.
  • Executa testes de aceitação e integração após a implantação para verificar se a implantação foi bem-sucedida e se o aplicativo está funcionando conforme o esperado.
  • Revoga automaticamente a implantação na mesma execução do pipeline caso ocorra uma falha durante a fase de implantação ou de teste de aceitação, preservando o último estado válido conhecido no inventário.
  • Encerra a solicitação de alteração com um “ close_category ” de Successful ou Successful with issues e transfere a etiqueta de inventário <target-environment>_latest para o commit implantado.
  • Reúne e envia todos os arquivos de log, artefatos e evidências para o repositório de evidências ao final de cada execução do pipeline.
  • Opcionalmente, atribui a etiqueta “ deploy:{region}:{env} ” às solicitações de pull mescladas após uma implantação bem-sucedida, a fim de proporcionar rastreabilidade da implantação de ponta a ponta sem exigir acesso aos detalhes do pipeline.

Melhores práticas para a cadeia de ferramentas de conformidade contínua (CC)

A cadeia de ferramentas de verificação de conformidade (CC) do DevSecOps segue estas práticas:

  • Executa o detect-secrets em todos os repositórios de código-fonte do inventário para identificar vazamentos de segredos no código-fonte do aplicativo.
  • Executa uma verificação estática de código ( SonarQube ou implementação personalizada) em todos os repositórios de código-fonte encontrados no inventário.
  • Executa uma varredura dinâmica de testes de segurança de aplicativos (OWASP ZAP) no aplicativo implantado para identificar vulnerabilidades em tempo de execução.
  • Realiza verificações de conformidade utilizando ferramentas (como o Code Risk Analyzer) em todos os repositórios de código-fonte do inventário, incluindo varredura de vulnerabilidades, verificações de “ CIS ” nos manifestos de implantação do Kubernetes, verificações de lista de materiais (BOM) em todas as dependências de pacotes e verificação da proteção de ramificações.
  • Verifica todas as imagens de contêineres implantadas em busca de vulnerabilidades de segurança.
  • Cria ou atualiza tickets de incidente para cada CVE, vulnerabilidade ou alerta identificado durante a execução do pipeline e define uma data de vencimento para cada ticket.
  • Reúne as evidências de cada etapa no repositório de evidências, anexa a digitalização e os resultados da verificação às questões correspondentes e atualiza o status de conformidade de todos os artefatos digitalizados.