In this article
Boas práticas para incentivar a adoção de ferramentas e processos de segurança pelos desenvolvedores
Introdução à adoção de práticas de segurança por desenvolvedores
É amplamente aceito que, para ampliar a segurança de aplicações nas organizações modernas, é preciso incorporá-la diretamente aos fluxos de trabalho de desenvolvimento, como parte natural do processo ágil e do pipeline de DevOps. Mas isso é muito mais fácil na teoria do que na prática e traz muitos desafios relacionados à aceitação e à adoção por desenvolvedores e equipes de desenvolvimento. Este white paper reúne aprendizados de conversas com diversas organizações que têm programas de DevSecOps em diferentes níveis de maturidade. O ponto em comum entre todas as pessoas e equipes com quem conversamos era o desejo de que as equipes de desenvolvimento adotassem práticas de desenvolvimento seguro como parte de seus fluxos de trabalho.
Vale destacar que nenhum dos grupos com quem conversamos trabalha da mesma forma. Também é importante dizer que o que funciona bem em uma organização pode não funcionar tão bem em outra, já que muitos fatores podem influenciar o sucesso dessas práticas. Cabe a você, leitor, identificar neste documento as práticas e abordagens que acredita serem mais adequadas à sua organização, cultura e equipes.
A segurança para desenvolvedores exige cultura, processos e ferramentas
Cultura
1. Tenha empatia pelas equipes de desenvolvimento
Entenda a disposição geral delas para mudanças.
Identifique quais equipes e projetos têm mais chances de adotar tecnologias e processos de desenvolvimento modernos e quais resistem a mudanças.
Avalie com que clareza estão definidas a responsabilidade e as atribuições pelos projetos.
Entenda a capacidade das equipes para entregar resultados e realizar outras tarefas, como cuidar do desempenho, da confiabilidade etc.
2. Adote prioridades de segurança definidas pela liderança
Deixe claro quando as prioridades vêm da empresa.
As equipes de segurança devem ajudar as equipes de desenvolvimento a atender às prioridades de segurança da empresa, em vez de sobrecarregá-las com mais tarefas.
3. Promova a colaboração entre desenvolvimento e segurança
Considere criar um programa de security champions ou uma comunidade de segurança para facilitar a colaboração.
Trabalhe com os desenvolvedores para construir uma relação de confiança, em vez de usar o medo para fazer as coisas acontecerem.
Crie programas compartilhados e estabeleça objetivos comuns para as equipes de segurança e desenvolvimento.
Identifique os responsáveis nas equipes de desenvolvimento para que as equipes de segurança possam fazer solicitações pertinentes.
4. Capacite as equipes para desenvolver com segurança
Capacite as equipes antes de lançar programas.
Reconheça que certos treinamentos não são relevantes para todas as equipes.
Treine as equipes sobre as vulnerabilidades específicas que as afetam, usando incidentes anteriores como exemplos.
Acompanhe a capacitação por meio de scorecards.
Transforme a capacitação em um jogo sempre que possível.
5. Recompense e reconheça
Destaque as conquistas e melhorias de segurança de cada pessoa.
Destaque os sucessos das equipes e a adoção dos programas para mostrar o progresso e incentivar novas implementações.
Garanta que a liderança de engenharia reconheça as equipes e demonstre que a segurança é importante.
Ofereça brindes, presentes, viagens para conferências de segurança etc. para aumentar a conscientização.
Processos
1. Inclua os desenvolvedores nas decisões que mudam processos
Entenda como as equipes de desenvolvimento estão incorporando práticas de segurança ao pipeline e procure se adaptar aos fluxos de trabalho delas.
Ao criar novas regras ou processos de segurança, trabalhe com as equipes de desenvolvimento para definir limites e práticas de trabalho.
Garanta que as informações e a conscientização sobre qualquer mudança de processo sejam compartilhadas com bastante antecedência, por meio de blogs, documentação e plataformas de aprendizado.
2. Facilite a escolha do caminho certo
Não complique demais os processos. Trabalhe com a equipe de desenvolvimento para mantê-los simples.
Garanta que haja uma boa documentação sobre como as outras equipes trabalham e como as atividades devem ser realizadas.
Ofereça caminhos recomendados para que os desenvolvedores possam tomar a decisão certa por padrão.
Incorpore os processos aos fluxos de trabalho existentes, em vez de tentar criar novos.
Garanta que os processos (e as ferramentas) priorizem soluções, não problemas.
3. Promova a visibilidade e a transparência entre as equipes
Os scorecards são uma ótima forma de comunicar à organização o progresso e a situação da segurança.
As equipes devem se responsabilizar pelos resultados dos scorecards e priorizar a segurança de acordo com sua situação e seus planos.
Aproveite os valores dos desenvolvedores e a gamificação para incluir atividades nos sprints, usando os dados dos scorecards como justificativa.
4. Velocidade de implementação
Identifique as equipes mais abertas e adaptáveis à adoção de novos programas de segurança.
Comece por essas equipes, com uma abordagem que inicialmente exija pouca interação e priorize a visibilidade.
Inclua atividades de desenvolvimento seguro nos fluxos de trabalho, começando pela segurança das mudanças incrementais nas aplicações.
Reforce as proteções no ritmo que as equipes conseguem acompanhar, sem sobrecarregá-las com mudanças.
Identifique outras equipes para a implementação depois que as equipes pioneiras demonstrarem o valor da iniciativa.
Use as boas práticas identificadas na implementação inicial para incentivar a adoção.
Ferramentas
1. Adote ferramentas para desenvolvedores
As ferramentas de segurança para desenvolvedores precisam oferecer uma ótima experiência de autoatendimento, com integração fácil, fluxos de trabalho intuitivos e documentação clara.
As ferramentas precisam se integrar aos fluxos de trabalho existentes, incluindo IDEs, Git e pipelines.
As ferramentas precisam oferecer APIs robustas e facilitar a automação.
Procure ferramentas amplamente adotadas pelas comunidades de código aberto e de segurança.
Tente escolher uma ferramenta que cubra toda a aplicação, incluindo código próprio, bibliotecas de terceiros, contêineres, IaC etc.
As ferramentas devem priorizar a correção e a remediação, não apenas a detecção e a geração de relatórios.
2. Não sobrecarregue os desenvolvedores
Ao introduzir ferramentas em uma organização ou equipe, use-as inicialmente para dar visibilidade.
Com o tempo, reforce as regras e proteções por meio de políticas para aprimorar o processo de desenvolvimento seguro.
Ao fazer mudanças nas ferramentas, complemente-as com conscientização, comunicação, justificativas, boa documentação dos processos e capacitação.
Priorize as ferramentas para novas entregas de código e, depois, trate os problemas pendentes para reduzir a carga dos desenvolvedores.
3. Automatize tudo
A integração ao fluxo de trabalho deve ser automatizada e feita no ponto mais adequado para cada equipe.
Além dos testes no fluxo de trabalho, procure outros pontos de integração para as ferramentas, como sistemas de chamados, relatórios e alertas.
Tenha como extrair dados de relatórios das ferramentas, de preferência por uma API, para preencher os dashboards e scorecards existentes.