Introdução
As práticas de DevOps permitem que as equipes de desenvolvimento implantem aplicativos com mais rapidez e frequência. No entanto, a velocidade sem segurança cria risco. Avançar rapidamente em direção a uma vulnerabilidade de segurança não ajuda sua empresa. O desafio é manter a velocidade, garantindo que os aplicativos permaneçam seguros durante todo o ciclo de vida.
O desafio de segurança no desenvolvimento moderno
As equipes de DevOps têm acesso à infraestrutura e escala sem precedentes por meio de plataformas de nuvem. Essa acessibilidade traz oportunidades, mas também expõe as organizações a ameaças de segurança sofisticadas. Cada implantação de aplicativos potencialmente arrisca a segurança dos negócios, os dados do cliente e a reputação organizacional.
As abordagens de segurança tradicionais falham em ambientes modernos: Modelos de segurança baseados em perímetro que protegiam data centers com firewalls e controles de rede não se traduzem em ambientes de nuvem distribuída. Os aplicativos abrangem vários serviços, regiões e provedores de nuvem. Fluxos de dados entre microsserviços, APIs e integrações externas. A abordagem tradicional de castelo e fosso já não oferece proteção adequada.
A segurança moderna requer várias camadas de defesa: As organizações devem adotar a segurança em vários níveis, incluindo código do aplicativo, infraestrutura, rede, dados e identidade. A segurança não pode existir como um único ponto de verificação. Ele deve ser incorporado em todo o stack com várias oportunidades para detectar e prevenir ameaças.
A abordagem DevSecOps
Como garantir que os aplicativos estejam seguros e se mantenham seguros com a integração contínua e a entrega contínua? Como você pode encontrar e corrigir problemas de segurança no início do processo de desenvolvimento? A resposta está em práticas comumente conhecidas como DevSecOps.
Segurança como responsabilidade compartilhada: O DevSecOps incorpora as equipes de segurança e suas funcionalidades em suas práticas de DevOps, tornando a segurança responsabilidade de todos na equipe em vez de uma função separada. Desenvolvedores, engenheiros de operações e especialistas em segurança colaboram durante todo o ciclo de vida de desenvolvimento.
Deslocar a segurança para a esquerda: A segurança precisa deixar de ser uma reflexão tardia avaliada apenas no fim do desenvolvimento e passar a ser uma consideração em cada etapa do processo. Essa abordagem de "shift left" identifica problemas de segurança cedo, quando são mais fáceis e menos caros de corrigir. Uma vulnerabilidade encontrada durante a revisão de código custa muito menos do que uma descoberta na produção.
Segurança como um processo contínuo
Proteger aplicativos é um processo contínuo que abrange várias áreas:
Infraestrutura segura: Crie bases seguras, incluindo sistemas operacionais protegidos, redes configuradas corretamente, armazenamento criptografado e gerenciamento seguro de identidade.
Arquitetura com segurança em camadas: Crie aplicativos com segurança integrada à arquitetura. Implemente a defesa em profundidade com várias camadas de segurança para que, se um controle falhar, outros permaneçam eficazes.
Validação de segurança contínua: Automatize o teste de segurança em todo o pipeline. Execute verificações de segurança, avaliações de vulnerabilidade e verificações de conformidade como parte da integração e implantação contínuas.
Monitoramento e resposta: Monitore aplicativos em produção para ameaças à segurança e comportamento anômalo. Responda rapidamente a problemas detectados com correção automatizada sempre que possível.
Abordagem de segurança holística: A segurança é responsabilidade de todos e deve ser tratada de forma holística em todo o ciclo de vida do aplicativo desde o design inicial até a operação de produção e o eventual descomissionamento.
O que este módulo aborda
Este módulo apresenta conceitos e práticas do DevSecOps que integram a segurança em todo o ciclo de vida de desenvolvimento:
Vulnerabilidades comuns: Você aprenderá sobre ataques de injeção de SQL, uma das vulnerabilidades de segurança mais frequentes e perigosas. Entender como esses ataques funcionam ajuda você a impedi-los em seus aplicativos.
Princípios de DevSecOps: Você entenderá como o DevSecOps difere das abordagens de segurança tradicionais e como integrar práticas de segurança aos fluxos de trabalho existentes do DevOps sem sacrificar a velocidade de desenvolvimento.
Segurança do pipeline: Você descobrirá pontos de validação críticos no pipeline de CI/CD em que as verificações de segurança devem ocorrer. Saiba como implementar testes de segurança automatizados que capturam vulnerabilidades antes de chegarem à produção.
Modelagem de ameaças: Você aprenderá abordagens sistemáticas para identificar, avaliar e priorizar ameaças à segurança. A modelagem de ameaças ajuda você a concentrar os esforços de segurança nos riscos mais significativos para seus aplicativos e negócios.
Análise de segurança automatizada: Você explorará ferramentas como o GitHub CodeQL que fornecem análise de segurança automatizada. Essas ferramentas verificam o código em busca de vulnerabilidades e padrões de segurança, permitindo que você encontre problemas antecipadamente sem revisões manuais de segurança para cada alteração de código.
Acelerando as equipes de segurança: Os pipelines de integração e implantação contínuas podem acelerar o trabalho das equipes de segurança automatizando verificações de segurança repetitivas e melhorando a colaboração com as equipes de desenvolvimento de software. As equipes de segurança podem se concentrar em ameaças complexas em vez de revisão manual de alterações rotineiras.
Objetivos de aprendizagem
Ao final deste módulo, você poderá:
- Identifique e entenda os ataques de injeção de SQL e seu impacto na segurança do aplicativo.
- Explique os princípios de DevSecOps e como a segurança se integra em todo o ciclo de vida de desenvolvimento.
- Implemente a validação de segurança em pontos-chave no pipeline do DevOps.
- Realize a modelagem de ameaças para identificar e priorizar os riscos de segurança.
- Use o GitHub CodeQL para análise de segurança automatizada e detecção de vulnerabilidades.
Pré-requisitos
- Noções básicas sobre conceitos e práticas do DevOps.
- Familiaridade com a integração contínua e fluxos de desdobramento contínuo.
- Conhecimento básico do desenvolvimento de aplicativos e conceitos comuns de segurança.
- Experiência com sistemas de controle de versão como o Git.
- Benéfico para ter experiência em uma organização que fornece software.