تنفيذ بنية أمان ذات طبقات باستخدام بيئات App Service Environment
هام
تتناول هذه المقالة App Service Environment إصدار 1. تم إيقاف App Service Environment v1 وv2 اعتبارا من 31 أغسطس 2024. يوجد إصدار جديد من App Service Environment يسهل استخدامه ويعمل ببنية أساسية أكثر قوة. لمعرفة المزيد عن الإصدار الجديد، ابدأ بمقدمة لبيئة App Service. إذا كنت تستخدم إصدار 1 من App Service Environment حاليًا، فالرجاء اتباع الخطوات الواردة في هذه المقالة للترحيل إلى الإصدار الجديد.
اعتبارا من 31 أغسطس 2024، لم تعد اتفاقية مستوى الخدمة (SLA) وأرصدة الخدمة تنطبق على أحمال عمل App Service Environment v1 وv2 التي لا تزال قيد الإنتاج نظرا لأنها منتجات متوقفة. بدأ إيقاف تشغيل أجهزة App Service Environment v1 وv2، وقد يؤثر ذلك على توفر التطبيقات والبيانات وأدائها.
يجب إكمال الترحيل إلى App Service Environment v3 على الفور أو قد يتم حذف التطبيقات والموارد. سنحاول الترحيل التلقائي لأي بيئة خدمة تطبيقات متبقية v1 وv2 على أساس أفضل جهد باستخدام ميزة الترحيل الموضعي، ولكن Microsoft لا تقدم أي مطالبة أو ضمانات حول توفر التطبيق بعد الترحيل التلقائي. قد تحتاج إلى إجراء تكوين يدوي لإكمال الترحيل وتحسين خيار SKU لخطة App Service لتلبية احتياجاتك. إذا لم يكن الترحيل التلقائي ممكنا، حذف الموارد وبيانات التطبيق المقترنة. ونحثك بشدة على التصرف الآن لتجنب أي من هذه السيناريوهات المتطرفة.
إذا كنت بحاجة إلى وقت إضافي، يمكننا تقديم فترة سماح لمرة واحدة مدتها 30 يوما لإكمال الترحيل. لمزيد من المعلومات وطلب فترة السماح هذه، راجع نظرة عامة على فترة السماح، ثم انتقل إلى مدخل Microsoft Azure وقم بزيارة جزء الترحيل لكل من بيئات App Service.
للحصول على أحدث المعلومات حول إيقاف App Service Environment v1/v2، راجع تحديث إيقاف App Service Environment v1 وv2.
نظراً لأن بيئات App Service Environment توفر بيئة تشغيل معزولة يتم توزيعها في شبكة ظاهرية، يمكن للمطورين إنشاء بنية أمان ذات طبقات توفر مستويات مختلفة من الوصول إلى الشبكة لكل طبقة تطبيق مادي.
تتمثل الرغبة الشائعة في إخفاء الواجهات الخلفية لواجهة برمجة التطبيقات من الوصول العام إلى الإنترنت، والسماح فقط باستدعاء واجهات برمجة التطبيقات بواسطة تطبيقات الويب الرئيسية. يمكن استخدام مجموعات أمان الشبكة (NSG) على الشبكات الفرعية التي تحتوي على بيئات خدمة التطبيق لتقييد الوصول العام إلى تطبيقات واجهة برمجة التطبيقات.
يوضح الرسم التخطيطي أدناه نموذج هندسة مع تطبيق مستند إلى WebAPI تم توزيعه في App Service Environment. تقوم ثلاثة مثيلات منفصلة لتطبيق الويب، موزعة على ثلاث بيئات منفصلة لخدمة التطبيقات، بإجراء مكالمات خلفية لنفس تطبيق WebAPI.
تشير علامات الجمع الخضراء إلى أن مجموعة أمان الشبكة على الشبكة الفرعية التي تحتوي على "apiase" تسمح بالمكالمات الواردة من تطبيقات الويب الرئيسية، وكذلك المكالمات من نفسها. ومع ذلك، فإن مجموعة أمان الشبكة نفسها ترفض صراحة الوصول إلى نسبة استخدام الشبكة العامة الواردة من الإنترنت.
يستعرض الجزء المتبقي من هذه المقالة الخطوات اللازمة لتكوين مجموعة أمان الشبكة على الشبكة الفرعية التي تحتوي على "apiase."
تحديد سلوك الشبكة
لمعرفة قواعد أمان الشبكة المطلوبة، تحتاج إلى تحديد عملاء الشبكة الذين سيسمح لهم بالوصول إلى App Service Environment التي تحتوي على تطبيق واجهة برمجة التطبيقات، والعملاء المحظورين.
نظراً لأنه يتم تطبيق مجموعات أمان الشبكة (NSGs) على الشبكات الفرعية، وتوزيع بيئات App Service Environment في الشبكات الفرعية، فإن القواعد الواردة في NSG تنطبق على جميع التطبيقات التي تعمل في App Service Environment. باستخدام نموذج البنية لهذه المقالة، بمجرد تطبيق مجموعة أمان الشبكة على الشبكة الفرعية التي تحتوي على "apiase"، ستتم حماية جميع التطبيقات التي تعمل على بيئة خدمة التطبيقات "apiase" بنفس مجموعة قواعد الأمان.
- تحديد عنوان IP الصادر للمتصلين في المنبع: ما عنوان IP أو عناوين المتصلين الرئيسيين؟ يجب السماح لهذه العناوين صراحة بالوصول في NSG. نظراً لأن المكالمات بين بيئات خدمة التطبيقات تعد مكالمات "إنترنت"، فإن عنوان IP الصادر المعين لكل من بيئات خدمة التطبيقات الثلاثة المنبع يجب أن يُسمح له بالوصول إلى NSG للشبكة الفرعية "apiase". لمزيد من المعلومات حول تحديد عنوان IP الصادر للتطبيقات التي تعمل في App Service Environment، راجع مقالة نظرة عامة حول بنية الشبكة.
- هل سيحتاج تطبيق واجهة برمجة التطبيقات للجهة الخلفية إلى استدعاء نفسه؟ النقطة الدقيقة التي يتم التغاضي عنها أحياناً هي السيناريو الذي يحتاج فيه التطبيق الخلفي إلى استدعاء نفسه. إذا كان تطبيق واجهة برمجة التطبيقات الخلفي على بيئة خدمة التطبيقات يحتاج إلى استدعاء نفسه، يتم التعامل معه أيضا على أنه استدعاء "إنترنت". في نموذج البنية، يتطلب ذلك السماح بالوصول من عنوان IP الصادر لـApp Service Environment "apiase" أيضاً.
إنشاء مجموعة أمان الشبكة
بمجرد معرفة مجموعة عناوين IP الصادرة، فإن الخطوة التالية هي إنشاء مجموعة أمان للشبكة. يمكن إنشاء مجموعات أمان الشبكة لكل من الشبكات الظاهرية المستندة إلى Resource Manager والشبكات الظاهرية الكلاسيكية. توضح الأمثلة التالية إنشاء وتكوين NSG على شبكة ظاهرية كلاسيكية باستخدام PowerShell.
بالنسبة إلى نموذج الهندسة البنيوية، تقع البيئات في جنوب وسط الولايات المتحدة، لذلك يتم إنشاء NSG فارغة في تلك المنطقة:
New-AzureNetworkSecurityGroup -Name "RestrictBackendApi" -Location "South Central US"
-Label "Only allow web frontend and loopback traffic"
تمت أولاً إضافة قاعدة سماح صريحة للبنية الأساسية لإدارة Azure كما هو مذكور في المقالة حول نسبة استخدام الشبكة الواردة لبيئات App Service Environment.
#Open ports for access by Azure management infrastructure
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW AzureMngmt"
-Type Inbound -Priority 100 -Action Allow -SourceAddressPrefix 'INTERNET' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '454-455' -Protocol TCP
بعد ذلك، تمت إضافة قاعدتين للسماح باستدعاءات HTTP وHTTPS من بيئة App Service Environment ("fe1ase").
#Grant access to requests from the first upstream web front-end
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTP fe1ase"
-Type Inbound -Priority 200 -Action Allow -SourceAddressPrefix '65.52.xx.xyz' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '80' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTPS fe1ase"
-Type Inbound -Priority 300 -Action Allow -SourceAddressPrefix '65.52.xx.xyz' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '443' -Protocol TCP
امسح وكرر مع بيئات خدمة التطبيقات الثانية والثالثة ("fe2ase" و"fe3ase").
#Grant access to requests from the second upstream web front-end
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTP fe2ase"
-Type Inbound -Priority 400 -Action Allow -SourceAddressPrefix '191.238.xyz.abc' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '80' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTPS fe2ase"
-Type Inbound -Priority 500 -Action Allow -SourceAddressPrefix '191.238.xyz.abc' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '443' -Protocol TCP
#Grant access to requests from the third upstream web front-end
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTP fe3ase"
-Type Inbound -Priority 600 -Action Allow -SourceAddressPrefix '23.98.abc.xyz' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '80' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTPS fe3ase"
-Type Inbound -Priority 700 -Action Allow -SourceAddressPrefix '23.98.abc.xyz' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '443' -Protocol TCP
أخيراً، امنح حق الوصول إلى عنوان IP الصادر لـ App Service Environment لواجهة برمجة التطبيقات للجهة الخلفية حتى تتمكن من الاتصال مرة أخرى بنفسها.
#Allow apps on the apiase environment to call back into itself
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTP apiase"
-Type Inbound -Priority 800 -Action Allow -SourceAddressPrefix '70.37.xyz.abc' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '80' -Protocol TCP
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityRule -Name "ALLOW HTTPS apiase"
-Type Inbound -Priority 900 -Action Allow -SourceAddressPrefix '70.37.xyz.abc' -SourcePortRange '*'
-DestinationAddressPrefix '*' -DestinationPortRange '443' -Protocol TCP
لا توجد قواعد أمان أخرى للشبكات مطلوبة، لأن كل مجموعة NSG لديها مجموعة من القواعد الافتراضية التي تحظر الوصول إلى الداخل من الإنترنت، افتراضياً.
يتم عرض القائمة الكاملة للقواعد في مجموعة أمان الشبكة. لاحظ كيف تمنع القاعدة الأخيرة، التي تم تمييزها، الوصول الوارد من جميع المتصلين، بخلاف المتصلين الذين يتم منحهم حق الوصول بشكل صريح.
تتمثل الخطوة الأخيرة في تطبيق NSG على الشبكة الفرعية التي تحتوي على App Service Environment "apiase".
#Apply the NSG to the backend API subnet
Get-AzureNetworkSecurityGroup -Name "RestrictBackendApi" | Set-AzureNetworkSecurityGroupToSubnet
-VirtualNetworkName 'yourvnetnamehere' -SubnetName 'API-ASE-Subnet'
مع تطبيق NSG على الشبكة الفرعية، لا يُسمح إلا لبيئات خدمة التطبيقات الثلاثة، وApp Service Environment التي تحتوي على واجهة API الخلفية، بالاتصال ببيئة "apiase".
ارتباطات ومعلومات إضافية
معلومات حول مجموعات أمان الشبكة.
فهم عناوين IP الصادرة وبيئات App Service Environment.
منافذ الشبكة المستخدمة بواسطة بيئات App Service Environment.
إشعار
إذا كنت تريد البدء في استخدام Azure App Service قبل التسجيل للحصول على حساب Azure، فانتقل إلى تجربة App Service، إذ يمكنك على الفور إنشاء تطبيق ويب مبتدئ قصير العمر في App Service. لا حاجة لبطاقات الائتمان؛ لا التزام عليك.