
Sistema autonomo di cyber difesa basato su AI che utilizza MCP, Gemini 2.0 Flash, l'osservabilità di Dynatrace e MongoDB. Proposta per Google Cloud Hackathon.
Sottomissione per Google Cloud Hackathon — Rilevamento e correzione autonoma delle minacce orchestrata da Google Cloud Agent Builder (Vertex AI Agent), alimentata da Gemini 2.0 Flash, Model Context Protocol (MCP) e osservabilità Dynatrace.
I team di sicurezza affrontano 30 minuti di MTTD e 4 ore di MTTR per gli incidenti tipici. Quando un analista umano rileva l'attacco, scrive la regola del firewall e la distribuisce, il danno è già fatto.
SentinelMCP riduce l'MTTD a < 30 secondi e l'MTTR a < 30 secondi distribuendo un agente di Google Cloud Agent Builder che riceve webhook di anomalie Dynatrace, li elabora con Gemini 2.0 Flash e invoca strumenti di difesa reali tramite MCP — agendo su infrastruttura live, non solo segnalando.
Dynatrace webhook → Agent Builder receives alert → Gemini reasons → MCP tools execute → Threat neutralized
1 s 2 s 8 s 15 s 25 s total
Il risultato: un ciclo di vita dell'incidente che in precedenza richiedeva un analista umano e 4 ore ora si completa autonomamente in meno di 30 secondi, con una traccia di audit completa in MongoDB e tracce distribuite in Jaeger.
┌──────────────────────────────────────────────────────────────────────┐
│ SANDBOX ENVIRONMENT │
│ │
│ ┌─────────────┐ 100–1000 req/s ┌──────────────────────────┐ │
│ │ attacker │ ──────────────────►│ victim-service │ │
│ │ (DDoS/SQLi) │ │ port 8080 │ │
│ └─────────────┘ │ /admin/* control API │ │
│ └────────────┬─────────────┘ │
└───────────────────────────────────────────────────│──────────────────┘
│ metrics + anomaly webhook
┌────────────────────────────────▼─────────────────┐
│ Dynatrace Mock (anomaly engine) │
│ Threat Risk Score → fires POST /alerts/simulate │
└────────────────────────┬─────────────────────────┘
│ webhook
┌─────────────────────────────────▼──────────────────────────┐
│ Google Cloud Agent Builder (Vertex AI Agent) │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Gemini 2.0 Flash ── reasons over threat context │ │
│ │ Tool manifest ── dynamically fetched from MCP │ │
│ │ HITL gate ── halts if confidence < threshold │ │
│ └──────────────────────────────────────────────────────┘ │
└──────────────┬─────────────────────────┬───────────────────┘
│ REST calls │ audit write
┌───────────────▼──────┐ ┌────────────▼──────────┐
│ MCP Server :8001 │ │ MongoDB 7.0 Atlas │
│ 11 real tools │ │ incidents + traces │
└───────────┬──────────┘ └───────────────────────┘
│ acts on live infra
┌───────────▼──────────┐
│ FastAPI :8000 │
│ victim-service :8080│
└──────────────────────┘
┌──────────────────────────────────────────────────┐
│ OBSERVABILITY STACK │
│ OTel Collector ──► Jaeger (distributed traces) │
│ Prometheus ──────────────► Grafana │
└──────────────────────────────────────────────────┘
Principio chiave di progettazione: Degradazione graduale + Human-in-the-Loop (HITL). L'agente Agent Builder si arresta in sicurezza e restituisce il controllo all'operatore quando non può prendere una decisione con sufficiente confidenza — non indovina mai sull'infrastruttura critica.
Tutti e tre i servizi sono distribuiti e in esecuzione su Google Cloud Run:
| Servizio | URL |
|---|---|
| Centro di Comando (Dashboard) | https://sentinel-api-62d3d66zda-uc.a.run.app/dashboard |
| Documentazione API Swagger | https://sentinel-api-62d3d66zda-uc.a.run.app/docs |
| Controllo Salute | https://sentinel-api-62d3d66zda-uc.a.run.app/health |
| Catalogo Strumenti MCP | https://sentinel-mcp-62d3d66zda-uc.a.run.app/mcp/tools |
| Servizio Vittima | https://victim-service-62d3d66zda-uc.a.run.app |
Esegui un attacco live contro la produzione:
.\attack.production.ps1 status # verify all services healthy
.\attack.production.ps1 ddos # DDoS — Gemini blocks IPs + rate limit
.\attack.production.ps1 sql # SQL Injection — Gemini activates WAF
.\attack.production.ps1 brute # Brute Force — Gemini blocks source IPs
.\attack.production.ps1 stop # reset defenses
Il contenitore dell'attaccante viene eseguito localmente e colpisce il servizio-vittima su Cloud Run tramite HTTPS. Guarda la dashboard del Centro di Comando per il ciclo completo di rilevamento → ragionamento → neutralizzazione in tempo reale.
Google Cloud Agent Builder (Vertex AI ReasoningEngine) è l'orchestratore centrale di SentinelMCP. L'implementazione si trova in sentinel_mcp/agent/agent_builder.py.
SentinelAgent eredita da vertexai.preview.reasoning_engines.Queryable — l'interfaccia programmatica ufficiale di Agent Builder — e può essere eseguita localmente o distribuita al servizio gestito Agent Builder con un singolo comando.
| Responsabilità | Implementazione |
|---|---|
| Ricezione webhook | SentinelAgent.query(incident=...) — chiamato da Agent Builder ad ogni allarme Dynatrace |
| Dichiarazioni strumenti | 6 strumenti MCP registrati come oggetti FunctionDeclaration di Vertex AI in set_up() |
| Ragionamento | Gemini 2.0 Flash legge il contesto della minaccia + il catalogo strumenti, seleziona gli strumenti minimi, li invoca automaticamente |
| Gate HITL | Se Gemini non restituisce chiamate a strumenti (confidenza < soglia), viene emesso escalate_to_humans=True |
| Audit | Ogni chiamata a strumento registrata in MongoDB Atlas + esportata come span OTel a Jaeger |
Codice chiave — sentinel_mcp/agent/agent_builder.py:
class SentinelAgent(reasoning_engines.Queryable):
def set_up(self):
# MCP tools as Vertex AI FunctionDeclarations — Gemini selects at runtime
mcp_tools = Tool(function_declarations=[
FunctionDeclaration(name="block_ip_address", ...),
FunctionDeclaration(name="activate_waf", ...),
FunctionDeclaration(name="rate_limit_requests", ...),
FunctionDeclaration(name="scale_service", ...),
FunctionDeclaration(name="collect_forensic_logs", ...),
FunctionDeclaration(name="analyze_attack_pattern", ...),
])
self._model = GenerativeModel("gemini-2.0-flash-001", tools=[mcp_tools])
self._chat = self._model.start_chat()