← Todos os projetos

03Estudo de caso

Sentinel

Dois projetos de segurança que se completam: o Sentinel encontra vulnerabilidades no código antes de chegarem a produção, e o SentinelGate protege as APIs que já lá estão.

Papel
Projeto a solo: arquitetura, backend, dashboard e benchmarks
Estado
Open source 2 repositórios
Stack
Python, FastAPI, Celery, Redis, Rust, Next.js, Docker
Ligações
Sentinel ↗
SentinelGate ↗
Página do ecossistema Sentinel, com o Scan e o Gate

O problema

Chaves de API esquecidas no código, dependências vulneráveis e Dockerfiles mal configurados são das falhas mais comuns e mais fáceis de evitar. O problema é que os relatórios de segurança acabam num PDF que ninguém lê.

Quis perceber como se constrói uma ferramenta que deteta estes problemas e os põe no fluxo de trabalho da equipa, e depois o outro lado: como proteger uma API em tempo real sem a tornar lenta.

Sentinel: análise estática de código

  • Vários motores de análise. Segredos expostos através de regras em YAML (chaves AWS, chaves privadas, tokens Stripe…), dependências vulneráveis (SCA), Docker e infraestrutura como código, e verificações de conformidade.
  • Três formas de usar. Um dashboard em Next.js, uma CLI que envia o projeto para análise e uma GitHub Action que corre o scanner em cada push.
  • Fecha o ciclo no Jira. Uma falha crítica abre um ticket automaticamente na equipa; os problemas aceites podem ser ignorados pelo seu identificador, para não voltarem a aparecer.
  • Correções sugeridas por IA. Integração com o Google Gemini para propor o código corrigido.

SentinelGate: gateway de API em Rust

Um proxy que fica à frente de uma API e filtra o tráfego antes de lá chegar. O caminho crítico é Rust; a análise comportamental corre à parte, em Python.

  • WAF. Bloqueia tentativas de SQL injection e XSS.
  • Deteção de anomalias. Um modelo Isolation Forest identifica padrões de acesso anormais e bloqueia os IPs automaticamente.
  • Mascaramento de dados (DLP). Cartões de crédito e emails são ocultados nas respostas.
  • Bloqueio geográfico por código de país, com a base GeoLite2.
  • Observabilidade. Endpoint /metrics para Prometheus e um painel de incidentes em Next.js.

Desempenho medido

Nos testes de carga com wrk: cerca de 12 568 pedidos por segundo, latência média de 31 ms sob carga pesada e mais de 400 ligações simultâneas. Os resultados e o método estão registados no repositório.

Decisões técnicas

01Scans fora do pedido HTTP

Analisar um repositório grande demora. A API aceita o pedido e põe o trabalho numa fila Redis; os workers Celery processam-no e o dashboard mostra o resultado quando estiver pronto.

02Regras como dados

Os padrões de segredos vivem num ficheiro YAML com nome, gravidade e explicação. Acrescentar uma regra não exige mexer no código.

03Rust no caminho crítico, Python ao lado

O proxy, o WAF e o mascaramento estão em Rust para manter a latência baixa. O modelo de anomalias, mais lento e mais fácil de iterar em Python, decide quem bloquear sem atrasar cada pedido.

04Tudo com Docker Compose

Os dois projetos arrancam com um comando: API, workers, Redis, dashboard e, no SentinelGate, o motor de IA e o painel.

Capturas

Exemplo de relatório do Sentinel Scan: uma chave AWS exposta e a correção sugerida pelo Gemini
Sentinel Scan: exemplo de relatório, com a correção sugerida pelo Gemini
Excerto do arranque do Sentinel Gate em Rust, com limitação de pedidos e bloqueio geográfico
Sentinel Gate: arranque do proxy em Rust, com limitação de pedidos e bloqueio geográfico

Mais projetos

Outros projetos de segurança e de sistemas, como o AssetScan (gestão de computadores Windows com um agente em Rust), estão na página principal.