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-secretsnos 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-secretsnos repositóriosIaCpara 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
tflintpara verificação de conformidade e aplicação das melhores práticas, eterraform fmteterraform validatepara 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” deSuccessfulouSuccessful with issuese transfere a etiqueta de inventário<target-environment>_latestpara 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-secretsem 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.