اكتشف مطور برمجيات كخدمة (SaaS) أن تفعيل وضع Bot Fight Mode من Cloudflare لكل نطاق في حسابه أدى إلى توقف حركة مرور واجهة برمجة التطبيقات (API) لمدة شهر كامل، مما جعل العملاء المشتركين غير قادرين على استخدام الميزات الأساسية لمنتجه.

ظهرت المشكلة عندما لاحظ المطور استواءً مفاجئاً في مقاييس الاستخدام؛ حيث استمرت عمليات التسجيل الجديدة، لكن الجلسات النشطة توقفت عن النمو. وبعد أسابيع من إعادة كتابة الكود وتصحيح الأخطاء، تبين أن مفتاح أمان واحد كان هو المتسبب: كان وضع Bot Fight Mode من Cloudflare يصنف نقطة نهاية AWS Lambda الخاصة بالـ SaaS على أنها "بوت" خبيث ويقوم بحظرها.

كيف تسبب إعداد واحد في تعطيل خدمة كاملة

اعتمدت البنية التقنية للمطور على اتصالات من خادم إلى خادم (server-to-server). حيث تقوم دالة Lambda داخلية بإرسال البيانات بانتظام إلى النطاق العام الخاص بالـ SaaS، وهو نمط شائع في معماريات الخدمات المصغرة (micro-service architectures) الحديثة. يقوم وضع Bot Fight Mode بتحدي أو حظر الطلبات التي تبدو وكأنها أدوات كشط (scrapers) آلية، وذلك لحماية المواقع القائمة على المحتوى من عمليات حصاد البيانات.

عندما تم تفعيل هذا الوضع عبر جميع المناطق (zones)، تعاملت Cloudflare مع الطلب الصادر من Lambda كعميل آلي آخر. لم يصل الطلب أبداً إلى التطبيق، ولأن الحظر حدث عند "الحافة" (edge)، لم تظهر أي أخطاء في أدوات المراقبة الخاصة بالـ SaaS – بل اختفت حركة المرور ببساطة. أدى ذلك إلى ارتفاع مفاجئ في استهلاك المعالج (CPU) لدى المطور على Cloudflare Workers، مما جعله يشتبه في وجود أداة كشط خارجية بدلاً من مشكلة في خلفيته البرمجية (backend) الخاصة به.

فقط بعد البحث في سجلات Cloudflare، رأى إدخالات "Bot Fight Mode" التي تحظر نطاق عناوين IP الخاص بـ Lambda. قام بإيقاف الميزة للمناطق المتأثرة، واستؤنفت حركة مرور الـ API، مما أعاد مقاييس الاستخدام إلى وضعها الطبيعي.

لماذا يمثل هذا الخطأ أهمية لمشغلي الـ SaaS

  • المنتجات التي تركز على الـ API تحتاج إلى قنوات مفتوحة من خادم إلى خادم. يفترض وضع Bot Fight Mode أن حركة المرور الأساسية هي طلبات متصفحات بشرية لملفات HTML أو الصور أو الأصول الثابتة. أما منصات الـ SaaS التي توفر واجهات برمجة تطبيقات (APIs) أو webhooks أو عمليات استدعاء داخلية (callbacks)، فقد تتعرض للتقييد أو الحظر دون ظهور رمز خطأ مرئي يصل إلى طبقة التطبيق.
  • إعدادات الأمان العالمية نادراً ما تناسب جميع أعباء العمل. تطبيق تكوين واحد من Cloudflare على جميع النطاقات يعامل كل موقع كما لو كان يشترك في نفس نموذج التهديد. فمواقع المحتوى والمنتديات والخلفيات البرمجية للـ SaaS لها متطلبات أمان مختلفة تماماً.
  • الإخفاقات الصامتة تلتهم الإيرادات. لم يعمل نظام التنبيه لدى المطور لأن الطلبات المحظورة لم تصل أبداً إلى التطبيق. فقط الانخفاض في مقاييس تفاعل المستخدمين هو ما أشار إلى المشكلة. وبدون مراجعة استباقية للسجلات على مستوى الحافة (edge-level)، يمكن لمشكلات مماثلة أن تستمر دون ملاحظتها.

ما يمكن للمطورين فعله لتجنب المصير نفسه

  1. تدقيق ملف تعريف حركة المرور لكل منطقة (zone). قبل تفعيل Bot Fight Mode، حدد أنواع الطلبات التي يتوقعها نطاقك: متصفحات بشرية، أو استدعاءات API، أو استدعاءات webhook، أو اتصالات خدمات داخلية. إذا كان أي منها ضرورياً للوظائف الأساسية، فتعامل مع المنطقة على أنها "API-first" وأبقِ إعدادات التخفيف من حدة البوتات في حدها الأدنى.
  2. اختبار التغييرات في بيئة تجريبية (staged environment). تتيح لك Cloudflare تطبيق الإعدادات على نطاق فرعي واحد أو منطقة تجريبية. تحقق من أن الأتمتة المشروعة لا تزال تعمل قبل تعميم التغيير عالمياً.
  3. مراقبة سجلات مستوى الحافة (edge-level) كجزء من حزمة المراقبة (observability stack) الخاصة بك. قم بتوجيه سجلات جدار حماية Cloudflare وسجلات التخفيف من البوتات إلى SIEM أو Loki أو أي خدمة تجميع بيانات. اربط الارتفاعات المفاجئة في الطلبات المحظورة بالانخفاض في مقاييس التطبيق لاكتشاف الإخفاقات الصامتة مبكراً.
  4. اجعل إعدادات الأمان قابلة للتراجع. احتفظ بخطة تراجع موثقة. إذا تسبب قانون جديد في سلوك غير متوقع، فقم بتعطيله أولاً وتأكد من التغيير قبل استثمار الوقت في حلول برمجية بديلة.
  5. اطرح السؤال الصحيح. بدلاً من سؤال "كيف يمكنني إيقاف أدوات الكشط؟"، اسأل "هل تحل هذه الأداة المشكلة المحددة التي أواجهها؟". قد لا يكون الميزة الأمنية التي تحظر أدوات الكشط هي الإجابة المناسبة لخدمة SaaS تحتاج إلى وصول مفتوح للـ API.

المنظور الأوسع

يظل وضع Bot Fight Mode ذا قيمة للمواقع التي تحتاج إلى حماية المحتوى الثابت من الزواحف (crawlers) العدوانية. لكن عيبه يكمن في عدم القدرة على التمييز بين أداة كشط عدائية وعميل آلي شرعي يتبع نفس أنماط HTTP.

الخلاصة

عندما تدير نطاقات متعددة تحت حساب Cloudflare واحد، عامل كل منها كمنطقة أمان متميزة. قم بتفعيل Bot Fight Mode فقط حيث تكون حركة المرور مدفوعة بشرياً فقط؛ أما بالنسبة لأعباء عمل الـ SaaS الكثيفة التي تعتمد على الـ API، فاجعل الإعداد مغلقاً أو قم بضبطه بدقة باستخدام قواعد جدار حماية مخصصة. نقرة واحدة يمكن أن تسكت حركة المرور المشروعة بنفس الفعالية التي توقف بها أداة كشط.