CloudFront مع WAF وLambda@Edge
أرفقوا AWS WAF لحظر هجمات الويب الشائعة، وشغّلوا تحويلات خفيفة للطلبات والاستجابات عند الحافة باستخدام Lambda@Edge.
CloudFront مع WAF وLambda@Edge درس مجاني في Cloud & IT Cert Prep على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cloud & IT Cert Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.
حماية CloudFront باستخدام AWS WAF
تعمل AWS WAF (Web Application Firewall) على تصفية طلبات HTTP/HTTPS ومراقبتها أثناء وصولها إلى توزيعة CloudFront الخاصة بك. ومن خلال إرفاق Web ACL من WAF بتوزيعتك، يمكنك حظر عمليات استغلال الويب الشائعة، مثل حقن SQL والبرمجة النصية عبر المواقع (XSS) والروبوتات السيئة وهجمات OWASP Top 10، قبل وصولها إلى المصدر.
يعمل WAF عند حافة CloudFront، ما يعني رفض الطلبات الضارة في أقرب موقع حافة بدلًا من وصولها إلى ALB أو خادم التطبيق لديك. ويقلل ذلك الحمل على الواجهة الخلفية ويوقف الهجمات بالقرب من المهاجم.
# Associate a WAF Web ACL with a CloudFront distribution
aws wafv2 associate-web-acl \
--web-acl-arn arn:aws:wafv2:us-east-1:123456789:global/webacl/MyACL/12345 \
--resource-arn arn:aws:cloudfront::123456789:distribution/EDFDVBD6EXAMPLEقواعد WAF ومجموعات القواعد
تحتوي Web ACL في WAF على قواعد ومجموعات قواعد مرتبة، تطابق كل منها سمات الطلب وتتخذ إجراءً، مثل Allow أو Block أو Count أو CAPTCHA. ويُقيَّم القواعد حسب ترتيب الأولوية، ويُطبَّق إجراء أول قاعدة مطابقة.
توفر AWS مجموعات قواعد مُدارة، وهي مجموعات قواعد مُنشأة مسبقًا وتتولى AWS وبائعو AWS Marketplace صيانتها. وتغطي AWS Managed Rules - Core Rule Set أهم 10 مخاطر في OWASP من دون الحاجة إلى أي إعداد. وتحدّث AWS مجموعات القواعد المُدارة عند ظهور تهديدات جديدة، ما يقلل العبء التشغيلي عليك.
# Create a Web ACL with AWS Managed Core Rule Set
aws wafv2 create-web-acl \
--name MyCloudFrontACL \
--scope CLOUDFRONT \
--default-action Allow={} \
--rules '[{
"Name": "CoreRuleSet",
"Priority": 1,
"Statement": {
"ManagedRuleGroupStatement": {
"VendorName": "AWS",
"Name": "AWSManagedRulesCommonRuleSet"
}
},
"OverrideAction": {"None": {}},
"VisibilityConfig": {
"SampledRequestsEnabled": true,
"CloudWatchMetricsEnabled": true,
"MetricName": "CoreRuleSet"
}
}]' \
--visibility-config SampledRequestsEnabled=true,CloudWatchMetricsEnabled=true,MetricName=MyACL \
--region us-east-1تحديد معدل الطلبات والتحكم في الروبوتات باستخدام WAF
تحسب القواعد المستندة إلى معدل الطلبات في WAF عدد الطلبات الواردة من كل عنوان IP مصدر خلال نافذة زمنية مدتها 5 دقائق. وإذا تجاوز عنوان IP الحد، مثل 2,000 طلب خلال 5 دقائق، يحظر WAF الطلبات اللاحقة من ذلك العنوان حتى ينخفض المعدل. وتحمي القواعد المستندة إلى معدل الطلبات من هجمات القوة الغاشمة وحشو بيانات الاعتماد وهجمات الكشط البسيطة لحجب الخدمة الموزع.
يُعد AWS WAF Bot Control مجموعة قواعد مُدارة تصنّف حركة المرور إلى فئات: روبوتات تم التحقق منها، مثل Googlebot وBingbot، وأدوات الكشط، وأدوات المراقبة، وحركة مرور بشرية. ويمكنك إعداد إجراءات مختلفة لكل فئة، مثل السماح لروبوتات محركات البحث، وطلب اختبار CAPTCHA من الروبوتات غير المعروفة، وحظر أدوات الكشط الضارة.
نطاق WAF: CLOUDFRONT مقابل REGIONAL
يكون نطاق Web ACL في WAF إما CLOUDFRONT، وهو نطاق عام للاستخدام مع CloudFront، أو REGIONAL، للاستخدام مع ALB أو API Gateway أو AppSync أو Cognito User Pools في منطقة محددة. ويجب إنشاء ACL الخاصة بـ WAF ذات نطاق CloudFront في منطقة us-east-1، بغض النظر عن مكان نشوء حركة المرور، لأن CloudFront تُدار من تلك المنطقة.
هذه نقطة مهمة قد تسبب خطأ في الاختبار: إذا أنشأت Web ACL لـ WAF في eu-west-1 وحاولت إرفاقها بـ CloudFront، فسيفشل الإرفاق. أنشئ دائمًا ACL الخاصة بـ WAF وCloudFront في us-east-1.
مقدمة إلى Lambda@Edge
تتيح لك Lambda@Edge تشغيل دوال Lambda المكتوبة بلغة Node.js أو Python في مواقع حافة CloudFront استجابةً لأحداث CloudFront. وتعمل الدوال خلال أجزاء من الثانية من وقت طلب المستخدم، من دون إعادة توجيه حركة المرور إلى منطقة مركزية لمعالجتها.
تُنشر دوال Lambda@Edge في منطقة us-east-1، لكنها تُنسخ تلقائيًا إلى جميع مواقع حافة CloudFront حول العالم. وهذا يعني أن الشفرة تُنفَّذ بالقرب من المستخدم قدر الإمكان، ما يتيح التخصيص والمصادقة واختبار A/B عند الحافة مع أقل قدر من زمن الوصول الإضافي.
نقاط تشغيل Lambda@Edge
يمكن لدوال Lambda@Edge اعتراض طلبات CloudFront واستجاباته عند أربع نقاط في دورة الحياة:
- Viewer Request: بعد تلقي CloudFront الطلب من المشاهد وقبل التحقق من ذاكرة التخزين المؤقت؛ تُستخدم للمصادقة وإعادة التوجيه ومعالجة الرؤوس
- Origin Request: بعد فقدان البيانات في ذاكرة التخزين المؤقت وقبل إعادة التوجيه إلى المصدر؛ تُستخدم لإعادة كتابة عناوين URL وإضافة رؤوس مخصصة إلى المصدر
- Origin Response: بعد تلقي الاستجابة من المصدر وقبل تخزينها مؤقتًا؛ تُستخدم لإضافة رؤوس الأمان وتعديل الاستجابة
- Viewer Response: قبل أن يرسل CloudFront الاستجابة إلى المشاهد؛ تُستخدم لإضافة رؤوس الاستجابة أو تعديلها
Lambda@Edge مقابل CloudFront Functions
توفر AWS خيارين للحوسبة عند الحافة مع مفاضلات مختلفة:
- CloudFront Functions: تنفيذ خلال أقل من ميلي ثانية، وتدعم JavaScript فقط، وتكلفة منخفضة للغاية (نحو سدس السعر)، وتعمل فقط عند حدثَي Viewer Request وViewer Response، مع حد زمني للحوسبة يبلغ 1 مللي ثانية، ومن دون وصول إلى VPC أو الشبكة
- Lambda@Edge: مدة تنفيذ تصل إلى 30 ثانية (Viewer) أو 30 ثانية (Origin)، وتدعم Node.js أو Python، وجميع نقاط التشغيل الأربع، ويمكنها إجراء طلبات شبكة، مع إمكانية الوصول إلى أجسام الطلبات والاستجابات
استخدم CloudFront Functions لمعالجة الرؤوس البسيطة وتوحيد عناوين URL وحساب مفتاح التخزين المؤقت. واستخدم Lambda@Edge للمنطق المعقد الذي يتطلب استدعاءات شبكة أو معالجة أطول أو معالجة على جانب المصدر.
حالات استخدام Lambda@Edge
الأنماط الشائعة لـ Lambda@Edge في اختبار SAA-C03:
- التحقق من JWT عند الحافة: تتحقق دالة Viewer Request من رأس Authorization؛ وتعيد الطلبات غير المصرح بها 401 من دون الوصول إلى المصدر
- اختبار A/B: تُسند دالة Viewer Request المستخدمين إلى المجموعة A أو B، عبر ملف تعريف ارتباط، وتعدّل الطلب لجلب
/a/page.htmlأو/b/page.html - إعادة كتابة عناوين URL: تعيد Origin Request كتابة عناوين URL الواضحة إلى مسارات الملفات الفعلية في S3
- تغيير حجم الصور ديناميكيًا: تنشئ Origin Request طلبًا إلى Lambda لمعالجة الصور؛ وتخزّن Origin Response الصورة التي أُعيد تغيير حجمها مؤقتًا
- رؤوس أمان HTTP: تضيف Viewer Response رؤوس CSP وHSTS وX-Frame-Options
قيود Lambda@Edge
تفرض Lambda@Edge عدة قيود مقارنةً بـ Lambda القياسية:
- يجب أن تكون الدوال في منطقة us-east-1
- لا تدعم VPC (ولا يمكنها الوصول إلى الموارد الموجودة في VPC)
- لا تدعم متغيرات البيئة (يجب تضمين الإعدادات في كود الدالة أو جلبها من Parameter Store عند بدء التشغيل البارد)
- لا يمكن استخدام Lambda Layers
- مهلة أحداث العارض: 5 ثوانٍ؛ مهلة أحداث المصدر: 30 ثانية
- حد حجم حزمة النشر: 1 ميغابايت (أحداث العارض) / 50 ميغابايت (أحداث المصدر)
تجعل هذه القيود Lambda@Edge غير مناسبة للحسابات طويلة التشغيل، أو العمليات التي تعتمد على VPC، أو الدوال التي تحتاج إلى إعدادات ديناميكية مع كل عملية نشر.
WAF + Lambda@Edge: أمان متعدد الطبقات
يؤدي كل من WAF وLambda@Edge أدوارًا أمنية مختلفة ويكمل أحدهما الآخر:
- WAF: حظر الهجمات المستند إلى التواقيع (حقن SQL، وXSS، والجهات المعروفة الخبيثة، وتحديد معدل الطلبات)—تتعامل القواعد المُدارة تلقائيًا مع الهجمات الشائعة
- Lambda@Edge: منطق أمان مخصص للأعمال (التحقق من JWT، وفحص الجلسات، والتحقق من رموز الوصول)—يوفر مرونة، لكنه يتطلب جهدًا في التطوير
بنية أمان متعددة الطبقات: يحظر WAF أنماط الهجمات المعروفة أولًا؛ ثم تتحقق Lambda@Edge من المصادقة على مستوى الأعمال؛ وتقيّد عناوين URL/ملفات تعريف الارتباط الموقعة في CloudFront الوصول إلى المحتوى؛ ويحافظ OAC على خصوصية S3. تمنع كل طبقة بشكل مستقل فئة مختلفة من الهجمات.
مراقبة WAF وLambda@Edge
راقب طبقة الأمان الطرفية باستخدام الأدوات التالية:
- سجلات WAF: فعّل التسجيل الكامل للطلبات إلى S3 أو CloudWatch Logs أو Kinesis Firehose لمعرفة القواعد المطابقة وحركة المرور المحظورة
- مقاييس WAF: المقاييس
BlockedRequestsوAllowedRequestsوCountedRequestsلكل قاعدة في CloudWatch - سجلات Lambda@Edge: تُنشأ مجموعات CloudWatch Logs في كل منطقة تُنفَّذ فيها الدالة؛ استخدم CloudWatch Insights للاستعلام عبر المناطق
- سجلات CloudFront في الوقت الفعلي: أرسل سجلات الوصول إلى Kinesis للتحليل الفوري (مقارنةً بسجلات الوصول القياسية التي تُجمَّع كل بضع دقائق)
تحقق سريع
اختبر مدى فهمك لمفاهيم AWS Solutions Architect (SAA-C03) الواردة في هذا الدرس.
مراجعة الدرس
تعلّمت في هذا الدرس أن AWS WAF يحظر هجمات الويب الشائعة عند الحافة الخاصة بـ CloudFront باستخدام مجموعات القواعد المُدارة والمخصصة، وأن Lambda@Edge تنفّذ كودًا مخصصًا عند أربع نقاط تشغيل في CloudFront على مستوى العالم، وأن CloudFront Functions توفر تنفيذًا في أقل من ميلي ثانية للمنطق البسيط على جانب العارض. يجب إنشاء قوائم ACL الخاصة بـ WAF لـ CloudFront في us-east-1. بعد ذلك سنستكشف موازنات التحميل للتطبيقات والشبكات والبوابات.
الأسئلة الشائعة
هل درس «CloudFront مع WAF وLambda@Edge» مجاني؟
نعم — نص درس «CloudFront مع WAF وLambda@Edge» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cloud & IT Cert Prep، انتقل إلى CoddyKit PRO. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.
ماذا ستتعلم في «CloudFront مع WAF وLambda@Edge»؟
أرفقوا AWS WAF لحظر هجمات الويب الشائعة، وشغّلوا تحويلات خفيفة للطلبات والاستجابات عند الحافة باستخدام Lambda@Edge. تتمرن على Cloud & IT Cert Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Cloud & IT Cert Prep؟
لا تُشترط خبرة سابقة. Cloud & IT Cert Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «CloudFront مع WAF وLambda@Edge»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Cloud & IT Cert Prep هذا؟
نعم. كل درس في Cloud & IT Cert Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- توزيعات CloudFront والمصادر الأصلية
- سلوكيات ذاكرة التخزين المؤقت وإعدادات TTL
- عناوين URL الموقعة وملفات تعريف الارتباط الموقعة والتقييد الجغرافي
- CloudFront مع WAF وLambda@Edge