Explicando DevSecOps

23 de maio de 2022 // 13 min read

image

O DevSecOps é construído sobre as ideias de DevOps, aplicando práticas de segurança por todo o ciclo de vida de desenvolvimento do software para enviar códigos mais seguros mais rápido.

Por meio da colaboração, automação e melhoria contínua, o DevSecOps oferece um conjunto de práticas que ajudam as empresas a incluírem a segurança em seu trabalho para criar software mais seguro e de alta qualidade, em escala.

O DevOps transformou a maneira como muitas organizações compilam e enviam software. Mas, até recentemente, um aspecto do ciclo de vida de desenvolvimento de software (SDLC) permanecia fora do DevOps: a segurança. O DevSecOps busca corrigir isso integrando a segurança no ciclo de vida de desenvolvimento de software (SDLC) da mesma maneira que DevOps prioriza a qualidade, velocidade e colaboração profunda em todas as fases do desenvolvimento de software. Para organizações modernas, o DevSecOps torna-se apenas “DevOps”: a segurança é integrada na experiência SDLC.

Organizações que adotam o DevSecOps tipicamente encontram vantagens que incluem:

  • Risco menor de violações de dados: O DevSecOps busca mais segurança de código por design. Uma combinação de práticas culturais de código seguro, ambientes de desenvolvedor seguros e testes automatizados de segurança em todo o SDLC ajuda a reduzir a chance de vulnerabilidades de segurança ou falhas chegando ao software em produção.

  • Compliance melhor: Os praticantes de DevSecOps geralmente usam a automação para aplicar o compliance de código e integrar as ferramentas de aplicação de política diretamente na pipeline de CI/CD.

  • Maior confiança nas dependências: O stack de tecnologia moderno depende muito de códigos de terceiros, muitas vezes vindos de repositórios de pacotes públicos. Praticantes de DevSecOps frequentemente usam ferramentas e testes automatizados para identificar problemas em potencial antes de um lançamento de software.

  • O valor chega mais rápido aos usuários finais: Ao criar uma cultura de segurança em primeiro lugar e aplicar verificações automatizadas, o DevSecOps reduz a necessidade de revisões de segurança distintas que atrasam as implantações de código.

Qual é o benefício principal de DevSecOps?

O DevSecOps busca integrar a segurança em todas as etapas do SDLC. Isso significa, idealmente, que testes relacionados à segurança (automatizados ou não) acontecem em todas as fases, desde a codificação até o merge de branches e compilação e implantações, inclusive na operação do software de produção. Além disso, o DevSecOps avança a ideia de que todos trabalhando em um produto são responsáveis por sua segurança. Isso ajuda as equipes a detectarem vulnerabilidades antes delas chegarem na produção e diminui a necessidade de revisões de segurança manuais em uma fase posterior, o que pode atrasar os lançamentos de software.

Melhores práticas de DevSecOps

Mandar um código com bugs para produção e o resultado disso pode ser uma experiência ruim para o consumidor e uma potencial perda de negócios devido ao tempo fora de operação. Mas, se você implementar códigos sem segurança, a consequência pode ser ainda mais grave.

O DevSecOps é uma evolução natural do DevOps e busca fazer com que a segurança seja uma parte essencial do SDLC, em vez de um processo com pontos de isolamento que acontece logo antes de um lançamento. Assim como as equipes de operações e de teste muitas vezes estão em pontos de isolamento desde o desenvolvimento no mundo antes do DevOps, a segurança hoje em dia é o trabalho de equipes especializadas que trabalham fora do ciclo de vida de DevOps.

O DevSecOps argumenta que a segurança precisa fazer parte de todo o SDLC. Independentemente de sua organização já praticar DevOps ou se ela está pensando em como adotar uma cultura de DevOps, apresentamos aqui algumas melhores práticas de base que você precisa para estabelecer uma prática de DevSecOps:

  • Criar uma cultura DevSecOps: o sucesso do DevSecOps depende de todos assumirem a responsabilidade pela segurança. Isso significa que todas as pessoas no SDLC escrevem código, compilam, testam e configuram aplicativos e configurações de infraestrutura de maneira defensiva. Assim como em DevOps, o DevSecOps floresce em uma cultura aberta onde cada indivíduo trabalha junto para criar o melhor e mais seguro produto possível.

  • Colocar a segurança dentro do produto: o DevSecOps busca colocar a segurança dentro do produto desde as fases de planejamento inicial até o código implementado no nível de produção. Isso significa que o trabalho de segurança é planejado junto com o trabalho de recursos, e que os profissionais recebem conhecimentos de segurança e fazem testes em todas as fases do seu trabalho de desenvolvimento. O objetivo é fazer com que a segurança faça parte do dia a dia de trabalho da sua equipe.

  • Construir uma prática de modelagem de ameaças: geralmente as sementes das vulnerabilidades de segurança são plantadas antes que a linha de código seja escrita. Modele ameaças em potencial durante a fase de planejamento e projete sua infraestrutura e a arquitetura do aplicativo para mitigar esses problemas. Testes de penetração periódicos, onde uma pessoa de confiança tenta entrar no seu sistema, podem ajudar a desvendar fraquezas que a modelagem de ameaças pode deixar passar.

  • Automatize para ter velocidade e segurança: os testes automatizados são usados em todo o SDLC para garantir que as verificações de segurança certas aconteçam na hora certa. Isso dá às pessoas mais tempo para se concentrar em construir o produto principal, enquanto garante que os requisitos de segurança são atendidos.

  • Planeje pontos de verificação de segurança no seu desenvolvimento do produto: Identifique pontos de transição no seu SDLC onde o perfil de risco muda. Isso pode ser um ponto no qual o desenvolvedor faz merge do seu código no branch principal, o que pode aumentar o potencial para aquele código ser executado nas máquinas de colegas e eventualmente chegar na produção. Nesse caso, abrir um efetuar pull pode ser um bom evento acionador para verificações automatizadas de segurança, junto com as escalações manuais adequadas.

  • Trate falhas de segurança como oportunidades de aprendizado: Com base em uma cultura de melhoria contínua de DevOps, uma prática de DevSecOps bem-sucedida busca transformar incidentes de segurança em oportunidades de aprendizado. Isso pode ser realizado utilizando logs de auditoria, construindo relatórios de incidente e modelando comportamentos nocivos para melhorar as ferramentas, testes e processos, para proteger ainda mais suas aplicações e sistemas.

  • Acompanhe as dependências: Entender e mitigar as ameaças em potencial das dependências é essencial para a segurança do seu produto. Aplique a mesma modelagem de ameaças e teste automatizado para suas dependências e para seu código interno. No GitHub, identificamos e compartilhamos detalhes de dezenas de milhares de ameaças em software de código aberto, ajudando as organizações e desenvolvedores a serem mais conscientes e evitarem vulnerabilidades.

  • Crie suas capacidades de análise e relatórios: O monitoramento contínuo é parte essencial da prática de DevSecOps, e inclui alertas em tempo real, análises do sistema e monitoramento proativo de ameaças. Ao medir todos os aspectos das suas aplicações e do seu pipeline de DevSecOps, você pode criar um ponto em comum para entender a integridade da aplicação. Painéis de relatório e alertas destacam os problemas logo. Quando um problema ocorre, a telemetria configurada, que pode ser, por exemplo, um registro em relatório no nível da aplicação, oferece insights para a resolução do incidente e a análise de causa raiz.

Cultura DevSecOps

Criar uma cultura DevSecOps começa fazendo com que a segurança seja responsabilidade de todos. Isso pode ser uma grande mudança para muitas organizações. Tradicionalmente, a segurança é algo que os desenvolvedores deixam nas mãos dos profissionais especializados em segurança. Isso também pode se tornar um ponto de atrito. As equipes de engenharia muitas vezes enxergam as práticas de segurança como um impedimento para o envio rápido de software.

O DevSecOps busca mudar fundamentalmente essa percepção, fazendo com que a segurança seja tão essencial ao SDLC quanto a escrita de código, execução de testes e serviços de configuração. Cada novo recurso ou correção começa com a consideração de suas implicações de segurança. As políticas de segurança e compliance são aplicadas por todos os testes. Quando algo dá errado, é uma oportunidade de aprender e fazer melhor da próxima vez.

E, em vez de algo que atrasa o lançamento de software, a segurança em uma prática DevSecOps torna-se parte do próprio lançamento, criando implantações mais rápidas e mais seguras.

Mas criar uma prática de DevSecOps de sucesso requer a integração da segurança em todas as fases do SDLC. Isso varia de uma organização para outra. Mesmo assim, existem pilares essenciais que definem uma cultura de DevSecOps. Esses incluem:

  • Pessoas: Uma prática de DevSecOps busca remover as barreiras entre diferentes disciplinas e constrói um ambiente naturalmente colaborativo onde cada pessoa compartilha a responsabilidade pela segurança e qualidade de um produto.

  • Processo: O DevSecOps faz com que a segurança deixe de ser uma fase distinta que frequentemente aparece no fim do SDLC e passe a ser parte integral do trabalho de cada um. Avaliações automatizadas de segurança, testes unitários com foco em segurança, monitoramento amplificado e códigos defensivos criam ciclos de feedback onde as vulnerabilidades surgem mais cedo no ciclo de vida do produto e podem ser solucionadas mais rápido.

  • Produtos: O DevSecOps constrói com base no toolchain de DevOps usando tecnologias como CI/CD para automatizar a identificação de problemas de segurança. O escaneamento de dependências, teste dinâmico e estático de segurança de aplicação e ferramentas de aplicação automatizada de políticas muitas vezes são usados para ajudar a construir a segurança em todas as fases do SDLC. Uma ampla gama das melhores soluções da área pode ser integrada entre si para criar um toolchain “aberto”. Porém, outras organizações podem considerar que conjuntos de produtos mais integrados e focados em segurança podem frequentemente oferecer uma experiência mais holística.

  • Governança: A melhoria contínua é central para o DevSecOps e requer criar uma cultura de medição que permite aos profissionais identificarem oportunidades de refinar os processos e ferramentas.

Pipeline de DevSecOps

Uma cultura de DevSecOps busca estabelecer a segurança como parte fundamental da criação de software, mas isso é só uma parte do que é preciso para adotar com sucesso uma prática de DevSecOps. A próxima etapa é integrar a segurança em cada fase do pipeline de DevOps.

Com ferramentas e processos específicos de segurança em todo o SDLC, um pipeline de DevSecOps ajuda os profissionais a projetarem produtos mais seguros e a detectarem problemas de segurança mais cedo no ciclo de vida do produto.

Pipeline DevOps Infinity

Fases comuns do pipeline DevSecOps

O DevSecOps é construído sobre o DevOps, e o pipeline DevSecOps é construído sobre o pipeline DevOps. Assim como o DevOps integra qualidade e velocidade em cada etapa, os melhores pipelines de DevSecOps são feitos para antecipar pontos essenciais no SDLC onde é provável que surjam problemas de segurança.

Isso se traduz nas seguintes fases de um pipeline DevSecOps:

  • Planejar: Em uma prática DevSecOpsa segurança começa na fase de planejamento no pipeline SDLC. Isso pode incluir analisar potenciais ameaças à segurança e determinar como combatê-las com modelagem de ameaças. Também pode envolver incluir a segurança nos seus produtos proativamente para garantir que ela esteja incluída no trabalho desde o início, com uma higiene de dados essencial e outras decisões de segurança importantes tomadas desde cedo.

  • Codificar: Na fase de código do pipeline DevSecOps, é importante criar uma cultura de programação defensiva com políticas que ajudam os profissionais a navegarem de maneira proativa por problemas de segurança e compliance. Isso pode ser tão simples quanto especificar regras sobre como lidar com aspectos particularmente arriscados do código, como NULLs, ou envolver diretrizes mais amplas em áreas como a validação de entradas.

  • Compilar: Na fase de compilação, um pipeline típico de DevSecOps incluirá verificações automatizadas de segurança para detectar vulnerabilidades no código-fonte antes delas chegarem no branch principal. Isso pode envolver o uso de hooks pré-commit para executar ferramentas de teste estático de segurança de aplicação (SAST) onde qualquer problema em potencial no código vai interromper a compilação, assim como uma falha em um teste, e oferecer tempo para solucionar quaisquer vulnerabilidades em potencial no código-fonte proprietário antes de ser possível continuar com o trabalho. Também é preciso incluir ferramentas de análise de composição de software (SCA) para acompanhar componentes de código aberto na base de código e detectar quaisquer vulnerabilidades nas dependências.

  • Testar: A última fase do pipeline de DevSecOps é um ponto importante onde os profissionais vão desenvolver uma estratégia de teste e um conjunto de testes automatizados para detectar quaisquer vulnerabilidades de segurança ou problemas em potencial. Isso geralmente inclui usar testes unitários no nível de base para procurar problemas de segurança, como a maneira como a aplicação lida com uma entrada inesperada ou com formatação ruim. Também pode incluir testes dinâmicos de segurança de aplicação para encontrar vulnerabilidades na aplicação quando ela for executada. Assim, a fase de teste torna-se tanto sobre segurança quanto sobre funcionalidade. Uma boa dica nessa fase é integrar o teste dinâmico de segurança de aplicação (DAST) no pipeline de DevSecOps.

  • Lançamento: Na fase de lançamento, o pipeline de DevSecOps frequentemente vai incluir testes automatizados de segurança adicionais e escaneamento de vulnerabilidades para detectar problemas que podem não ter sido aparentes nas fases anteriores. Algumas organizações também empregam o princípio do menor privilégio, onde cada pessoa e ferramenta tem acesso apenas ao que necessita.

  • Implantar: Na fase de implantação, um profissional de DevSecOps vai trabalhar para garantir que o código chegue até a produção apenas se tiver passado por verificações de segurança em cada fase anterior. Isso pode envolver a aplicação de testes automatizados no código da aplicação e na infraestrutura subjacente usada para executar o software em produção, para detectar quaisquer preocupações de segurança do tempo de execução.

  • Operação e monitoramento: Nas fases de operação e monitoramento de um pipeline de DevSecOps, as organizações frequentemente vão usar métricas no nível do aplicativo e da infraestrutura para identificar atividades incomuns que podem indicar uma violação de segurança. Quando um incidente ocorre, o registro em relatório de uso e outros instrumentos podem ser usados para detectar o problema e entender seu impacto.

Princípios de automação de DevSecOps

Quando é implementada corretamente, a automação acelera o SDLC permitindo que as pessoas usem tecnologia para realizar tarefas repetitivas e manuais e que entreguem software de alta qualidade mais rápido. O DevSecOps avança ainda mais a automação, integrando testes de segurança em todas as fases do SDLC para melhorar a velocidade, consistência e mitigar riscos em potencial.

Se o DevSecOps faz com que a segurança seja responsabilidade de todos, a automação do DevSecOps busca dar a todos as ferramentas necessárias para garantir que os códigos e configurações estejam seguros sem necessitar que se tornem especialistas em segurança.

Ao considerar onde aplicar a automação em seu próprio pipeline de DevSecOps, considere os princípios a seguir:

  • A automação deve ser estratégica: Uma prática DevOps frequentemente busca usar a automação para facilitar a velocidade e qualidade em todo o SDLC. Mas, assim como ser estratégico é importante em uma prática DevOps, é igualmente importante, se não mais, ser estratégico sobre como e quando a automação é aplicada em um ambiente de DevSecOps.

  • Deixe as pessoas se concentrarem em serem criativos: Automatize tarefas repetitivas sempre que possível. Assim, as pessoas podem economizar tempo e energia mental para trabalhos mais envolventes, enquanto as verificações são aplicadas com mais consistência e em maior escala.

  • Sistematize a revisão de código: Use ferramentas como o teste estático de segurança de aplicação para automatizar elementos da sua revisão de código. Mas revisões de código conduzidas por pessoas ainda são importantes, e é essencial garantir que sua lista de verificação de revisão de código cubra os problemas de segurança específicos do seu stack de tecnologia. Crie um ciclo de feedback, para que, sempre que novas informações fiquem disponíveis, elas sejam incluídas na lista de verificação. Por exemplo, quando ocorre um incidente, considere como você poderia ter detectado o problema antes com uma revisão ou teste automatizado.

Saiba como o GitHub Advanced Security oferece ferramentas de segurança de ponta para organizações DevSecOps >


Ferramentas de reflexão


Toolchain de DevSecOps

Adotar um DevSecOps começa com uma mudança na cultura, que envolve fazer da segurança uma preocupação essencial de todos envolvidos no SDLC. Para fazer isso, as organizações frequentemente adotam novos processos e criar um toolchain de DevSecOps que aplica teste automatizado de segurança e ferramentas de segurança ao SDLC.

As ferramentas de DevSecOps geralmente são construídas sobre ferramentas comuns de DevOps como CI/CD, testes automatizados, gerenciamento de configuração e monitoramento. O objetivo é integrar ferramentas focadas em segurança em cada fase do ciclo de vida do produto.

Componentes principais do toolchain de DevSecOps

  • Testes automatizados de segurança em commits e merges: Um objetivo básico de qualquer prática de DevSecOps é detectar problemas no código antes que eles possam causar problemas, acionando escaneamentos automáticos usando os acionadores pré-commit e merge. Alguns dos escaneamentos que podem ser implementados pelas organizações incluem:

  • Varredura de código: frequentemente chamado de teste estático de segurança de aplicação, avalia o código em descanso, ou seja, sem precisar que ele seja executado, para descobrir códigos que podem causar uma vulnerabilidade.

  • Escaneamento de vulnerabilidade: ferramentas de escaneamento de aplicação dinâmica compilam e implementam uma aplicação em um ambiente de sandbox e em seguida observam como ele responde a ameaças à segurança conhecidas.

  • Verificação de segredo: mesmo com as políticas mais rígidas, alguns segredos ocasionalmente chegam em um commit. Ferramentas de verificação de segredo são usadas para detectá-los antes que o commit seja feito. Elas também são pareadas com ferramentas SCA, que são usadas para detectar vulnerabilidades em dependências de código aberto dentro de uma determinada base de código.

Explore como o GitHub permite que organizações DevSecOps apliquem testes automatizados de segurança em todas as fases do SDLC >

  • Gerenciamento de configuração: no DevSecOps, uma regra geral é que é melhore remover a incerteza da configuração dos sistemas, e isso muitas vezes é feito quando se adota a infraestrutura como código. Ferramentas como Docker, Terraform e Ansible usam YAML e arquivos de configuração similares que podem ser escaneados automaticamente em busca de problemas, ter o commit para o controle de versão e lançados automaticamente para várias instâncias de um serviço.

Descubra como o GitHub ajuda organizações DevSecOps a gerenciarem configurações de aplicação e sistema por meio de automação >

  • Orquestração de contêiner: em alguns ambientes, as organizações podem adotar uma arquitetura de microsserviços para apoiar melhor aplicações complexas nativas da nuvem. Para isso é preciso manter vários contêineres e fazer a escala deles conforme necessário e de maneira segura, o que envolve ferramentas de orquestração de contêiner. Assim como ferramentas de gerenciamento de configuração, as ferramentas de orquestração muitas vezes usam arquivo de configuração YAML para ditar interações entre contêineres.

  • Verificação de tempo de execução: também conhecidas como ferramentas de autoproteção de aplicações de tempo de execução, essas ferramentas vão monitorar ativamente e/ou direcionar ameaças em direção à sua aplicação conforme ela é executada, com relatórios destacando quaisquer vulnerabilidades.

  • Monitoramento contínuo e relatório: um dos aspectos mais simples e ainda assim mais eficientes das ferramentas DevSecOps é a medição, que envolve registros em relatório de tudo no nível da aplicação e da infraestrutura. As melhores ferramentas vão fornecer inteligência em tempo real quando algo der errado, e vão incluir sistemas de relatório para que você possa detectar problemas cedo. Dados de saída de uma porta inesperada, por exemplo, podem indicar um comprometimento, mas podem passar despercebidos sem o monitoramento e relatório.

O resultado final

A segurança é um problema que define as organização de desenvolvimento de software nos dias de hoje. Um erro nessa área tem implicações profundas, tanto para a organização quanto para os indivíduos envolvidos. O DevSecOps oferece uma estrutura para a criação de software com segurança desde os primeiros passos. E sua construção na cultura e processos bem compreendidos de DevOps significa que, para a maioria das empresas, a mudança para DevSecOps é uma evolução natural.

Crie sua prática de DevSecOps no GitHub

O GitHub é uma plataforma integrada que leva as empresas da ideia ao planejamento, à compilação e à produção, combinando uma experiência de desenvolvedor focada com uma infraestrutura poderosa e totalmente gerenciada de desenvolvimento, automação e teste.

Compare os planos de preço >



Nossa filosofia é criar automação e um excelente DevOps para a empresa que você será amanhã.

Todd O'Connor, Engenheiro Sênior de SCM da Adobe



Passe do planejamento para a criação Aumente a velocidade dos desenvolvedores
Crie planos de roadmap junto à sua base de código e atribua tarefas aos membros da equipe rapidamente com quadros e tabelas de projeto poderosos que se integram totalmente ao seu projeto.

Saiba mais sobre o GitHub Issues >
Reduza o tempo de commit. Elimine o gerenciamento do ambiente e a alternância de contexto para seus desenvolvedores. Simplifique a aquisição e a manutenção de TI com um espaço seguro e gerenciado na nuvem.

Explore o Codespaces >


Automatize tudo Proteja seu código à medida que você o escreve
Automatize todos os seus fluxos de trabalho de desenvolvimento de software com o GitHub Actions. Escale de maneira confiável e segura com uma poderosa infraestrutura de desenvolvimento, teste e automação, totalmente gerenciada pelo GitHub.

Saiba mais sobre o GitHub Actions >
Proteja seu código, dependências, tokens e dados confidenciais durante todo o ciclo de vida de desenvolvimento de software e resolva vulnerabilidades automaticamente.


Veja como ajudamos você a manter a segurança >

Tags

Quer saber como o GitHub pode ajudar sua empresa?

Fale mais sobre suas necessidades

octocaptcha spinner