
Autonomes KI-gestütztes Cyberverteidigungssystem unter Verwendung von MCP, Gemini 2.0 Flash, Dynatrace Observability und MongoDB. Google Cloud Hackathon-Einreichung.
Google Cloud Hackathon Einreichung — Autonome Bedrohungserkennung und -abwehr, orchestriert durch Google Cloud Agent Builder (Vertex AI Agent), unterstützt von Gemini 2.0 Flash, Model Context Protocol (MCP) und Dynatrace Observability.
Sicherheitsteams haben bei typischen Vorfällen eine MTTD von 30 Minuten und eine MTTR von 4 Stunden. Wenn ein menschlicher Analyst den Angriff erkennt, die Firewall-Regel schreibt und bereitstellt, ist der Schaden bereits eingetreten.
SentinelMCP reduziert die MTTD auf < 30 Sekunden und die MTTR auf < 30 Sekunden, indem ein Google Cloud Agent Builder-Agent bereitgestellt wird, der Dynatrace-Anomalie-Webhooks empfängt, sie mit Gemini 2.0 Flash analysiert und über MCP echte Abwehrwerkzeuge aufruft — er handelt auf der Live-Infrastruktur, nicht nur durch Alarmierung.
Dynatrace-Webhook → Agent Builder erhält Alarm → Gemini analysiert → MCP-Tools führen aus → Bedrohung neutralisiert
1 s 2 s 8 s 15 s 25 s gesamt
Das Ergebnis: Ein Vorfall-Lebenszyklus, der zuvor einen menschlichen Analysten und 4 Stunden erforderte, wird nun autonom in unter 30 Sekunden abgeschlossen, mit vollständigem Prüfpfad in MongoDB und verteilten Traces in Jaeger.
┌──────────────────────────────────────────────────────────────────────┐
│ SANDBOX-UMGEBUNG │
│ │
│ ┌─────────────┐ 100–1000 req/s ┌──────────────────────────┐ │
│ │ Angreifer │ ──────────────────►│ victim-service │ │
│ │ (DDoS/SQLi) │ │ Port 8080 │ │
│ └─────────────┘ │ /admin/* Kontroll-API │ │
│ └────────────┬─────────────┘ │
└───────────────────────────────────────────────────│──────────────────┘
│ Metriken + Anomalie-Webhook
┌────────────────────────────────▼─────────────────┐
│ Dynatrace Mock (Anomalie-Engine) │
│ Bedrohungs-Risiko-Score → sendet POST /alerts/simulate│
└────────────────────────┬─────────────────────────┘
│ Webhook
┌─────────────────────────────────▼──────────────────────────┐
│ Google Cloud Agent Builder (Vertex AI Agent) │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Gemini 2.0 Flash ── analysiert Bedrohungskontext │ │
│ │ Tool-Manifest ── dynamisch von MCP abgerufen │ │
│ │ HITL-Schleuse ── stoppt bei Konfidenz < Schwelle │ │
│ └──────────────────────────────────────────────────────┘ │
└──────────────┬─────────────────────────┬───────────────────┘
│ REST-Aufrufe │ Prüfpfad schreiben
┌───────────────▼──────┐ ┌────────────▼──────────┐
│ MCP-Server :8001 │ │ MongoDB 7.0 Atlas │
│ 11 echte Tools │ │ Vorfälle + Traces │
└───────────┬──────────┘ └───────────────────────┘
│ wirkt auf Live-Infrastruktur
┌───────────▼──────────┐
│ FastAPI :8000 │
│ victim-service :8080│
└──────────────────────┘
┌──────────────────────────────────────────────────┐
│ OBSERVABILITY-STACK │
│ OTel Collector ──► Jaeger (verteilte Traces) │
│ Prometheus ──────────────► Grafana │
└──────────────────────────────────────────────────┘
Wichtiges Designprinzip: Graceful Degradation + Human-in-the-Loop (HITL). Der Agent Builder-Agent hält sicher an und übergibt die Kontrolle zurück an den Bediener, wenn er keine Entscheidung mit ausreichender Konfidenz treffen kann — er rät nie an kritischer Infrastruktur.
Alle drei Dienste sind auf Google Cloud Run bereitgestellt und laufen:
Führen Sie einen Live-Angriff gegen die Produktion aus:
.\attack.production.ps1 status # Überprüfen, ob alle Dienste gesund sind
.\attack.production.ps1 ddos # DDoS — Gemini blockiert IPs + Ratenbegrenzung
.\attack.production.ps1 sql # SQL-Injection — Gemini aktiviert WAF
.\attack.production.ps1 brute # Brute Force — Gemini blockiert Quell-IPs
.\attack.production.ps1 stop # Abwehr zurücksetzen
Der Angreifer-Container läuft lokal und greift den Cloud Run victim-service über HTTPS an. Beobachten Sie das Kommandozentralen-Dashboard für den vollständigen Erkennungs → Analyse → Neutralisationszyklus in Echtzeit.
Google Cloud Agent Builder (Vertex AI ReasoningEngine) ist der zentrale Orchestrator von SentinelMCP. Die Implementierung befindet sich in sentinel_mcp/agent/agent_builder.py.
SentinelAgent erbt von vertexai.preview.reasoning_engines.Queryable — der offiziellen programmatischen Schnittstelle von Agent Builder — und kann lokal ausgeführt oder mit einem einzigen Befehl auf den verwalteten Agent Builder-Dienst bereitgestellt werden.
Schlüsselcode — sentinel_mcp/agent/agent_builder.py:
class SentinelAgent(reasoning_engines.Queryable):
def set_up(self):
# MCP-Tools als Vertex AI FunctionDeclarations — Gemini wählt zur Laufzeit aus
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()
def query(self, *, incident: dict) -> dict:
# Einstiegspunkt — Agent Builder ruft dies für jeden Dynatrace-Webhook auf
response = self._chat.send_message(threat_prompt(incident))
tool_calls = [{"name": p.function_call.name, "args": dict(p.function_call.args)}
for p in response.candidates[0].content.parts if p.function_call]
return {"engine": "agent_builder", "tool_calls": tool_calls, ...}
Bereitstellung auf Google Cloud Agent Builder:
# Lokal testen (kein GCP erforderlich mit google_ai_studio-Backend)
python scripts/deploy_agent_builder.py --test-only
# Auf verwalteten Agent Builder-Endpunkt bereitstellen
python scripts/deploy_agent_builder.py --project my-gcp-project
Agent Builder als aktives Backend festlegen:
# .env
GEMINI_BACKEND=agent_builder
GOOGLE_CLOUD_PROJECT=my-gcp-project
VERTEX_LOCATION=us-central1
SentinelMCP integriert Dynatrace Observability auf drei Ebenen:
OpenTelemetry-Pipeline — Der sentinel-otel-collector nimmt Spans und Metriken vom FastAPI-Kern entgegen und leitet sie an den Dynatrace Mock-Endpunkt (OTLP/HTTP :14318) weiter. Jeder Vorfall, jede Tool-Ausführung und jeder LLM-Aufruf wird mit vollständigen Korrelations-IDs Ende-zu-Ende getraced.
Anomalie-Engine mit automatischem Auslöser — dynatrace-mock führt eine Hintergrundschleife aus, die http_requests_total überwacht, einen Bedrohungs-Risiko-Score (dynatrace_mock_sentinel_risk_score, 0–10) berechnet und automatisch POST /api/v1/alerts/simulate/{type} an SentinelMCP sendet, wenn der Score den kritischen Schwellwert überschreitet — und reproduziert damit genau das Verhalten eines Produktions-Dynatrace-Davis-Anomalieerkennungs-Webhooks.
Grafana-Dashboard mit Dynatrace-Metriken — Die Risiko-Score-Anzeige und -Zeitleiste verwenden direkt dynatrace_mock_sentinel_risk_score, sodass der genaue Zeitpunkt visualisiert werden kann, zu dem Dynatrace die Anomalie meldete, im Vergleich zum Zeitpunkt, zu dem SentinelMCP die Neutralisierung erreichte.
Der Gemini-Agent entdeckt seine Verteidigungsfähigkeiten dynamisch zur Laufzeit — keine hartcodierten Tool-Listen, kein Umschreiben von Prompts bei Änderungen der Fähigkeiten:
GET /mcp/tools → gibt 11 Tool-Deskriptoren zurück → Gemini wählt Tools aus und ruft sie auf
Jedes Tool ist im Live-Katalog mit REAL oder Audit-Only gekennzeichnet. Gemini liest dieses Flag, versteht, was es auf der Live-Infrastruktur tatsächlich tun kann, und begründet jede Tool-Auswahl in seinem Analysetrace. Das Hinzufügen einer neuen Verteidigungsfähigkeit erfordert kein Prompt-Engineering.
Tools, die auf der Live-Infrastruktur wirken:
Voraussetzungen: Docker Desktop 24+, Google Cloud-Anmeldeinformationen oder AI Studio-API-Schlüssel, ~3 GB Festplatte, ~2 GB RAM.
docker compose up -d --build
Erster Start lädt Basis-Images herunter (~3 GB, 5–10 Min.). Nachfolgende Starts dauern unter 1 Minute.
cd simulacion
docker compose up -d victim-service
cd ..
docker compose ps
# Erwartet: 8 Dienste laufen/gesund
curl http://localhost:8000/health
# Erwartet: {"status": "healthy", "service": "SentinelMCP", ...}
.\attack.ps1 ddos # DDoS-Angriff (Standard)
.\attack.ps1 sql # SQL-Injection
.\attack.ps1 brute # Brute Force
.\attack.ps1 stop # Angriff stoppen + Abwehr zurücksetzen
.\attack.ps1 status # Systemzustand prüfen
Öffnen Sie die Kommandozentrale während des Angriffs:
http://localhost:8000/dashboard
Beobachten Sie die 4 Phasen in ~25 Sekunden:
BEDROHUNG ERKANNT — Dynatrace löst den Alarm ausVERTEIDIGUNG — Gemini liest den MCP-Tool-Katalog, wählt Aktionen aus, protokolliert die AnalyseNEUTRALISIERT — MTTD und MTTR mit vollständigem Prüfpfad angezeigtSentinelMCP basiert auf Gemini. Wählen Sie die Authentifizierungsmethode, die zu Ihrer Umgebung passt:
Option A — Google AI Studio (schnellste Einrichtung):
# .env bearbeiten
GOOGLE_API_KEY=AIza...Ihr_Schlüssel_hier
GEMINI_BACKEND=google_ai_studio
Option B — Vertex AI auf Google Cloud:
gcloud auth application-default login
.\scripts\setup_gcloud.ps1 # setzt Projekt, erstellt SA-Key, aktualisiert .env automatisch
Starten Sie dann die KI-Engine neu: docker compose restart api
GET http://localhost:8001/mcp/tools
SentinelMCP verwendet einen ausfallsicheren Prüfmodus. Wenn die Zielinfrastruktur nicht erreichbar ist, zeichnet der Agent die beabsichtigten Aktionen auf, ohne die Pipeline zu unterbrechen, und gewährleistet so eine geordnete Verschlechterung. Gemini liest das Flag REAL / Audit-Only im Katalog — es weiß genau, was es ausführen kann, im Gegensatz zu dem, was es nur empfehlen kann.
sentinel_mcp/
├── api/ FastAPI-Kern — Routen, Schemata, Dashboard-UI
├── agent/ Entscheidungs-Engine + LLM-Anbieter (Gemini 2.0 Flash, Vertex AI)
├── mcp_server/ MCP-Server + 11 Tool-Implementierungen
├── services/ Vorfall-Dienst, Remediation-Orchestrator, Bedrohungsrechner
├── observability/ OTel / Dynatrace / SigNoz-Anbieter
└── core/ Konfiguration, Logging, Ausnahmen
simulacion/
├── victim-service/ FastAPI-Zieldienst mit /admin/* Kontrollebene
└── attacker/ Python-Angriffs-Engine (DDoS / SQLi / Brute Force)
docker/
├── prometheus.yml Scrape-Konfiguration (victim-service alle 5s)
└── grafana/ Automatisch bereitgestelltes Dashboard — 6-Felder-Infrastruktur-Beobachtung
| Dienst | URL |
|---|
| Kommandozentrale (Dashboard) | https://sentinel-api-62d3d66zda-uc.a.run.app/dashboard |
| Swagger API-Dokumentation | https://sentinel-api-62d3d66zda-uc.a.run.app/docs |
| Health Check | https://sentinel-api-62d3d66zda-uc.a.run.app/health |
| MCP-Tool-Katalog | https://sentinel-mcp-62d3d66zda-uc.a.run.app/mcp/tools |
| Victim Service | https://victim-service-62d3d66zda-uc.a.run.app |
| Verantwortung | Implementierung |
|---|
| Webhook-Aufnahme | SentinelAgent.query(incident=...) — wird von Agent Builder bei jedem Dynatrace-Alarm aufgerufen |
| Tool-Deklarationen | 6 MCP-Tools als Vertex AI FunctionDeclaration-Objekte in set_up() registriert |
| Analyse | Gemini 2.0 Flash liest Bedrohungskontext + Tool-Katalog, wählt die minimalen Tools aus, ruft sie automatisch auf |
| HITL-Schleuse | Wenn Gemini keine Tool-Aufrufe zurückgibt (Konfidenz < Schwelle), wird escalate_to_humans=True ausgegeben |
| Prüfpfad | Jeder Tool-Aufruf wird in MongoDB Atlas protokolliert + als OTel-Span nach Jaeger exportiert |
| Tool | Was es tut |
|---|
block_ip_address | POST /admin/block_ip — blockiert Angreifer-IPs in der laufenden Middleware |
activate_waf | POST /admin/waf — aktiviert den WAF-Blockierungsmodus im laufenden Dienst |
rate_limit_requests | POST /admin/rate_limit — gleitender Fenster-Ratenbegrenzer, sofort aktiv |
scale_service | Docker SDK über Socket — startet echte Replikat-Container unter Last |
rollback | POST /admin/reset_defenses — demonstriert den vollständigen Vorfall-Lebenszyklus: Angriff → Verteidigung → Wiederherstellung |
collect_forensic_logs | Erfasst echte Beweise aus laufenden Containern für die Nachbereitung |
build_attack_timeline | Chronologische Zeitleiste aus Live-Container-Logs |
analyze_attack_pattern | Klassifiziert den Angriffstyp mit echten Vorfallkontextdaten |
identify_iocs | Extrahiert echte IPs, User-Agents und Payloads aus live Vorfallsdateien |
| URL | Was sie zeigt |
|---|
| https://sentinel-api-62d3d66zda-uc.a.run.app/dashboard | Kommandozentrale — Haupt-Demo-UI |
| https://sentinel-api-62d3d66zda-uc.a.run.app/docs | Swagger — interaktiver API-Explorer |
| https://sentinel-api-62d3d66zda-uc.a.run.app/health | Health Check |
| https://sentinel-api-62d3d66zda-uc.a.run.app/api/v1/incidents | Vorfall-Verlauf (JSON) |
| https://sentinel-mcp-62d3d66zda-uc.a.run.app/mcp/tools | Live-MCP-Tool-Katalog, wie von Gemini gelesen |
| https://victim-service-62d3d66zda-uc.a.run.app | Victim Service (das Ziel unter Angriff) |
| URL | Was sie zeigt |
|---|
http://localhost:8000/dashboard | Kommandozentrale — Haupt-Demo-UI |
http://localhost:8000/docs | Swagger — interaktiver API-Explorer |
http://localhost:8000/api/v1/incidents | Vorfall-Verlauf (JSON) |
http://localhost:8000/api/v1/incidents/statistics/summary | MTTD / MTTR-Durchschnitte über alle Vorfälle |
http://localhost:8001/mcp/tools | Live-MCP-Tool-Katalog, wie von Gemini gelesen |
http://localhost:8080 | Victim Service (das Ziel unter Angriff) |
http://localhost:14499 | Dynatrace Mock — Live-Metriken + Anomalie-Engine |
http://localhost:16686 | Jaeger — verteilte Traces |
http://localhost:9090 | Prometheus — Rohmetriken |
http://localhost:3000 | Grafana — Infrastruktur-Dashboard (admin / admin) |
| Szenario | Skript | Was passiert |
|---|
| DDoS | .\attack.ps1 ddos | 1000 req/s Flut; Gemini blockiert IPs + aktiviert Ratenbegrenzung |
| SQL-Injection | .\attack.ps1 sql | Payload-Erkennung; Gemini aktiviert WAF im Blockierungsmodus |
| Brute Force | .\attack.ps1 brute | Login-Hammering; Gemini blockiert Quell-IPs + aktiviert WAF |
| Auto-Modus | Dashboard 🎯 Auto ON | Zufällige Angriffe alle 45–90s, vollständig autonome Reaktion |
| Tool | Kategorie | Modus |
|---|
analyze_attack_pattern | Analyse | REAL |
identify_iocs | Analyse | REAL |
block_ip_address | Verteidigung | REAL → victim-service |
activate_waf | Verteidigung | REAL → victim-service |
rate_limit_requests | Verteidigung | REAL → victim-service |
scale_service | Verteidigung | REAL → Docker SDK |
collect_forensic_logs | Forensik | REAL |
build_attack_timeline | Forensik | REAL |
patch_vulnerabilities | Schadensbehebung | Audit-Only |
apply_hardening | Härtung | Audit-Only |
rollback | Schadensbehebung | REAL → victim-service |
| Ebene | Technologie |
|---|
| Agent-Orchestrator | Google Cloud Agent Builder (Vertex AI Agent) |
| LLM | Gemini 2.0 Flash — über google-genai SDK |
| Tool-Protokoll | MCP (Model Context Protocol) — 11 echte Tools |
| API | FastAPI + Uvicorn (Python 3.11) |
| Datenbank | MongoDB 7.0 Atlas (Motor async) |
| Observability | OpenTelemetry → Dynatrace |
| Tracing | Jaeger |
| Metriken | Prometheus + Grafana |
| HTTP-Client | httpx (async) |
| Container-Orchestrierung | Docker Compose v2 |