Segurança de Aplicação

Implementação segundo SAMM: Deploy Seguro em Segurança de Aplicações

Dando sequência à série de publicações sobre o framework OWASP SAMM (Software Assurance Maturity Model), neste artigo iremos abordar a prática de segurança relacionada ao Deploy Seguro, dentro do domínio de Implementação. Caso você ainda não tenha noção sobre a composição e organização do framework, recomendo a leitura do nosso primeiro artigo que explica em mais detalhes neste link.

Quem atua há muitos anos na área de Tecnologias de Informação, sabe que em um passado não muito distante, antes do advento dos ambientes virtualizados, cloud computing e DevOps, o deploy de uma aplicação envolvia – e para muitas empresas que ainda trabalham no modelo waterfall ainda envolve – muitos riscos. Equipes inteiras de engenheiros e arquitetos de software, administradores de bancos de dados e analistas de infraestrutura trabalhando madrugadas e até finais de semana inteiros no propósito de disponibilizar ao usuário uma atualização de software. 

Os tempos são outros e muitas dessas dificuldades estão sendo superadas com uma maior utilização de soluções baseadas em esteiras de integração e entrega contínua, cloud computing e microsserviços, nos quais o deploy de uma aplicação geralmente é feito após um build que gera o pacote de software juntamente com todas as suas bibliotecas, dependências e variáveis de ambiente em um container. Isso evita os problemas de compatibilidade e reduz drasticamente os riscos relacionados à indisponibilidade do serviço, facilitando também o rollback em caso de necessidade.

Mas com as mudanças nos processos de deploy de aplicações, houve também mudanças nos riscos envolvidos e, certamente, eles não deixaram de existir.

Vamos analisar nesse momento como o OWASP SAMM nos auxilia a avançarmos em maturidade no deploy de aplicações, elencando os principais requisitos para sairmos do estado atual para o nível máximo de maturidade (Nível 3) nas duas correntes relacionadas a essa prática: Processo de Deploy e Gerenciamento de Secrets.

Processo de Deploy

Um Processo de Deploy, segundo o SAMM, vai avançando em níveis de maturidade em segurança à medida que são implementados controles que garantam a automação da esteira, incluindo documentação, logs, testes de segurança e observabilidade. Chegando ao ápice, teremos um processo completamente automatizado, supervisionado por uma equipe técnica especializada e com todas as relações de dependência de software e integridade de pacotes sendo checadas por assinaturas e certificados digitais de forma autônoma.

Requisitos do Nível 1

  • Documentação centralizada descrevendo o Processo de Deploy por completo;
  • O deploy de aplicações não deve ser feito pelos desenvolvedores;
  • Hardening e tunning das ferramentas de automação. Privilégio mínimo nos acessos;
  • Analistas com alta capacitação técnica.

Requisitos do Nível 2

  • Deploy completamente automatizado;
  • Integração de DAST e scans de vulnerabilidade;
  • Registro dos resultados dos testes e notificação automatizada dos responsáveis;
  • Controle de qualidade automatizado, bloqueando ou revertendo erros críticos;
  • Registro e auditoria de todos os deploys.

Requisitos do Nível 3

  • Checagem automática de assinaturas digitais e certificados de pacotes de software, dependências e artefatos, próprios ou de terceiros;
  • Bloqueio de deploys onde componentes não tiveram assinaturas e certificados checados;
  • Aplicação do princípio de observabilidade sempre que possível e necessário.

Gerenciamento de Secrets

Um Secret é um objeto que contém uma pequena quantidade de informação sensível.

O Gerenciamento de secrets envolve a proteção do ciclo de vida de credenciais, tokens, senhas e outras informações confidenciais por meio da aplicação consistente de políticas de segurança. A gestão correta e segura de credenciais de acesso é um dos grandes desafios das fábricas de software na atualidade. Alguns dos mais graves eventos de vazamentos de dados que temos visto se deve a falhas nesse processo que poderiam ser evitadas com pequenos cuidados.

O OWASP SAMM também trata esse assunto de forma a garantir as diretivas necessárias para nos orientar sobre as melhores práticas de gestão de credenciais, observando desde os princípios básicos como a não-disponibilidade de credenciais do ambiente de produção a desenvolvedores e cuidados com chaves de acesso hard-coded à implementação de scans automatizados em arquivos e repositórios de código para evitar o acesso indevido a elas.

Em um nível de maturidade mais elevado, empresas de software e segurança possuem uma equipe própria trabalhando apenas na gestão do ciclo de vida dessas credenciais, garantindo que elas sejam renovadas de tempos em tempos e garantindo o acesso apenas a pessoas devidamente autorizadas.

Requisitos do Nível 1
  • Desenvolvedores sem acesso a secrets ou credenciais do ambiente de produção;
  • Arquivos de configuração de ambientes de teste sem segredos ou credenciais;
  • Uso de ferramentas de gestão de credenciais do ambiente de produção com acesso garantido apenas aos responsáveis.

Requisitos do Nível 2

  • Processo automatizado para adicionar credenciais aos arquivos de configuração durante os deploys;
  • Uso de scans de busca de credenciais e segredos nos arquivos e repositórios;
  • Uso de criptografia para credenciais e segredos, em repouso ou em trânsito;
  • Manutenção do cofre de senhas com o princípio de Privilégio Mínimo.

Requisitos do Nível 3

  • Gestão do ciclo de vida dos segredos e credenciais de ambientes de produção;
  • Registro e auditoria de logs de acesso a credenciais e segredos, seja de leitura ou escrita.

Clareza traz segurança

Na Conviso Platform você encontra o Secure Pipeline, uma solução para a orquestração das análises automatizadas da esteira de desenvolvimento que se integra às diversas soluções de mercado. Abaixo um exemplo da visibilidade sobre os riscos associados a cada deploy:

Fica claro que todos os princípios que trazem um avanço nos níveis de maturidade em segurança de aplicações no domínio de Deploy Seguro passam por uma maior automação dos processos de entrega dos pacotes, hardening e tuning das ferramentas utilizadas no processo, delegação de responsabilidades a pessoas-chave na organização, gestão eficaz de credenciais de acesso e tudo isso sem nunca deixar de lado o importante princípio da observabilidade. 

Percebemos também como o framework OWASP SAMM pode nos auxiliar a enxergarmos nosso atual nível de maturidade no domínio Deploy Seguro. Com essa clareza, fica mais fácil buscar soluções e criar projetos de implantação para que possamos avançar ainda mais nessa escala, seja na corrente do Processo de Deploy quanto na de Gerenciamento de Secrets. Afinal, ambos são muito importantes para construirmos aplicações cada vez mais seguras.

Nova call to action
About author

Articles

Profissional de TI com mais de 20 anos de experiência. Desses, 10 dedicados à cibersegurança. Atualmente trabalhando como consultor em Segurança de Aplicações na Conviso Application Security.
Related posts
Segurança de Aplicação

Operações segundo SAMM: Gestão Operacional em Segurança de Aplicações

Neste artigo, daremos sequência à série de publicações sobre o OWASP SAMM (Software Assurance…
Read more
Segurança de Aplicação

Programa de segurança de aplicações: conheça o AppSec Journey

Primordialmente, a Segurança de Aplicações (AppSec) deve ser integrada em todas as etapas do…
Read more
Segurança de Aplicação

Operações segundo SAMM: Gestão de Ambiente em Segurança de Aplicações

Este artigo faz parte de uma série de publicações feitas com base no projeto SAMM da OWASP, caso…
Read more

Deixe um comentário