Application Security

تطبيق الحد الديناميكي لمعدل الطلبات باستخدام التعلم الآلي للكشف عن الشذوذ في بوابات واجهات برمجة التطبيقات

تصبح طرق الحد التقليدية لمعدل الطلبات، مثل حصص الطلبات الثابتة أو عدادات النافذة المنزلقة البسيطة، غير كافية بشكل متزايد في مواجهة هجمات حجب الخدمة الموزعة (DDoS) المتطورة وحركة مرور البوتات الحديثة. غالباً ما تؤدي هذه القواعد الثابتة إما إلى إيجابيات كاذبة مفرطة، مما يؤدي إلى حظر المستخدمين الشرعيين أثناء فترات ذروة الحركة، أو سلبيات كاذبة، مما يسمح للجهات الخبيثة بالتسلل عبر هجمات "منخفضة وبطيئة". يستكشف هذا المنشور كيفية تطبيق الحد الديناميكي لمعدل الطلبات باستخدام التعلم الآلي للكشف عن الشذوذ في الوقت الفعلي داخل بوابات واجهات برمجة التطبيقات (API).

قيود الحد الثابت لمعدل الطلبات

يعتمد الحد القياسي لمعدل الطلبات على عتبات محددة مسبقاً. على سبيل المثال، "السماح بـ 100 طلب في الدقيقة لكل عنوان IP". بينما يكون هذا النهج بسيطاً للتنفيذ، فإنه يفتقر إلى السياق. لا يمكنه التمييز بين عملية بيع مفاجئة تدفع حركة مرور شرعية وهجوم شبكة بوت منسقة. علاوة على ذلك، فهو رد فعل؛ فهو يحجب الحركة فقط بعد تجاوز العتبة، وغالباً ما يكون ذلك متأخراً جداً لمنع استنفاد الموارد أو تدهور الخدمة.

يقدم الحد الديناميكي لمعدل الطلبات، المدعوم بالتعلم الآلي (ML)، بديلاً ديناميكياً. من خلال تحليل أنماط الحركة التاريخية، وسلوك المستخدم، وبيانات الطلب الوصفية، يمكن لنماذج التعلم الآلي إنشاء خط أساس لـ "النشاط الطبيعي". يتم وضع أي انحراف عن هذا الخط الأساس كعلامة على شذوذ، مما يسمح للبوابة بتعديل سياسات الحد من السرعة في الوقت الفعلي.

المكونات الأساسية لبوابة مدفوعة بالتعلم الآلي

يتطلب تنفيذ هذا النظام خط أنابيب يتكامل مع بنية بوابة واجهة برمجة التطبيقات الحالية. تشمل المكونات الأساسية ما يلي:

  1. استيعاب البيانات: جمع بيانات التليمتري مثل عنوان IP، وكيل المستخدم، مسار الطلب، حجم الحمولة، وأكواد الاستجابة.
  2. هندسة الميزات: تحويل البيانات الخام إلى ميزات مناسبة لنماذج التعلم الآلي، مثل تكرار الطلبات، والفترات الزمنية بين الطلبات، وتباين معلمات الاستعلام.
  3. نموذج الكشف عن الشذوذ: استخدام خوارزميات مثل غابات العزل (Isolation Forests)، أو آلات ناقلات الدعم أحادية الفئة (One-Class SVM)، أو المشفرات التلقائية (Autoencoders) لتقييم الطلبات الواردة.
  4. محرك القرار: ترجمة درجات التعلم الآلي إلى إجراءات (السماح، الحد من السرعة، أو الحظر) بناءً على فترات الثقة.

التطبيق العملي باستخدام Python و Scikit-Learn

لننظر في مثال مبسط لكيفية تنفيذ نموذج للكشف عن الشذوذ باستخدام Python. سنستخدم غابة العزل (Isolation Forest)، والتي تكون فعالة في تحديد القيم المتطرفة في البيانات عالية الأبعاد.

أولاً، نحدد الميزات. في سيناريو العالم الحقيقي، سيتم استخراج هذه البيانات من سجلات واجهة برمجة التطبيقات الخاصة بك.

import numpy as np
from sklearn.ensemble import IsolationForest

# بيانات حركة مرور تاريخية محاكاة
# الميزات: [الطلبات في الدقيقة، متوسط حجم الحمولة بالكيلوبايت، نسبة معدل الخطأ]
historical_data = np.array([
    [10, 2.5, 0.01],
    [12, 2.4, 0.01],
    [11, 2.6, 0.02],
    [100, 50.0, 0.15],  # مثال محتمل للشذوذ
    [5, 2.5, 0.01]
])

# تهيئة وتدريب غابة العزل
# contamination=0.1 تعني أننا نتوقع أن تكون 10% من البيانات قيم متطرفة
model = IsolationForest(contamination=0.1, random_state=42)
model.fit(historical_data)

# دالة للتنبؤ بدرجة الشذوذ لحركة المرور الجديدة
def predict_anomaly(current_traffic):
    # current_traffic هو مصفوفة ثنائية الأبعاد كما هو مطلوب بواسطة sklearn
    prediction = model.predict([current_traffic])
    score = model.decision_function([current_traffic])
    
    if prediction[0] == -1:
        return "تم اكتشاف شذوذ - حد السرعة/احظر"
    else:
        return "حركة مرور عادية - اسمح"

# اختبار بطلب جديد
new_request = np.array([[15, 2.5, 0.01]]) # عادي
print(f"الحالة: {predict_anomaly(new_request)}")

suspicious_request = np.array([[500, 80.0, 0.5]]) # حجم/حمولة مرتفعة بشكل غير عادي
print(f"الحالة: {predict_anomaly(suspicious_request)}")

التكامل مع بوابات واجهات برمجة التطبيقات

لجعل هذا جاهزاً للإنتاج، يجب أن يعمل النموذج في بيئات ذات زمن استجابة منخفض. تشمل الأساليب الشائعة ما يلي:

  • نموذج الجار المجاور (Sidecar Pattern): نشر محرك استنتاج التعلم الآلي كحاوية جار مجاور جنباً إلى جنب مع بوابة واجهة برمجة التطبيقات الخاصة بك (على سبيل المثال، في Kubernetes). تقوم البوابة بتوجيه بيانات وصفية للطلب إلى الجار المجاور، الذي يعيد قراراً خلال أجزاء من الثانية.
  • الحوسبة الطرفية (Edge Computing): استخدام الوظائف الخالية من الخوادم (مثل AWS Lambda أو Cloudflare Workers) لتنفيذ نماذج تعلم آلي خفيفة الوزن على الحافة، مما يقلل من زمن الاستجابة وعدد القفزات الشبكية.
  • معالجة التدفق في الوقت الفعلي: استخدام Apache Kafka و Flink لمعالجة تدفقات سجلات الطلبات وتحديث ذاكرة التخزين المؤقت الموزعة (مثل Redis) بدرجات التهديد الحالية، والتي تتحقق منها البوابة مقابلها.

الخاتمة

الانتقال من الحد الثابت لمعدل الطلبات إلى الحد الديناميكي هو خطوة حاسمة لأمان التطبيقات الحديثة. من خلال الاستفادة من التعلم الآلي، يمكن للمنظمات حماية واجهات برمجة التطبيقات الخاصة بها ضد التهديدات المتطورة مع تقليل الإيجابيات الكاذبة التي تؤثر على تجربة المستخدم. بينما تكون تعقيدات التنفيذ الأولية أعلى من الطرق التقليدية، فإن الفوائد طويلة المدى في مرونة الأمان والكفاءة التشغيلية كبيرة. ابدأ بتسجيل البيانات الوصفية الغنية، وتجربة نماذج التعلم غير الخاضع للإشراف، ودمج هذه الرؤى تدريجياً في عملية صنع القرار الخاصة ببوابتك.

Share: