
نظام دفاع إلكتروني مستقل مدعوم بالذكاء الاصطناعي باستخدام MCP و Gemini 2.0 Flash و Dynatrace للمراقبة و MongoDB. تقديم مسابقة Google Cloud Hackathon.
تقديم لمسابقة Google Cloud Hackathon — كشف التهديدات ومعالجتها بشكل مستقل بوساطة Google Cloud Agent Builder (Vertex AI Agent)، مدعومة بـ Gemini 2.0 Flash و Protocol Model Context Protocol (MCP) وقابلية المراقبة من Dynatrace.
تواجه فرق الأمن متوسط وقت اكتشاف (MTTD) يبلغ 30 دقيقة ومتوسط وقت استجابة (MTTR) يبلغ 4 ساعات للحوادث النمطية. عندما يكتشف المحلل البشري الهجوم، ويكتب قاعدة جدار الحماية، وينشرها، يكون الضرر قد وقع.
يقلل SentinelMCP متوسط وقت الاكتشاف إلى < 30 ثانية ومتوسط وقت الاستجابة إلى < 30 ثانية من خلال نشر وكيل Google Cloud Agent Builder الذي يستقبل إشعارات Dynatrace الخاصة بالشذوذ، ويحللها باستخدام Gemini 2.0 Flash، ثم يستدعي أدوات الدفاع الحقيقية عبر MCP — مما يتيح العمل على البنية التحتية الحية، وليس مجرد التنبيه.
إشعار Dynatrace → Agent Builder يستقبل التنبيه → Gemini يحلل → أدوات MCP تنفذ → تحييد التهديد
1 ثانية 2 ثانية 8 ثوانٍ 15 ثانية 25 ثانية إجمالاً
النتيجة: دورة حياة الحادث التي كانت تتطلب محللاً بشرياً و4 ساعات، تُكتمل الآن بشكل مستقل في أقل من 30 ثانية، مع سجل تدقيق كامل في MongoDB وآثار موزعة في Jaeger.
┌──────────────────────────────────────────────────────────────────────┐
│ بيئة التجربة المعزولة │
│ │
│ ┌─────────────┐ 100–1000 طلب/ثانية ┌──────────────────────────┐ │
│ │ المهاجم │ ──────────────────────►│ victim-service │ │
│ │ (DDoS/SQLi) │ │ المنفذ 8080 │ │
│ └─────────────┘ │ /admin/* واجهة التحكم │ │
│ └────────────┬─────────────┘ │
└───────────────────────────────────────────────────────│────────────────┘
│ المقاييس + إشعار الشذوذ
┌────────────────────────────────────▼─────────────────┐
│ Dynatrace Mock (محرك الشذوذ) │
│ درجة مخاطر التهديد ← يرسل POST /alerts/simulate │
└────────────────────────┬─────────────────────────────┘
│ الإشعار
┌─────────────────────────────────▼──────────────────────────────┐
│ Google Cloud Agent Builder (Vertex AI Agent) │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Gemini 2.0 Flash — يحلل سياق التهديد │ │
│ │ وصف الأدوات — يتم جلبها ديناميكياً من MCP │ │
│ │ بوابة الإنسان في الحلقة — تتوقف إذا كانت الثقة < الحد الأدنى │ │
│ └──────────────────────────────────────────────────────────┘ │
└──────────────┬─────────────────────────┬───────────────────────┘
│ استدعاءات REST │ كتابة التدقيق
┌───────────────▼──────┐ ┌────────────▼──────────┐
│ خادم MCP :8001 │ │ MongoDB 7.0 Atlas │
│ 11 أداة حقيقية │ │ الحوادث + الآثار │
└───────────┬──────────┘ └───────────────────────┘
│ يعمل على البنية التحتية الحية
┌───────────▼──────────┐
│ FastAPI :8000 │
│ victim-service :8080│
└──────────────────────┘
┌──────────────────────────────────────────────────┐
│ مكدس قابلية المراقبة │
│ مجمع OTel ──► Jaeger (آثار موزعة) │
│ Prometheus ──────────► Grafana │
└──────────────────────────────────────────────────┘
مبدأ التصميم الأساسي: التدهور التدريجي + الإنسان في الحلقة (HITL). يتوقف وكيل Agent Builder بأمان ويعيد التحكم إلى المشغل عندما لا يتمكن من اتخاذ قرار بثقة كافية — لا يخمن أبداً على بنية تحتية حرجة.
جميع الخدمات الثلاث منشورة وتعمل على Google Cloud Run:
| الخدمة | الرابط |
|---|---|
| مركز القيادة (لوحة التحكم) | https://sentinel-api-62d3d66zda-uc.a.run.app/dashboard |
| وثائق Swagger API | https://sentinel-api-62d3d66zda-uc.a.run.app/docs |
| فحص الصحة | https://sentinel-api-62d3d66zda-uc.a.run.app/health |
| كتالوج أدوات MCP | https://sentinel-mcp-62d3d66zda-uc.a.run.app/mcp/tools |
| خدمة الهدف | https://victim-service-62d3d66zda-uc.a.run.app |
قم بتشغيل هجوم حي ضد الإنتاج:
.\attack.production.ps1 status # تحقق من أن جميع الخدمات سليمة
.\attack.production.ps1 ddos # DDoS — Gemini يحجب عناوين IP + يحدد المعدل
.\attack.production.ps1 sql # SQL Injection — Gemini يفعل WAF
.\attack.production.ps1 brute # Brute Force — Gemini يحجب عناوين IP المصدر
.\attack.production.ps1 stop # إعادة تعيين الدفاعات
حاوية المهاجم تعمل محلياً وتستهدف خدمة victim-service على Cloud Run عبر HTTPS. شاهد لوحة تحكم مركز القيادة لدورة الكشف → التحليل → التحييد الكاملة في الوقت الفعلي.
Google Cloud Agent Builder (Vertex AI ReasoningEngine) هو المنسق المركزي لـ SentinelMCP. يوجد التطبيق في sentinel_mcp/agent/agent_builder.py.
SentinelAgent يرث من vertexai.preview.reasoning_engines.Queryable — الواجهة البرمجية الرسمية لـ Agent Builder — ويمكن تشغيله محلياً أو نشره على خدمة Agent Builder المُدارة بأمر واحد.
| المسؤولية | التطبيق |
|---|---|
| استقبال الإشعارات | SentinelAgent.query(incident=...) — يتم استدعاؤها بواسطة Agent Builder عند كل تنبيه Dynatrace |
| إعلانات الأدوات | 6 أدوات MCP مسجلة ككائنات FunctionDeclaration من Vertex AI في set_up() |
| التحليل | Gemini 2.0 Flash يقرأ سياق التهديد + كتالوج الأدوات، يختار الحد الأدنى من الأدوات، يستدعيها تلقائياً |
| بوابة الإنسان في الحلقة | إذا لم يُرجع Gemini أي استدعاءات أدوات (ثقة < الحد الأدنى)، يتم إصدار escalate_to_humans=True |
| التدقيق | يتم تسجيل كل استدعاء أداة في MongoDB Atlas + تصديره كـ OTel span إلى Jaeger |
الكود الأساسي — sentinel_mcp/agent/agent_builder.py:
class SentinelAgent(reasoning_engines.Queryable):
def set_up(self):
# أدوات MCP كـ FunctionDeclarations من Vertex AI — Gemini يختار وقت التشغيل
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()