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
/metricspara 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
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.