Ferramentas de DevSecOps
As ferramentas de DevSecOps que protegem os fluxos de trabalho de DevOps
Kev Zettler
Desenvolvedor web full stack
Apesar dos esforços das empresas de software, falhas de segurança ainda ocorrem. Desde 2000, cerca de 3,5 bilhões de pessoas viram seus dados pessoais serem roubados. Parte do problema é que, quando os aplicativos de software crescem em escala e complexidade da base de código, o mesmo acontece com as áreas propensas a vulnerabilidades e explorações de segurança.
Além disso, à medida que mais empresas adotam uma abordagem de DevOps, que automatiza e integra os processos entre as equipes de desenvolvimento de software e de TI, as ferramentas de segurança tradicionais em geral não são mais adequadas. Hoje, os desenvolvedores precisam incorporar medidas de segurança em todas as etapas do fluxo de trabalho de desenvolvimento. Quando se trata da segurança dos fluxos de trabalho de DevOps, essa prática é conhecida como DevSecOps.
O que é o DevSecOps?
DevSecOps é a prática de integrar a segurança no pipeline de integração contínua, entrega contínua e implementação contínua. Ao incorporar valores do DevOps na segurança de software, a verificação de segurança se torna uma parte ativa e integrada do processo de desenvolvimento.
Assim como o DevOps, o DevSecOps é uma metodologia organizacional e técnica que combina fluxos de trabalho de gestão de projetos com ferramentas de TI automatizadas. O DevSecOps integra auditorias de segurança ativas e testes de segurança em fluxos de trabalho de desenvolvimento ágil e DevOps para que a segurança seja incorporada ao produto, em vez de aplicada a um produto acabado.
Para implementar o DevSecOps, as equipes devem:
- Introduzir a segurança em todo o ciclo de vida do desenvolvimento de software para minimizar vulnerabilidades no código do software.
- Garantir que toda a equipe de DevOps, incluindo desenvolvedores e equipes de operações, divida a responsabilidade de seguir as melhores práticas de segurança.
- Habilitar verificações de segurança automatizadas em cada estágio da entrega de software, integrando controles de segurança, ferramentas e processos ao fluxo de trabalho do DevOps.
Com o DevSecOps, a segurança deve ser aplicada em cada fase do pipeline comum de DevOps: panejamento, build, teste, implementação, operação e observação.
A continuidade é uma característica diferenciada de um pipeline de DevOps. Isso inclui integração contínua, entrega/implementação contínua (CI/CD), feedback contínuo e operações contínuas. Em vez de testes pontuais ou implementações agendadas, cada função ocorre de forma contínua.
Material relacionado
Saiba mais sobre o Snyk para Bitbucket Cloud
Ver solução
Obtenha o Snyk para Bitbucket Cloud
Planeje
A fase de planejamento é a fase menos automatizada do DevSecOps e envolve colaboração, discussão, revisão e estratégia de análise de segurança. As equipes devem fazer uma análise de segurança e criar um plano que descreva onde, como e quando os testes de segurança vão ser feitos. Uma ferramenta de planejamento muito popular no DevSecOps é o IriusRisk, uma ferramenta de design colaborativa para modelagem de ameaças. Outras ferramentas incluem as de gerenciamento e rastreamento de itens como o Jira, e as de comunicação e bate-papo como o Slack.
Compilação
A fase de compilação começa quando os desenvolvedores confirmam o código no repositório de origem. As ferramentas de compilação de DevSecOps se concentram na análise automatizada de segurança em relação ao artefato de saída do build. Práticas de segurança importantes incluem análise de componentes de software, teste de software de aplicativo estático (SAST) e testes de unidade. As ferramentas podem ser conectadas a um pipeline de CI/CD existente para automatizar esses testes.
Os desenvolvedores instalam e desenvolvem com regularidade dependências de código de terceiros, que podem vir de fontes desconhecidas ou não confiáveis. Dependências de código externo podem incluir, de modo acidental ou com más intenções, vulnerabilidades e explorações. Durante a fase de compilação, é fundamental revisar e verificar essas dependências em busca de vulnerabilidades de segurança.
Algumas ferramentas conhecidas para executar a análise de fase de compilação incluem: OWASP Dependency-Check, SonarQube, SourceClear, Retire.js, Checkmarx e Snyk.
As ferramentas DevSecOps para a fase de codificação ajudam os desenvolvedores a escrever códigos mais seguros. Práticas de segurança importantes para a fase de codificação incluem análise de código estático, revisões de código e ganchos de pré-confirmação.
Quando as ferramentas de segurança se conectam direto ao fluxo de trabalho do Git que os desenvolvedores já têm, cada confirmação ou mesclagem aciona automaticamente um teste ou revisão de segurança. Essas ferramentas são compatíveis com diferentes linguagens de programação e ambientes de desenvolvimento integrados. Algumas das ferramentas populares de código de segurança incluem Gerrit, Phabricator, SpotBugs, PMD, CheckStyle e Find Security Bugs.
Teste
A fase de teste é acionada depois que um artefato de compilação é criado e implementado com sucesso em ambientes de staging ou teste. A execução de um conjunto de testes abrangente leva um tempo considerável. Essa fase deve falhar rapidamente para que as tarefas de teste mais caras sejam deixadas para o fim.
A fase de teste usa ferramentas de teste dinâmico de segurança de aplicativos (DAST) para detectar fluxos de aplicativos em tempo real, como autenticação de usuário, autorização, SQL injection e endpoints relacionados à API. O DAST focado em segurança analisa um aplicativo em relação a uma lista de problemas de alta gravidade conhecidos, como aqueles listados no OWASP Top 10.
Existem várias ferramentas de teste de código aberto e pagas disponíveis, que oferecem uma série de funcionalidades e suporte a ecossistemas de linguagem, entre elas, BDD Automated Security Tests, JBroFuzz, Boofuzz, OWASP ZAP, Arachi, IBM AppScan, GAUNTLT e SecApp suite.
Implementação
Se as fases anteriores forem aprovadas, é hora de implementar o artefato de build na produção. As áreas de segurança abordadas na fase de implementação são aquelas que só acontecem com o sistema de produção ao vivo. Por exemplo, as diferenças na configuração entre o ambiente de produção e os ambientes de staging e desenvolvimento anteriores devem ser analisadas a fundo. Os certificados TLS e DRM de produção devem ser validados e revisados para renovação futura.
A fase de implementação é um bom momento para ferramentas de verificação de tempo de execução, como Oswery, Falco e Tripwire, que extraem informações de um sistema em execução para determinar se ele funciona conforme o esperado. As empresas também podem executar princípios de engenharia do caos experimentando um sistema para gerar confiança na capacidade que ele tem para suportar condições turbulentas. Eventos do mundo real podem ser simulados, como pane em servidores, falhas no disco rígido ou conexões de rede rompidas. A Netflix é bastante conhecida por sua ferramenta Chaos Monkey, que exerce os princípios de engenharia do caos. A Netflix também usa a ferramenta Security Monkey, que procura por violações ou vulnerabilidades em grupos de segurança de infraestrutura configurados incorretamente e corta os servidores vulneráveis.
Na fase de lançamento do ciclo DevSecOps, o código do aplicativo e o executável já devem ter sido testados a fundo. O foco desta fase é proteger a infraestrutura do ambiente de execução examinando valores de configuração do ambiente, como controle de acesso do usuário, acesso a firewall de rede e gerenciamento de dados secretos.
O princípio do menor privilégio (PoLP, na sigla em inglês) é uma das principais preocupações da fase de lançamento. O PoLP pretende que qualquer usuário, programa ou processo tenha acesso mínimo para executar a função. Isso envolve a auditoria de chaves de API e tokens de acesso para que os proprietários tenham acesso limitado. Sem essa auditoria, um invasor pode encontrar uma chave que tenha acesso a áreas inesperadas do sistema.
As ferramentas de gerenciamento de configuração são um ingrediente fundamental para a segurança na fase de lançamento, pois dão visibilidade da configuração estática de uma infraestrutura dinâmica. Assim, a configuração do sistema pode ser auditada e revisada. A configuração se torna imutável e só pode ser atualizada com confirmações em um repositório de gerenciamento de configuração. Algumas ferramentas populares de gerenciamento de configuração incluem Ansible, Puppet, HashiCorp Terraform, Chef e Docker.
A comunidade de segurança oferece diretrizes e recomendações de melhores práticas para reforçar a infraestrutura, como os parâmetros do Center for Internet Security (CIS) e as listas de verificação de configuração do NIST.
Observações
Depois que um aplicativo é implementado e estabilizado em um ambiente de produção ao vivo, outras medidas de segurança são necessárias. As empresas precisam monitorar e observar o aplicativo ao vivo em busca de ataques ou vazamentos com verificações de segurança automatizadas e ciclos de monitoramento de segurança.
A autoproteção de aplicativos em tempo de execução (RASP) identifica e bloqueia automaticamente a entrada de ameaças de segurança em tempo real. A RASP atua como um proxy reverso, que observa ataques recebidos e permite que o aplicativo se reconfigure automaticamente, sem intervenção humana, em resposta a condições explícitas.
Uma equipe interna ou externa especializada pode realizar testes de intrusão para encontrar explorações ou vulnerabilidades comprometendo de maneira deliberada um sistema. Outra técnica de segurança é oferecer um programa de recompensas por bugs, que paga indivíduos externos que relatam explorações e vulnerabilidades de segurança.
O monitoramento de segurança usa dados de análise para equipar e monitorar métricas essenciais relacionadas à segurança. Por exemplo, essas ferramentas sinalizam solicitações para endpoints públicos confidenciais, como formulários de acesso de conta de usuário ou endpoints de banco de dados. Alguns exemplos de ferramentas populares de defesa em tempo de execução incluem Imperva RASP, Alert Logic e Halo.
Conclusão...
À medida que mais equipes de desenvolvimento aprimoram os processos e adotam novas ferramentas, elas precisam ter cuidado com a segurança. O DevSecOps é um processo cíclico e deve ser iterado com continuidade e aplicado em toda nova implementação de código. As explorações e os invasores estão sempre evoluindo, e é importante que as equipes de software modernas também evoluam.
Um bom lugar para começar o teste de DevSecOps é automatizando seus testes com o Bitbucket Pipelines. Além disso, não deixe de revisar as ferramentas e os recursos de automação de testes disponíveis no Atlassian Marketplace.
Compartilhar este artigo
Próximo tópico
Leitura recomendada
Marque esses recursos para aprender sobre os tipos de equipes de DevOps ou para obter atualizações contínuas sobre DevOps na Atlassian.