DEV Community

Rayane Pimentel
Rayane Pimentel

Posted on

SSDLC – Arquitetura e Design

Com os requisitos de segurança bem definidos, a próxima etapa envolve a elaboração da arquitetura, do design e da estrutura do software, assegurando que ele seja seguro por padrão.

Esse cuidado se alinha ao princípio de Security by Design, onde a segurança é tratada como uma característica essencial desde a concepção da aplicação, e não como um complemento posterior.

Aqui, são tomadas decisões sobre como os componentes interagem, como as camadas de segurança serão aplicadas e como mitigar ameaças conhecidas.

Algumas perguntas a serem respondidas incluem:

  • Como os serviços serão autenticados entre si? Haverá uso de tokens, certificados ou chaves de API?
  • Como será feito o processo de transmissão de dados? Será utilizado HTTPS, TLS ou outros mecanismos de criptografia?
  • Qual será o serviço de nuvem ou servidor web utilizado e como será configurada a segurança?
  • Existem padrões de segurança já estabelecidos para serem seguidos, como OWASP Top 10 ou NIST?
  • Qual linguagem será usada (por exemplo, JavaScript, Python, Java)?
  • Quais frameworks e bibliotecas serão utilizados (por exemplo, NestJS, Angular, Django)?
  • Qual sistema de gerenciamento de banco de dados será adotado (por exemplo, PostgreSQL, MongoDB)?

Image description

Tecnologias Utilizadas

No exemplo, a plataforma foi desenvolvida com Angular para o front-end, NestJS para o back-end, e PostgreSQL para o gerenciamento de dados hospedado em um serviço de nuvem.

Autenticação entre Serviços

A comunicação entre a plataforma (Angular) e o BFF (Backend For Frontend) é realizada por meio de Tokens (JSON Web Tokens). Esses tokens são emitidos pelo Identity Provider após a validação das credenciais (login e senha) da usuária, garantindo que apenas usuários autenticados possam acessar as funcionalidades da aplicação.

Os serviços autenticados incluem:

  • Plataforma → BFF: A comunicação é feita de forma segura, protegendo dados de login e informações pessoais.
  • BFF → Identity Provider: O BFF valida as credenciais e obtém o token para autenticação subsequente.
  • BFF → Servidor de Aplicação: O BFF encaminha a requisição ao servidor de aplicação, utilizando o token para assegurar que a solicitação seja de um usuário autenticado.

Transmissão de Dados

  • Protocolo: A transmissão de dados entre os componentes da plataforma é realizada utilizando HTTPS, garantindo que a comunicação seja criptografada.
  • Mecanismo de Criptografia: TLS/SSL é usado entre o servidor de aplicação e o banco de dados (hospedado em um serviço de nuvem).

Firewalls

Entre o BFF e o servidor de aplicação, são implementados firewalls para atuar como barreiras de proteção. Esses firewalls filtram o tráfego e protegem o servidor de aplicação contra acessos não autorizados e ataques externos.

Modelagem de ameaça

Nessa etapa, também realizamos a modelagem de ameaças para identificar possíveis ameaças e ataques, além de desenvolver estratégias para mitigá-las.

Image description

Image description

Exemplo simples:

  1. O que pode dar errado? Aqui identificamos possíveis ameaças.
  2. O que você deve fazer em relação a essas ameaças? Com uma lista de ameaças identificadas, o próximo passo é desenvolver estratégias para mitiga-las.

Exemplo de Mitigação:

  • Alvo: Login (alguém se passando por outro usuário)
  • Estratégia de Mitigação: Identificação e autenticação de login (o sistema sabe/tem)
  • Técnica de Mitigação: Senha, Tokens e MFA

Uma técnica comum para modelagem de ameaças é o modelo STRIDE, que classifica ameaças em categorias como Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service e Elevation of Privilege. Se você quiser saber mais sobre como modelagem de ameaça, eu escrevi sobre aqui.

Usaremos a Modelagem na ameaça na próxima fase.

Top comments (0)