Arquitetura DevSecOps e Ferramentas

Arquitetura DevSecOps e Ferramentas.

Seja bem-vindo ao nosso blog! Hoje vamos falar sobre Arquitetura DevSecOps e Ferramentas, No último post, “Introdução ao DevSecOps“, oferecemos uma visão geral sobre essa prática essencial para a integração da segurança ao longo do ciclo de vida do desenvolvimento de software. Fique conosco para aprender mais sobre como implementar DevSecOps e fortalecer a segurança de suas aplicações desde o início do desenvolvimento até a produção.

A criação de uma arquitetura para um pipeline DevSecOps envolve a integração de práticas de segurança dentro do fluxo de trabalho DevOps para garantir a entrega segura de software. Abaixo está uma visão geral de alto nível para um pipeline DevSecOps, focando em integração contínua, entrega contínua e segurança contínua.

Pipeline DevSecOps Agnóstica.

A seguir, apresento uma imagem que ilustra de forma agnóstica a pipeline DevSecOps para facilitar o seu entendimento. Ainda nesse post, abordaremos detalhadamente a arquitetura e as ferramentas específicas utilizadas.

 

Agora, descreverei detalhadamente as etapas apresentadas na imagem e todo o fluxo do pipeline DevSecOps. Lembre-se de que essa é apenas uma das possibilidades; a implementação pode variar conforme a maturidade de cada cliente, profissional e ambiente.

Começamos pelo Identidade e Autenticação (Identity e 2FA). O desenvolvedor inicia o processo autenticando-se através de um sistema de identidade e autenticação multifator (2FA).

Em seguida, passamos para Desenvolvimento e Feedback em Tempo Real (Developer e Real-time Feedback). Após a autenticação, o desenvolvedor trabalha no repositório de código. Qualquer alteração no código gera feedback em tempo real, permitindo ajustes imediatos.

O próximo passo é o Pipeline CI/CD (Continuous Integration/Continuous Deployment). O código passa por um pipeline de CI/CD, dividido em duas fases: pré-build (Pre-Build) e pós-build (Post-Build). Na fase de pré-build, são executadas análises de componentes e segurança de código estático (SCA/SAST). Na fase de pós-build, são realizados testes de segurança dinâmica (DAST).

Depois, entramos na etapa de Gerenciamento de Vulnerabilidades (Vulnerability Management). As informações de vulnerabilidades são gerenciadas e monitoradas ao longo do pipeline, assegurando que todas as vulnerabilidades identificadas sejam tratadas adequadamente.

Seguimos para o Registro e Armazenamento de Artefatos (Registry/Artifacts). Os artefatos gerados durante o build são armazenados em um repositório específico.

O código é então promovido para os Ambientes de Desenvolvimento/QA e Produção (Dev QA Production), onde é monitorado e gerenciado.

A próxima etapa é Segurança de Segredos e Observabilidade (Vault/Secret e Observability). Segredos e credenciais são gerenciados em um cofre de segredos, enquanto a observabilidade é mantida para monitorar a saúde e a performance do sistema.

Finalmente, chegamos ao Usuário Final e Segurança Perimetral (End User, LB/CDN/WAF). O usuário final interage com a aplicação, que é protegida por balanceadores de carga (LB), redes de entrega de conteúdo (CDN) e firewalls de aplicações web (WAF).

Para garantir a segurança, o Usuário Final também passa por um sistema de identidade e autenticação multifator (MFA).

Essa imagem ilustra de maneira abrangente as etapas e componentes de um pipeline DevSecOps, destacando a integração da segurança em todas as fases do ciclo de vida do desenvolvimento de software.

Arquitetura e diretriz OWASP DevSecOps.

A diretriz OWASP DevSecOps nos guia na transição de uma abordagem tradicional, que começa com requisitos e termina com testes de segurança, para uma abordagem que integra Desenvolvimento, Segurança e Operações ao longo do ciclo de vida do software – a abordagem “DevSecOps”.

Este projeto ajuda empresas de qualquer tamanho a incorporar segurança em seu pipeline e cultura DevOps. Não existe uma única maneira correta de fazer DevSecOps, então é fundamental manter o foco.

DevSecOps busca “produzir código demonstravelmente seguro” ao:

  • Utilizar a automação para criar ciclos curtos de feedback para os desenvolvedores
  • Quebrar os silos entre desenvolvimento, segurança e operações
  • Dividir o trabalho de segurança em pequenas partes para criar fluxo
  • Tomar decisões baseadas em inteligência de ameaças das operações
  • Estabelecer uma cultura de experimentação e aprendizado em segurança

Ferramentas específicas apoiam os processos de segurança ao longo do ciclo de vida do desenvolvimento de software. Toda empresa deve implementar processos para garantir:

Segurança do Código Personalizado: Seu código personalizado precisa de defesas adequadas e deve estar livre de vulnerabilidades, abrangendo aplicativos, APIs, serverless, mobile, infraestrutura como código, etc.

Segurança da Cadeia de Suprimentos: Sua plataforma, framework, bibliotecas, contêineres e outros componentes precisam ser seguros.

Proteção em Tempo de Execução: Detectar ataques em seu software e evitar a exploração.

Implementando bem esses três processos, sua organização se posiciona melhor em termos de segurança de aplicativos. Neste documento, exploramos várias soluções automatizadas que ajudam na implementação desses processos.

O objetivo não é usar todas as ferramentas no seu pipeline, mas garantir que o código seguro surja dele. Escolha ferramentas eficazes para as pessoas, processos, tecnologia e cultura da sua organização. Use cada ferramenta para o que ela faz de melhor, evitando repetir todos os testes com todas as ferramentas. Cada organização de desenvolvimento de software é única, e você decide quais ferramentas usar e onde implementá-las.

 

Arquitetura DevSecOps “Cloud Native”.

A seguir, apresentarei Arquiteturas DevSecOps de Referência dos principais provedores de Cloud. Meu objetivo é oferecer uma visão Cloud Native, incluindo algumas ferramentas open source e de terceiros.

 

 

 

Ferramentas de Feedback em Tempo Real para Desenvolvedores.

Quando pensamos em desenvolvimento seguro, devemos começar muito antes do que foi abordado aqui. Por exemplo, a escolha da linguagem ou framework, a modelagem de ameaças, e também o desenvolvedor e seu equipamento. Por isso, vamos explorar as possibilidades de ferramentas de feedback em tempo real para desenvolvedores.

SonarLint

  • Descrição: SonarLint é uma extensão de IDE que analisa o código enquanto você escreve. Ele fornece feedback imediato sobre problemas de segurança, bugs e boas práticas.
  • Compatibilidade: Funciona com IntelliJ IDEA, Eclipse, Visual Studio e VS Code.

ESLint

  • Descrição: ESLint é uma ferramenta de linting para JavaScript e outros arquivos de código. Ela ajuda a encontrar e corrigir problemas de sintaxe, estilo e possíveis bugs.
  • Compatibilidade: Compatível com VS Code, Sublime Text, Atom, WebStorm, entre outros.

Pylint

  • Descrição: Pylint é uma ferramenta de linting para Python. Ela analisa o código em busca de erros, verifica conformidade com padrões de codificação e oferece sugestões para melhorar a qualidade do código.
  • Compatibilidade: Funciona com VS Code, PyCharm e Sublime Text.

Stylelint

  • Descrição: Stylelint é um linter para CSS. Ele ajuda a garantir que o código CSS siga padrões de estilo e melhores práticas.
  • Compatibilidade: Compatível com VS Code, Atom, Sublime Text e WebStorm.

TSLint

  • Descrição: TSLint é uma ferramenta de linting para TypeScript. Ela é usada para identificar e corrigir problemas de estilo e possíveis erros no código TypeScript.
  • Compatibilidade: Funciona com VS Code, Sublime Text, Atom e WebStorm.

Prettier

  • Descrição: Prettier é um formatador de código. Ele garante que o código seja formatado de forma consistente de acordo com padrões predefinidos.
  • Compatibilidade: Compatível com VS Code, Sublime Text, Atom e WebStorm.

Checkstyle

  • Descrição: Checkstyle é uma ferramenta de análise de código estático para Java. Ela verifica a conformidade do código com padrões de codificação.
  • Compatibilidade: Funciona com IntelliJ IDEA, Eclipse e NetBeans.

 

Ferramentas para pipeline DevSecOps.

Para encerrar o post de hoje, vou falar sobre as ferramentas dentro de uma arquitetura de pipeline DevSecOps, conforme prometido. Quero apresentar opções para que você possa estudar e escolher a que melhor se encaixa na sua realidade.

Gerenciamento de Código Fonte (SCM)

  • Ferramentas: Git (GitHub, GitLab, Bitbucket)
  • Descrição: Sistema de controle de versão para gerenciar código e rastrear alterações.

Integração Contínua (CI)

  • Ferramentas: Jenkins, GitLab CI, Travis CI, CircleCI
  • Descrição: Automatizar o processo de build, teste e integração para garantir que as mudanças no código sejam confiáveis.

Teste Estático de Segurança de Aplicações (SAST)

  • Ferramentas: SonarQube, Checkmarx, Veracode
  • Descrição: Analisar o código em busca de vulnerabilidades de segurança durante o processo de build.

Gerenciamento de Dependências e Varredura de Vulnerabilidades

  • Ferramentas: OWASP Dependency-Check, Snyk, WhiteSource
  • Descrição: Verificar dependências em busca de vulnerabilidades conhecidas e gerenciá-las.

Análise de Composição de Software (SCA)

  • Ferramentas: Black Duck, WhiteSource, Snyk
  • Descrição: Analisar componentes de código aberto e suas dependências para identificar vulnerabilidades e licenças.

Containerização

  • Ferramentas: Docker
  • Descrição: Empacotar aplicações em contêineres para consistência entre ambientes.

Segurança de Contêineres

  • Ferramentas: Clair, Aqua Security, Twistlock
  • Descrição: Escanear imagens de contêineres em busca de vulnerabilidades.

Infraestrutura como Código (IaC)

  • Ferramentas: Terraform, Ansible, Chef, Puppet
  • Descrição: Gerenciar infraestrutura através de código para consistência e controle de versão.

Teste Dinâmico de Segurança de Aplicações (DAST)

  • Ferramentas: OWASP ZAP, Burp Suite, Acunetix
  • Descrição: Testar a aplicação em execução em busca de vulnerabilidades de segurança.

Entrega Contínua (CD)

  • Ferramentas: Jenkins, GitLab CI, Spinnaker, Argo CD
  • Descrição: Automatizar o processo de implantação para vários ambientes.

Gerenciamento de Configuração e Segredos

  • Ferramentas: HashiCorp Vault, AWS Secrets Manager, Kubernetes Secrets
  • Descrição: Gerenciar configurações e segredos de forma segura.

Monitoramento e Log

  • Ferramentas: ELK Stack (Elasticsearch, Logstash, Kibana), Prometheus, Grafana
  • Descrição: Monitorar o desempenho da aplicação e registrar atividades para análise e alertas.

Isso é tudo por hoje. Espero ter atendido às suas expectativas. Se você se interessa por este assunto, convido você a acompanhar os próximos posts. Neles, continuarei abordando ferramentas de apoio e, futuramente, apresentarei uma demo de uma pipeline DevSecOps. O que você acha? Vale a pena trazer esse conteúdo?

 

Fonte:

https://owasp.org/www-project-devsecops-guideline/

https://github.com/OWASP/DevSecOpsGuideline/blob/master/current-version/0-Intro/0-1-Intro.md

https://aws.amazon.com/pt/blogs/aws-brasil/construindo-um-pipeline-de-ci-cd-aws-devsecops-de-ponta-a-ponta-com-ferramentas-de-codigo-aberto-sca-sast-e-dast/

https://learn.microsoft.com/en-us/azure/architecture/guide/devsecops/devsecops-on-aks

https://cloud.google.com/blog/products/devops-sre/devsecops-and-cicd-using-google-cloud-built-in-services

https://cloud.google.com/blog/products/networking/introducing-the-devsecops-toolkit

https://github.com/sysdesign-code/dev-sec-ops-demo/tree/main/diagrams

 

Sugestão de Livros:

[];

2 comentários em “Arquitetura DevSecOps e Ferramentas

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *