نشر Wallarm كوكيل لبوابة API الخاصة بأمازون¶
هذا المثال يوضح كيفية حماية بوابة API الخاصة بأمازون باستخدام Wallarm مُنشر كوكيل داخلي في الشبكة الخاصة الافتراضية لـ AWS باستخدام وحدة Terraform.
حل Wallarm كوكيل يوفر طبقة شبكية وظيفية إضافية تعمل كموجه متقدم لحركة مرور HTTP مع وظائف أمان WAF وAPI. يمكنه توجيه الطلبات إلى معظم أنواع الخدمات بما في ذلك بوابة API الخاصة بأمازون دون تقييد قدراتها.
حالات الاستخدام¶
من بين جميع خيارات نشر Wallarm المدعومة، يُوصى باستخدام وحدة Terraform لنشر Wallarm على الشبكة الخاصة الافتراضية لـ AWS في هذه حالات الاستخدام:
-
بنيتك التحتية القائمة على AWS.
-
تستخدم ممارسة البنية التحتية ككود (IaC). تتيح وحدة Terraform الخاصة بـ Wallarm إدارة وتوفير عقدة Wallarm على AWS تلقائيًا، مما يعزز الكفاءة والاتساق.
المتطلبات¶
-
Terraform 1.0.5 أو أعلى مُثبت محليًا
-
الوصول إلى الحساب مع دور المسؤول role في وحدة تحكم Wallarm في السحابة الأمريكية أو الأوروبية Cloud
-
الوصول إلى
https://us1.api.wallarm.com
عند العمل مع سحابة Wallarm الأمريكية أو إلىhttps://api.wallarm.com
عند العمل مع سحابة Wallarm الأوروبية. الرجاء التأكد من عدم حظر الوصول بواسطة جدار الحماية
هندسة الحل¶
حل وكيل Wallarm في هذا المثال يتضمن المكونات التالية:
-
موازن التحميل الذي يواجه الإنترنت يوجه الحركة إلى عقد Wallarm.
-
عقد Wallarm تحلل الحركة وتوكل أي طلبات إلى بوابة API.
يعمل هذا المثال بعقد Wallarm في وضع المراقبة الذي يحرك السلوك الموصوف. يمكن لعقد Wallarm أيضًا العمل في أوضاع أخرى تهدف إلى حظر الطلبات الخبيثة وإعادة توجيه الطلبات المشروعة فقط. لمعرفة المزيد عن أوضاع عقد Wallarm، استخدم وثائقنا.
-
بوابة API التي توكل لها عقد Wallarm الطلبات لديها الإعدادات التالية:
- تم تعيين المسار
/demo/demo
. - تكوين واحد وهمي.
- خلال نشر وحدة Terraform هذه، يمكنك اختيار نوع النقطة النهائية لبوابة API "الإقليمية" أو "الخاصة". يتم توفير المزيد من التفاصيل حول هذه الأنواع والتحول بينها أدناه.
يرجى ملاحظة أن المثال المقدم ينشر بوابة API الخاصة بأمازون العادية، لذا لن يتأثر تشغيلها بعقد Wallarm.
- تم تعيين المسار
سيتم نشر جميع المكونات المذكورة بما في ذلك بوابة API بواسطة وحدة wallarm
المثال المقدمة.
مكونات الكود¶
يحتوي هذا المثال على المكونات البرمجية التالية:
-
main.tf
: التكوين الرئيسي لوحدةwallarm
المطلوب تنفيذها كحل وكيل. التكوين ينتج AWS ALB وعقد Wallarm. -
apigw.tf
: التكوين الذي ينتج بوابة API الخاصة بأمازون التي يمكن الوصول إليها تحت المسار/demo/demo
مع تكوين تكامل وهمي واحد. أثناء نشر الوحدة، يمكنك أيضًا اختيار نوع النقطة النهائية "الإقليمية" أو "الخاصة" (انظر التفاصيل أدناه). -
endpoint.tf
: تكوين نقطة النهاية الخاصة بـ AWS VPC لنوع النقطة النهائية "الخاصة" لبوابة API.
الفرق بين نقاط النهاية الإقليمية والخاصة لبوابة API¶
تحدد المتغير apigw_private
نوع نقطة النهاية لبوابة API:
- مع خيار "الإقليمية"، سترسل عقد Wallarm طلبات إلى خدمة بوابة API المتاحة للجمهور
execute-api
. - مع الخيار "الخاص" - إلى نقاط النهاية في AWS VPC المرفقة بخدمة
execute-api
. لنشر الإنتاج، يُوصى بالخيار "الخاص".
المزيد من الخيارات لتقييد الوصول إلى بوابة API¶
تمكنك أمازون أيضًا من تقييد الوصول إلى بوابتك API بغض النظر عن نوع نقطة النهاية "الخاصة" أو "الإقليمية" على النحو التالي:
-
باستخدام سياسات الموارد مع أي من نوعي النقاط النهائية المحددين.
-
إدارة الوصول بواسطة عناوين IPs المصدر، إذا كان نوع النقطة النهائية "خاص".
-
إدارة الوصول بواسطة VPC و/أو نقطة النهاية، إذا كان نوع النقطة النهائية "خاص" والذي يفترض بالفعل أن بوابة API غير متاحة من الشبكات العامة بتصميمها.
التحول بين أنواع نقاط النهاية لبوابة API¶
يمكنك تغيير نوع نقطة النهاية لبوابة API دون إعادة إنشاء المكون ولكن يرجى مراعاة الآتي:
-
عند تغيير النوع من "إقليمية" إلى "خاصة"، ستصبح النقاط النهائية العامة خاصة وبالتالي غير متاحة من الموارد العامة. ينطبق هذا على كل من نقاط النهاية
execute-api
وأسماء النطاقات. -
عند تغيير النوع من "خاص" إلى "إقليمية"، سيتم فصل نقاط نهاية AWS VPC المستهدفة لبوابة API الخاصة بك فورًا وستصبح بوابة API غير متاحة.
-
بما أن NGINX للإصدار المجتمعي لا يمكنه الكشف تلقائيًا عن تغييرات اسم DNS، يجب أن يتبع تغيير نوع النقطة النهائية إعادة تشغيل يدوية لـ NGINX على عقد Wallarm.
يمكنك إعادة التشغيل، إعادة إنشاء العقد أو تنفيذ
nginx -s reload
في كل عقدة.
إذا كنت تغير نوع النقطة النهائية من "إقليمية" إلى "خاصة":
-
إنشاء نقطة نهاية AWS VPC وإرفاقها بـ
execute-api
. ستجد المثال في ملف التكوينendpoint.tf
. -
تحويل نوع نقطة النهاية لبوابة API وتحديد نقطة نهاية AWS VPC في تكوين بوابة API. بمجرد الانتهاء، سيتوقف تدفق الحركة.
-
تشغيل
nginx -s reload
في كل عقدة Wallarm أو مجرد إعادة إنشاء كل عقدة Wallarm. بمجرد اكتماله، سيتم استعادة تدفق الحركة.
لا يُوصى بتغيير نوع النقطة النهائية من "خاصة" إلى "إقليمية" ولكن إذا فعلت:
-
إزالة نقطة النهاية المطلوبة للتشغيل في وضع "الخاص" ثم فقط تحويل نقطة النهائية لبوابة API إلى "إقليمية".
-
تشغيل
nginx -s reload
في كل عقدة Wallarm أو مجرد إعادة إنشاء كل عقدة Wallarm. بمجرد الانتهاء من ذلك، سيتم استعادة تدفق الحركة.
للإنتاج، يُوصى بتغيير بوابة API الخاصة بك إلى "خاصة"، وإلا سيتم تمرير حركة مرور من عقد Wallarm إلى بوابة API عبر الشبكة العامة وقد ينتج عن ذلك رسوم إضافية.
تشغيل مثال حل وكيل Wallarm AWS لبوابة API¶
-
سجل للحصول على وحدة تحكم Wallarm في السحابة الأوروبية أو السحابة الأمريكية.
-
افتح وحدة تحكم Wallarm → العقد وأنشئ العقدة من نوع عقدة Wallarm.
-
انسخ رمز العقدة المُنشأ.
-
انسخ مستودع الكود الذي يحتوي على مثال الكود إلى جهازك:
-
اضبط قيم المتغيرات في الخيارات
الافتراضية
في ملفexamples/apigateway/variables.tf
للمستودع المنسوخ واحفظ التغييرات. -
نفذ تشغيل الرزمة بتنفيذ الأوامر التالية من دليل
examples/apigateway
:
لإزالة البيئة المنشورة، استخدم الأمر التالي: