حماية Azure Container Apps باستخدام Web Application Firewall على Application Gateway
عند استضافة التطبيقات أو الخدمات المصغرة في Azure Container Apps، قد لا ترغب دائما في نشرها مباشرة على الإنترنت. بدلا من ذلك، قد ترغب في كشفها من خلال وكيل عكسي.
الوكيل العكسي هو خدمة تقع أمام خدمة واحدة أو أكثر، وتعترض حركة المرور الواردة وتوجهها إلى الوجهة المناسبة.
تسمح لك الوكلاء العكسية بوضع الخدمات أمام تطبيقاتك التي تدعم الوظائف الشاملة بما في ذلك:
- التوجيه
- التخزين المؤقت
- تحديد السعر
- موازنة الأحمال
- طبقات الأمان
- طلب التصفية
توضح هذه المقالة كيفية حماية تطبيقات الحاوية باستخدام جدار حماية تطبيق ويب (WAF) على بوابة تطبيق Azure مع بيئة Container Apps داخلية.
لمزيد من المعلومات حول مفاهيم الشبكات في تطبيقات الحاوية، راجع بيئة الشبكات في Azure Container Apps.
المتطلبات الأساسية
بيئة داخلية مع VNet مخصصة: لديك تطبيق حاوية موجود على بيئة داخلية ومتكامل مع شبكة ظاهرية مخصصة. لمزيد من المعلومات حول كيفية إنشاء تطبيق شبكة ظاهرية متكامل مخصص، راجع توفير شبكة ظاهرية لبيئة Azure Container Apps.
شهادات الأمان: إذا كان يجب عليك استخدام تشفير TLS/SSL إلى بوابة التطبيق، يلزم وجود شهادة عامة صالحة تستخدم للربط ببوابة التطبيق.
استرداد مجال تطبيق الحاوية
استخدم الخطوات التالية لاسترداد قيم المجال الافتراضي وعنوان IP الثابت لإعداد منطقة DNS الخاصة بك.
من نافذة نظرة عامة لمجموعة الموارد في المدخل، حدد تطبيق الحاوية.
في نافذة نظرة عامة لمورد تطبيق الحاوية، حدد الارتباط لبيئة تطبيقات الحاوية
في نافذة Overview لمورد بيئة تطبيق الحاوية، حدد JSON View في الزاوية العلوية اليسرى من الصفحة لعرض تمثيل JSON لبيئة تطبيقات الحاوية.
انسخ قيم الخاصيتين defaultDomain و staticIp والصقها في محرر نص. ستقوم بإنشاء منطقة DNS خاصة باستخدام هذه القيم للمجال الافتراضي في القسم التالي.
إنشاء وتكوين منطقة Azure Private DNS
في قائمة مدخل Azure أو في صفحة Home، حدد Create a resource.
ابحث عن منطقة DNS الخاصة، وحدد منطقة DNS الخاصة من نتائج البحث.
حدد زر إنشاء.
أدخل القيم التالية:
الإعدادات الإجراء الاشتراك حدد اشتراك Azure الخاص بك. مجموعة الموارد حدد مجموعة الموارد لتطبيق الحاوية. الاسم أدخل الخاصية defaultDomain لبيئة تطبيقات الحاوية من القسم السابق. موقع مجموعة الموارد اتركه كافتراضي. لا يلزم وجود قيمة لأن مناطق DNS الخاصة عالمية. حدد "Review + create". بعد اكتمال عملية التحقق، حدد Create.
بعد إنشاء منطقة DNS الخاصة، حدد Go to resource.
في نافذة Overview ، حدد +Record set، لإضافة مجموعة سجلات جديدة.
في نافذة إضافة مجموعة سجلات، أدخل القيم التالية:
الإعدادات الإجراء الاسم أدخل *. نوع حدد سجل عنوان A. TTL احتفظ بالقيم الافتراضية. وحدة TTL احتفظ بالقيم الافتراضية. عنوان IP أدخل خاصية staticIp لبيئة تطبيقات الحاوية من القسم السابق. حدد موافق لإنشاء مجموعة السجلات.
حدد +Record set مرة أخرى، لإضافة مجموعة سجلات ثانية.
في نافذة إضافة مجموعة سجلات، أدخل القيم التالية:
الإعدادات الإجراء الاسم أدخل @. نوع حدد سجل عنوان A. TTL احتفظ بالقيم الافتراضية. وحدة TTL احتفظ بالقيم الافتراضية. عنوان IP أدخل خاصية staticIp لبيئة تطبيقات الحاوية من القسم السابق. حدد موافق لإنشاء مجموعة السجلات.
حدد نافذة ارتباطات الشبكة الظاهرية من القائمة على الجانب الأيسر من الصفحة.
حدد +Add لإنشاء ارتباط جديد بالقيم التالية:
الإعدادات الإجراء اسم الرابط أدخل my-custom-vnet-pdns-link. أعرف معرف مورد الشبكة الظاهرية اتركه دون تحديد. الشبكة الظاهرية حدد الشبكة الظاهرية التي يتم دمج تطبيق الحاوية معها. فعّل التسجيل التلقائي اتركه دون تحديد. حدد موافق لإنشاء ارتباط الشبكة الظاهرية.
إنشاء Azure Application Gateway وتكوينه
علامة تبويبBasics
أدخل القيم التالية في قسم Project Details.
الإعدادات الإجراء الاشتراك حدد اشتراك Azure الخاص بك. مجموعة الموارد حدد مجموعة الموارد لتطبيق الحاوية. اسم بوابة التطبيق أدخل my-container-apps-agw. المنطقة حدد الموقع الذي تم فيه توفير تطبيق الحاوية. المستوى حدد WAF V2. يمكنك استخدام الإصدار الثاني القياسي إذا لم تكن بحاجة إلى WAF. تمكين التوسع التلقائي اترك الإعداد الافتراضي كما هو. بالنسبة لبيئات الإنتاج، يوصى بالتحجيم التلقائي. راجع التحجيم التلقائي لبوابة تطبيق Azure. مناطق التوفّر حدد لا شيء. بالنسبة لبيئات الإنتاج، يوصى ب مناطق التوفر للحصول على قابلية وصول أعلى. HTTP2 احتفظ بالقيمة الافتراضية. نهج WAF حدد Create new وأدخل my-waf-policy لنهج WAF. حدد موافق. إذا اخترت الإصدار الثاني القياسي للطبقة، فتخط هذه الخطوة. الشبكة الظاهرية حدد الشبكة الظاهرية التي تم دمج تطبيق الحاوية معها. الشبكة الفرعية حدد "Manage subnet configuration". إذا كان لديك بالفعل شبكة فرعية ترغب في استخدامها، فاستخدمها بدلا من ذلك، ثم انتقل إلى قسم Frontends. من داخل نافذة الشبكات الفرعية من my-custom-vnet، حدد +Subnet وأدخل القيم التالية:
الإعدادات الإجراء الاسم أدخل appgateway-subnet. نطاق عنوان الشبكة الفرعية احتفظ بالقيم الافتراضية. بالنسبة لبقية الإعدادات، احتفظ بالقيم الافتراضية.
حدد حفظ لإنشاء الشبكة الفرعية الجديدة.
أغلق نافذة الشبكات الفرعية للعودة إلى نافذة إنشاء بوابة التطبيق.
حدد القيم التالية:
الإعدادات الإجراء الشبكة الفرعية حدد appgateway-subnet التي أنشأتها. حدد Next: Frontends، للمتابعة.
علامة تبويب الواجهات
في علامة التبويب الواجهات الأمامية ، أدخل القيم التالية:
الإعدادات الإجراء نوع عنوان IP للواجهة الأمامية حدّد عام. عنوان IP العام حدد إضافة جديد. أدخل الواجهة الأمامية الخاصة بي لاسم الواجهة الأمامية وحدد موافق إشعار
بالنسبة ل Application Gateway v2 SKU، يجب أن يكون هناك عنوان IP للواجهة الأمامية العامة . يمكن أن يكون لديك تكوين IP للواجهة الأمامية العامة والخاصة، ولكن تكوين IP للواجهة الأمامية الخاصة فقط بدون IP عام غير مدعوم حاليا في v2 SKU. لمعرفة المزيد، اقرأ هنا.
حدد Next: Backends.
علامة تبويب "Backends"
يتم استخدام تجمع الخلفية لتوجيه الطلبات إلى خوادم الخلفية المناسبة. يمكن أن تتكون تجمعات الواجهة الخلفية من أي مجموعة من الموارد التالية:
- NICs
- عناوين IP العامة
- عناوين IP الداخلية
- مجموعات توسيع الجهاز الظاهري
- أسماء المجالات المؤهلة بالكامل (FQDN)
- أطراف خلفية متعددة المستأجرين مثل Azure App Service و Container Apps
في هذا المثال، يمكنك إنشاء تجمع خلفي يستهدف تطبيق الحاوية.
حدد Add a backend pool.
افتح علامة تبويب جديدة وانتقل إلى تطبيق الحاوية.
في نافذة Overview لتطبيق الحاوية، ابحث عن عنوان Url للتطبيق وانسخه.
ارجع إلى علامة التبويب Backends ، وأدخل القيم التالية في نافذة Add a backend pool :
الإعدادات الإجراء الاسم أدخل my-agw-backend-pool. أضف تجمع خلفي دون أهداف حدد لا. نوع الهدف حدد عنوان IP أو FQDN. استهداف أدخل عنوان Url لتطبيق تطبيق الحاوية الذي نسخته وأزل بادئة https://. هذا الموقع هو FQDN لتطبيق الحاوية. حدد إضافة.
في علامة التبويب Backends حدد Next: Configuration.
علامة التبويب "التكوين"
في علامة التبويب Configuration ، يمكنك توصيل تجمع الواجهة الأمامية والخلفية الذي أنشأته باستخدام قاعدة توجيه.
حدد Add a routing rule. أدخل القيم التالية:
الإعدادات الإجراء الاسم أدخل my-agw-routing-rule. أولوية ادخل 1 ضمن علامة التبويب Listener، أدخل القيم التالية:
الإعدادات الإجراء اسم وحدة الاستماع أدخل my-agw-listener. IP أمامي حدّد عام. البروتوكول حدد HTTPS. إذا لم يكن لديك شهادة تريد استخدامها، يمكنك تحديد HTTP المنفذ أدخل 443. إذا اخترت HTTP للبروتوكول الخاص بك، أدخل 80 ثم انتقل إلى قسم المجال الافتراضي/المخصص. اختيار شهادة حدد تحميل شهادة. إذا تم تخزين شهادتك في مخزن المفاتيح، يمكنك تحديد اختيار شهادة من Key Vault. اسم الشهادة أدخل اسما لشهادتك. ملف شهادة PFX حدد شهادتك العامة الصالحة. كلمة المرور أدخل كلمة مرور الشهادة. إذا كنت تريد استخدام المجال الافتراضي، أدخل القيم التالية:
الإعدادات الإجراء نوع وحدة الاستماع حدد Basic عنوان url لصفحة الخطأ اتركه ك لا بدلا من ذلك، إذا كنت تريد استخدام مجال مخصص، أدخل القيم التالية:
الإعدادات الإجراء نوع وحدة الاستماع تحديد موقع متعدد نوع المضيف حدد Single أسماء المضيفين أدخل المجال المخصص الذي ترغب في استخدامه. عنوان url لصفحة الخطأ اتركه ك لا حدد علامة التبويب Backend targets وأدخل القيم التالية:
قم بالتبديل إلى علامة التبويب Backend targets وأدخل القيم التالية:
الإعدادات الإجراء نوع الهدف حدد my-agw-backend-pool الذي قمت بإنشائه سابقا. إعدادات الواجهة الخلفية حدد إضافة جديد. في نافذة Add Backend setting ، أدخل القيم التالية:
الإعدادات الإجراء اسم إعدادات الخلفية أدخل my-agw-backend-setting. بروتوكول الواجهة الخلفية حدد HTTPS. منفذ خلفي أدخل 443. استخدام شهادة CA المعروفة حدد نعم. التجاوز باسم المضيف الجديد حدد نعم. تجاوز اسم مضيف حدد اختيار اسم المضيف من هدف الواجهة الخلفية. إنشاء فحوصات مخصصة حدد لا. حدد إضافة، لإضافة إعدادات الواجهة الخلفية.
في نافذة Add a routing rule ، حدد Add مرة أخرى.
حدد "Next: Tags".
حدد Next: Review + create، ثم حدد Create.
إضافة ارتباط خاص إلى بوابة التطبيق
يمكنك إنشاء اتصال آمن ببيئات تطبيق الحاوية الداخلية فقط من خلال الاستفادة من الارتباط الخاص، حيث يسمح لبوابة التطبيق بالاتصال بتطبيق الحاوية على الواجهة الخلفية من خلال الشبكة الظاهرية.
بمجرد إنشاء Application Gateway، حدد Go to resource.
من القائمة على اليسار، حدد Private link، ثم حدد Add.
أدخل القيم التالية:
الإعدادات الإجراء الاسم أدخل my-agw-private-link. الشبكة الفرعية للارتباط الخاص حدد الشبكة الفرعية التي ترغب في إنشاء الارتباط الخاص بها. تكوين IP للواجهة الأمامية حدد عنوان IP للواجهة الأمامية لبوابة التطبيق الخاصة بك. ضمن إعدادات عنوان IP الخاص، حدد إضافة.
حدد إضافة في أسفل النافذة.
تحقق من تطبيق الحاوية
ابحث عن عنوان IP العام لبوابة التطبيق في صفحة Overview الخاصة بها، أو يمكنك البحث عن العنوان. للبحث، حدد All resources وأدخل my-container-apps-agw-pip في مربع البحث. ثم حدد IP في نتائج البحث.
انتقل إلى عنوان IP العام لبوابة التطبيق.
يتم توجيه طلبك تلقائيا إلى تطبيق الحاوية، الذي يتحقق من إنشاء بوابة التطبيق بنجاح.
تنظيف الموارد
عندما لا تعود بحاجة إلى الموارد التي أنشأتها، احذف مجموعة الموارد. عند حذف مجموعة الموارد، يمكنك أيضا إزالة جميع الموارد ذات الصلة.
لحذف مجموعة الموارد:
في قائمة Azure portal، حدد "Resource groups"، أو ابحث عن "Resource groups" وحددها.
في صفحة Resource groups، ابحث عن my-container-apps وحددها.
في صفحة مجموعة الموارد، حدد "Delete resource group".
أدخل my-container-apps ضمن TYPE THE RESOURCE GROUP NAME ثم حدد Delete