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 para uma vulnerabilidade de segurança não ajuda a sua empresa. O desafio é manter a velocidade e, ao mesmo tempo, garantir que os aplicativos permaneçam seguros durante todo o seu ciclo de vida.
O desafio da segurança no desenvolvimento moderno
As equipes de DevOps têm acesso a uma infraestrutura sem precedentes e escalam por meio de plataformas de nuvem. Esta acessibilidade traz oportunidades, mas também expõe as organizações a ameaças de segurança sofisticadas. Toda implantação de aplicativo potencialmente coloca em risco a segurança dos negócios, os dados dos clientes e a reputação organizacional.
As abordagens de segurança tradicionais falham em ambientes modernos: Os modelos de segurança baseados em perímetro que protegiam centros de dados com firewalls e controlos de rede não se traduzem em ambientes de nuvem distribuídos. 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 tradicional abordagem 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 de 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 toda a pilha com várias oportunidades para detetar e prevenir ameaças.
A abordagem DevSecOps
Como você garante que os aplicativos sejam seguros e permaneçam seguros com integração contínua e entrega contínua? Como você pode encontrar e corrigir problemas de segurança no início do processo de desenvolvimento? A resposta está nas práticas comumente referidas como DevSecOps.
A segurança como responsabilidade partilhada: O DevSecOps incorpora equipes de segurança e seus recursos em suas práticas de DevOps, tornando a segurança 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 do desenvolvimento.
Deslocar a segurança para a esquerda: A segurança precisa passar de uma reflexão posterior avaliada no final do desenvolvimento para uma consideração em cada etapa do processo. Esta abordagem de "mudança para a esquerda" deteta problemas de segurança precocemente quando são mais fáceis e menos dispendiosos de corrigir. Uma vulnerabilidade encontrada durante a revisão de código custa muito menos do que uma descoberta em produção.
Segurança como processo contínuo
A proteção de aplicativos é um processo contínuo que abrange várias áreas:
Infraestrutura segura: Construa com base em bases seguras, incluindo sistemas operacionais protegidos, redes configuradas corretamente, armazenamento criptografado e gerenciamento seguro de identidades.
Arquitetura com segurança em camadas: Projete aplicações com segurança incorporada na 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 os testes de segurança em todo o seu 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.
Acompanhamento e resposta: Monitore aplicativos em produção em busca de ameaças à segurança e comportamento anômalo. Responda rapidamente aos problemas detetados com a correção automatizada sempre que possível.
Abordagem holística de segurança: A segurança é responsabilidade de todos e deve ser abordada de forma holística em todo o ciclo de vida do aplicativo, desde o projeto inicial até a operação de produção e eventual descomissionamento.
O que este módulo abrange
Este módulo apresenta conceitos e práticas de DevSecOps que integram a segurança durante todo o ciclo de vida do seu desenvolvimento:
Vulnerabilidades comuns: Você aprenderá sobre os ataques de injeção de SQL, uma das vulnerabilidades de segurança mais prevalentes e perigosas. Entender como esses ataques funcionam ajuda a evitá-los em seus aplicativos.
Princípios do DevSecOps: Você entenderá como o DevSecOps difere das abordagens de segurança tradicionais e como integrar práticas de segurança em seus fluxos de trabalho de DevOps existentes sem sacrificar a velocidade de desenvolvimento.
Segurança do pipeline: Irá descobrir pontos críticos de validação no seu pipeline de CI/CD onde as verificações de segurança devem ocorrer. Saiba como implementar testes de segurança automatizados que detetam vulnerabilidades antes que elas cheguem à 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 contínuos de integração e implantação podem realmente 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 da revisão manual de alterações de rotina.
Objetivos de aprendizagem
Depois de concluir este módulo, você será capaz de:
- Identifique e compreenda os ataques de injeção de SQL e seu impacto na segurança do aplicativo.
- Explique os princípios do DevSecOps e como a segurança se integra durante todo o ciclo de vida do desenvolvimento.
- Implemente a validação de segurança em pontos-chave do seu pipeline de DevOps.
- Conduza a modelagem de ameaças para identificar e priorizar riscos de segurança.
- Use o GitHub CodeQL para análise de segurança automatizada e deteção de vulnerabilidades.
Pré-requisitos
- Compreensão dos conceitos e práticas de DevOps.
- Familiaridade com integração contínua e pipelines de implantação contínua.
- Conhecimento básico de desenvolvimento de aplicações e conceitos comuns de segurança.
- Experiência com sistemas de controle de versão como Git.
- Benéfico ter experiência em uma organização que entrega software.