O diagrama com fronteiras de confiança

Desenhe o fluxo e marque onde a confiança muda (uma linha tracejada = fronteira de confiança). Onde os dados cruzam uma fronteira é onde você precisa de um controle:

[ usuário (não confiável) ] ┊ [ WAF ] → [ API (valida) ] ┊ [ banco (RLS) ]
                            ↑ fronteira            ↑ fronteira
                    (aqui: authN, validação)   (aqui: authz, RLS)

PARTE D — Desenhar uma arquitetura segura (o exercício do arquiteto)

A arquitetura de referência — e a pergunta que o arquiteto faz em cada ponto: "onde posso colocar um controle de segurança?"

              INTERNET
                 │        ← [WAF, DDoS, rate limit, TLS, bot mgmt]
              Load Balancer
                 │        ← [TLS termina; health checks]
             API Gateway
                 │        ← [authN, authZ, rate limit por rota, validação]
        ┌────────┴────────┐
     Backend           Backend      ← [least privilege; secrets do cofre; egress filtrado]
        │
   ┌────┴────┐
   DB       Cache                   ← [RLS/criptografia; rede privada; sem IP público]
   │
 Backup                             ← [3-2-1; versionado; offline; canary]

O seu stack, lido assim: Internet → Cloudflare (WAF/TLS/rate limit) → Workers (authN/authZ/validação) → Supabase (RLS/criptografia) → backups. Você já tem uma arquitetura em camadas — este módulo te ensina a projetá-la de propósito e achar os pontos fracos.


PARTE E — Labs práticos 🧪

O "lab" aqui é pensar e desenhar — a habilidade do arquiteto. Não precisa de terminal.

Lab 1 — Threat model de uma funcionalidade sua ⭐

Escolha um fluxo do seu projeto (ex.: o cadastro de lead, ou o login admin). Aplique as 4 perguntas:

  1. Desenhe o fluxo (usuário → API → banco), marcando as fronteiras de confiança.
  2. Para cada elemento, passe o STRIDE (spoofing? tampering? …).
  3. Para cada ameaça, escreva o controle.
  4. Revise. Entregável: uma página de threat model.

Lab 2 — Diagrama de confiança do seu stack

Desenhe Cloudflare → Workers → Supabase → n8n e marque cada fronteira de confiança e o controle que a protege. Onde falta controle = achado arquitetural.

Lab 3 — "Onde ponho um controle?"

Pegue a arquitetura de referência (Parte D) e, camada por camada, liste um controle de segurança que caberia ali. Compare com o que seu projeto já tem (DOC §3).

Lab 4 — Ler a arquitetura do próprio programa

Leia a DOCUMENTACAO §3 (defesa em profundidade, trust boundaries, princípios) — ela é a arquitetura de segurança do seu sistema. Identifique qual princípio (A.2) cada decisão aplica.

Lab 5 — Ferramenta de threat modeling (opcional)

Use o Microsoft Threat Modeling Tool (gratuito) ou o OWASP Threat Dragon para desenhar um fluxo e gerar as ameaças STRIDE automaticamente.


PARTE F — Autoavaliação ✅

Responda de memória:

  1. Qual é a virada de mentalidade desta fase?
  2. O que é "fail secure"? Dê um exemplo do seu projeto.
  3. O que significa Zero Trust "entre serviços"?
  4. Quais são as 4 perguntas do threat modeling?
  5. O que cada letra do STRIDE representa (cite ao menos 4)?
  6. O que é uma "fronteira de confiança" num diagrama, e por que ela importa?
  7. Por que disponibilidade (DR/HA) é uma questão de segurança?
<details><summary>👉 Gabarito</summary>
  1. De "como acho a falha?" para "como projeto o sistema para a falha ser difícil de acontecer?" — eliminar classes de falha pelo desenho (A.1).
  2. Se algo não pode ser validado com segurança, negue (não aceite). Ex.: o middleware deve rejeitar um JWT sem exp, não aceitá-lo (A.2/Ex. 12).
  3. Nenhum serviço confia em outro só por estarem na "mesma rede" — todo pedido é autenticado/autorizado (ex.: assinatura HMAC no webhook do n8n) (Pilar 2).
  4. O que estamos construindo? O que pode dar errado? O que fazemos a respeito? Fizemos um bom trabalho? (C).
  5. Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, Elevation of privilege (C).
  6. É onde o nível de confiança muda (ex.: do usuário para o servidor). Importa porque é ali que os controles (authN/authZ/validação) precisam estar — onde os dados cruzam a fronteira (C).
  7. Porque disponibilidade é o "D" da tríade CIA — um sistema fora do ar (por DoS ou desastre) é uma falha de segurança; resiliência é um controle (Pilar 8).</details>

Checklist prático:

[ ] Fiz um threat model (4 perguntas + STRIDE) de 1 funcionalidade minha
[ ] Desenhei o diagrama de confiança do meu stack e marquei os controles
[ ] Fiz o exercício "onde ponho um controle?" na arquitetura de referência
[ ] Li a DOCUMENTACAO §3 e liguei cada decisão a um princípio
[ ] Consigo citar os 8 princípios e o STRIDE
[ ] (opcional) Usei o Threat Dragon / MS Threat Modeling Tool

Conclusão: 5/7 do quiz + 1 threat model escrito.


entre para marcar esta aula como concluída.

PurpleLab // plataforma de treino ofensivo + defensivo // Fase 1 — portal dinamico