إعداد قيود الوصول في Azure App Service

من خلال إعداد قيود الوصول، يمكنك تحديد قائمة السماح/الرفض مرتبة حسب الأولوية والتي تتحكم في وصول الشبكة إلى تطبيقك. يمكن أن تتضمن القائمة عناوين IP أو الشبكات الفرعية لشبكة Azure الظاهرية. عندما يكون هناك إدخال واحد أو أكثر، يوجد خيار رفض الكل الضمني في نهاية القائمة. لمعرفة المزيد حول قيود الوصول، انتقل إلى نظرة عامة على قيود الوصول.

تعمل إمكانية تقييد الوصول مع جميع أحمال العمل المستضافة على Azure App Service. يمكن أن تتضمن أحمال العمل تطبيقات الويب وتطبيقات واجهة برمجة التطبيقات وتطبيقات Linux وحاويات Linux المخصصة والوظائف.

عند تقديم طلب إلى تطبيقك، يتم تقييم عنوان FROM مقابل القواعد الموجودة في قائمة قيود الوصول. إذا كان عنوان FROM في شبكة فرعية تم تكوينها باستخدام نقاط نهاية الخدمة إلى Microsoft.Web، تتم مقارنة الشبكة الفرعية المصدر بقواعد الشبكة الظاهرية في قائمة قيود الوصول. إذا لم يكن العنوان مسموحًا له بالوصول استنادًا إلى القواعد الموجودة في القائمة، فسترد الخدمة برمز حالة HTTP 403.

يتم تنفيذ إمكانية تقييد الوصول في أدوار الواجهة الأمامية لـ App Service، والتي هي المصدر لمضيفي العامل حيث يتم تشغيل التعليمات البرمجية الخاصة بك. لذلك، قيود الوصول هي قوائم التحكم في الوصول إلى الشبكة (ACL) بشكل فعال.

تستخدم القدرة على تقييد الوصول إلى تطبيق الويب الخاص بك من شبكة Azure الظاهرية نقاط نهاية الخدمة. باستخدام نقاط نهاية الخدمة، يمكنك تقييد الوصول إلى خدمة متعددة المستأجرين من الشبكات الفرعية المحددة. لا تعمل على تقييد نسبة استخدام الشبكة للتطبيقات المستضافة في App Service Environment. إذا كنت في App Service Environment، يمكنك التحكم في الوصول إلى تطبيقك من خلال تطبيق قواعد عنوان IP.

إشعار

يجب تمكين نقاط نهاية الخدمة على جانب الشبكات وخدمة Azure التي يتم تمكينها بها. للحصول على قائمة بخدمات Azure التي تدعم نقاط نهاية الخدمة، راجع نقاط نهاية خدمة الشبكة الظاهرية.

Diagram of the flow of access restrictions.

إدارة قواعد تقييد الوصول في المدخل

لإضافة قاعدة تقييد وصول إلى تطبيقك، قم بالخطوات التالية:

  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. حدد التطبيق الذي تريد إضافة قيود الوصول إليه.

  3. في القائمة اليسرى، حدد Networking.

  4. في صفحة Networking ، ضمن Inbound traffic configuration، حدد إعداد Public network access .

    Screenshot of the App Service networking options page in the Azure portal.

  5. في صفحة Access Restrictions، راجع قائمة قواعد تقييد الوصول المحددة لتطبيقك.

    Screenshot of the Access Restrictions page in the Azure portal, showing the list of access restriction rules defined for the selected app.

    تعرض القائمة جميع القيود الحالية المطبقة على التطبيق. إذا كان لديك قيد شبكة ظاهرية على تطبيقك، يعرض الجدول ما إذا كانت نقاط نهاية الخدمة ممكنة لـ Microsoft.Web. إذا لم يتم تحديد أي قيود على تطبيقك ولم يتم تعيين القاعدة غير المتطابقة إلى رفض، يمكن الوصول إلى التطبيق من أي مكان.

الأذونات

مطلوب أذونات التحكم في الوصول المستندة إلى الدور التالية على الشبكة الفرعية أو على مستوى أعلى لتكوين قيود الوصول من خلال مدخل Microsoft Azure أو CLI أو عند تعيين خصائص تكوين الموقع مباشرة:

الإجراء ‏‏الوصف
Microsoft.Web/sites/config/read الحصول على إعدادات تكوين تطبيق الويب
Microsoft.Web/sites/config/write تحديث إعدادات تكوين تطبيق الويب
Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action* ربط مورد مثل حساب التخزين أو قاعدة بيانات SQL بشبكة فرعية
Microsoft.Web/sites/write** تحديث إعدادات Web App

*مطلوب فقط عند إضافة قاعدة شبكة ظاهرية (نقطة نهاية الخدمة).

**مطلوب فقط إذا كنت تقوم بتحديث قيود الوصول من خلال مدخل Microsoft Azure.

إذا كنت تضيف قاعدة تستند إلى نقطة نهاية الخدمة وكانت الشبكة الظاهرية في اشتراك مختلف عن التطبيق، فيجب عليك التأكد من تسجيل الاشتراك مع الشبكة الظاهرية Microsoft.Web لموفر الموارد. يمكنك تسجيل الموفر بشكل صريح باتباع هذه الوثائق، ولكن أيضا تسجيله تلقائيا عند إنشاء تطبيق الويب الأول في اشتراك.

إضافة قاعدة تقييد الوصول

لإضافة قاعدة تقييد وصول إلى تطبيقك، في صفحة قيود الوصول، حدد إضافة. القاعدة فعالة فقط بعد الحفظ.

يتم فرض القواعد بترتيب الأولوية، بدءًا من أقل رقم في عمود Priority. إذا لم تقم بتكوين قاعدة غير متطابقة، يكون الرفض الضمني ساريا بعد إضافة قاعدة واحدة.

في جزء Add Access Restriction، عند إنشاء قاعدة، قم بما يلي:

  1. ضمن Action، حدد إما Allow أو Deny.

    Screenshot of the 'Add Access Restriction' pane.

  2. اختياريًا، أدخل اسمًا ووصفًا للقاعدة.

  3. في المربع Priority، أدخل قيمة أولوية.

  4. في القائمة المنسدلة Type، حدد نوع القاعدة. يتم وصف الأنواع المختلفة من القواعد في الأقسام التالية.

  5. حدد إضافة قاعدة بعد الكتابة في إدخال القاعدة المحدد لإضافة القاعدة إلى القائمة.

وأخيرا حدد حفظ مرة أخرى في صفحة قيود الوصول.

إشعار

  • هناك حد 512 قاعدة لتقييد الوصول. إذا كنت تحتاج إلى أكثر من 512 قاعدة لتقييد الوصول، فإننا نقترح عليك التفكير في تثبيت منتج أمان مستقل، مثل Azure Front Door أو Azure App Gateway أو WAF بديل.

تعيين قاعدة مستندة إلى عنوان IP

اتبع الإجراء كما هو موضح في القسم السابق، ولكن مع الإضافة التالية:

  • بالنسبة للخطوة 4، في القائمة المنسدلة Type، حدد IPv4 أو IPv6.

حدد IP Address Block في رمز توجيه Inter-Domain دون فئة (CIDR) لكل من عناوين IPv4 وIPv6. لتحديد عنوان، يمكنك استخدام شيء مثل 1.2.3.4/32، حيث تمثل أول أربعة ثمانيات عنوان IP الخاص بك و/32 هو القناع. رمز IPv4 CIDR لكافة العناوين هو 0.0.0.0/0. لمعرفة المزيد حول رمز CIDR، راجع Classless Inter-Domain Routing.

إشعار

تعالج القواعد الخاصة بتقييد الوصول المستندة إلى IP نطاقات عناوين الشبكة الظاهرية فقط عندما يكون تطبيقك في بيئة خدمة التطبيقات. إذا كان التطبيق الخاص بك في خدمة متعددة المستأجرين، فأنت بحاجة إلى استخدام نقاط نهاية الخدمة لتقييد نسبة استخدام الشبكة لتحديد الشبكات الفرعية في شبكتك الظاهرية.

تعيين قاعدة تستند إلى نقطة نهاية الخدمة

  • بالنسبة للخطوة 4، في القائمة المنسدلة Type، حدد Virtual Network.

    Screenshot of the 'Add Restriction' pane with the Virtual Network type selected.

حدد القوائم المنسدلة Subscription وVirtual Network وSubnet، ومطابقة ما تريد تقييد الوصول إليه.

باستخدام نقاط تقديم الخدمة، يمكنك تقييد الوصول إلى شبكات فرعية محددة لشبكة Azure الظاهرية. إذا لم يتم تمكين نقاط نهاية الخدمة بالفعل مع Microsoft.Web للشبكة الفرعية التي حددتها، يتم تمكينها تلقائيا ما لم تحدد خانة الاختيار تجاهل نقاط نهاية الخدمة المفقودةMicrosoft.Web. يعتمد السيناريو، الذي قد ترغب في تمكين نقاط تقديم الخدمة فيه على التطبيق وليس على الشبكة الفرعية، بشكل أساسي على ما إذا كان لديك الأذونات لتمكينها على الشبكة الفرعية أم لا.

إذا كنت بحاجة إلى شخص آخر لتمكين نقاط تقديم الخدمة على الشبكة الفرعية، حدد خانة الاختيار تجاهل نقاط تقديم خدمة Microsoft.Web المفقودة. تم تكوين تطبيقك لنقاط نهاية الخدمة تحسبا لتمكينها لاحقا على الشبكة الفرعية.

لا يمكنك استخدام نقاط نهاية الخدمة لتقييد الوصول إلى التطبيقات التي يتم تشغيلها في بيئة App Service. عندما يكون تطبيقك في بيئة App Service، يمكنك التحكم في الوصول إليه من خلال تطبيق قواعد الوصول إلى IP.

باستخدام نقاط نهاية الخدمة، يمكنك تكوين تطبيقك باستخدام بوابات التطبيق أو أجهزة جدار حماية تطبيق الويب (WAF) الأخرى. يمكنك أيضًا تكوين التطبيقات متعددة المستويات مع نهايات خلفية آمنة. لمزيد من المعلومات، راجع Networking features and App Service وApplication Gateway integration with service endpoints.

إشعار

  • نقاط نهاية الخدمة غير مدعومة لتطبيقات الويب التي تستخدم روابط TLS/SSL المستندة إلى IP مع IP ظاهري (VIP).

تعيين قاعدة مستندة إلى علامة الخدمة

  • بالنسبة للخطوة 4، في القائمة المنسدلة Type، حدد Service Tag.

    Screenshot of the 'Add Restriction' pane with the Service Tag type selected.

يتم دعم جميع علامات الخدمة المتوفرة في قواعد تقييد الوصول. تمثل كل علامة خدمة قائمة نطاقات IP من خدمات Azure. يمكن العثور على قائمة بهذه الخدمات والارتباطات إلى نطاقات معينة في وثائق علامة الخدمة. استخدم قوالب Azure Resource Manager أو البرمجة النصية لتكوين قواعد أكثر تقدمًا مثل القواعد الإقليمية ذات النطاق.

تحرير قاعدة

  1. لبدء تحرير قاعدة تقييد وصول موجودة، في صفحة Access Restrictions، حدد القاعدة التي تريد تحريرها.

  2. في جزء Edit Access Restriction، قم بإجراء التغييرات، ثم حدد Update rule.

  3. حدد حفظ لحفظ التغييرات.

    Screenshot of the 'Edit Access Restriction' pane in the Azure portal, showing the fields for an existing access restriction rule.

    إشعار

    عند تحرير قاعدة، لا يمكنك التبديل بين أنواع القواعد.

حذف قاعدة

  1. لحذف قاعدة، في صفحة قيود الوصول، حدد القاعدة أو القواعد التي تريد حذفها، ثم حدد حذف.

  2. حدد حفظ لحفظ التغييرات.

Screenshot of the 'Access Restrictions' page, showing the 'Remove' ellipsis next to the access restriction rule to be deleted.

سيناريوهات متقدمة لتقييد الوصول

تصف الأقسام التالية بعض السيناريوهات المتقدمة باستخدام قيود الوصول.

التصفية حسب عنوان http

كجزء من أي قاعدة، يمكنك إضافة عوامل تصفية رأس http. يتم دعم أسماء عناوين http التالية:

  • X-Forwarded-For
  • X-Forwarded-Host
  • X-Azure-FDID
  • X-FD-HealthProbe

لكل اسم عنوان، يمكنك إضافة ما يصل إلى ثماني قيم مفصولة بفاصلة. يتم تقييم عوامل تصفية عنوان http بعد القاعدة نفسها ويجب أن يكون كلا الشرطين صحيحًا لتطبيق القاعدة.

قواعد متعددة المصادر

تسمح لك القواعد متعددة المصادر بدمج ما يصل إلى ثمانية نطاقات IP أو ثماني علامات خدمة في قاعدة واحدة. يمكنك استخدام قواعد متعددة المصادر إذا كان لديك أكثر من 512 نطاق IP أو كنت تريد إنشاء قواعد منطقية. قد تكون القواعد المنطقية هي المكان الذي يتم فيه دمج نطاقات IP متعددة مع عامل تصفية رأس http واحد.

يتم تعريف القواعد متعددة المصادر بنفس الطريقة التي تحدد بها القواعد أحادية المصدر، ولكن مع فصل كل نطاق بفاصلة.

مثال PowerShell:

Add-AzWebAppAccessRestrictionRule -ResourceGroupName "ResourceGroup" -WebAppName "AppName" `
  -Name "Multi-source rule" -IpAddress "192.168.1.0/24,192.168.10.0/24,192.168.100.0/24" `
  -Priority 100 -Action Allow

حظر عنوان IP واحد

بالنسبة إلى سيناريو حيث تريد حظر عنوان IP واحد أو كتلة من عناوين IP بشكل صريح، ولكن مع السماح بالوصول إلى كل شيء آخر، أضف قاعدة رفض لعنوان IP المحدد وقم بتكوين إجراء القاعدة غير المتطابقة إلى سماح.

Screenshot of the 'Access Restrictions' page in the Azure portal, showing a single blocked IP address.

تقييد الوصول إلى موقع SCM

بالإضافة إلى القدرة على التحكم في الوصول إلى تطبيقك، يمكنك تقييد الوصول إلى موقع SCM (أداة متقدمة) الذي يستخدمه تطبيقك. موقع SCM هو كل من نقطة نهاية نشر الويب ووحدة تحكم Kudu. يمكنك تعيين قيود الوصول إلى موقع SCM من التطبيق بشكل منفصل أو استخدام نفس مجموعة القيود لكل من التطبيق وموقع SCM. عند تحديد خانة الاختيار استخدام قواعد الموقع الرئيسي، تكون قائمة القواعد مخفية، وتستخدم القواعد من الموقع الرئيسي. إذا قمت بإلغاء تحديد خانة الاختيار، فستظهر إعدادات موقع SCM مرة أخرى.

Screenshot of the 'Access Restrictions' page in the Azure portal, showing that no access restrictions are set for the SCM site or the app.

تقييد الوصول إلى مثيل Azure Front Door محدد

تنشأ نسبة استخدام الشبكة من Azure Front Door إلى التطبيق الخاص بك من مجموعة معروفة من نطاقات IP المحددة في AzureFrontDoor.Backend علامة الخدمة. باستخدام قاعدة تقييد علامة الخدمة، يمكنك تقييد نسبة استخدام الشبكة لتنشأ فقط من Azure Front Door. للتأكد من أن نسبة استخدام الشبكة تنشأ فقط من مثيلك المحدد، تحتاج إلى تصفية الطلبات الواردة بشكل أكبر استنادا إلى عنوان http الفريد الذي يرسله Azure Front Door.

Screenshot of the 'Access Restrictions' page in the Azure portal, showing how to add Azure Front Door restriction.

مثال PowerShell:

$afd = Get-AzFrontDoor -Name "MyFrontDoorInstanceName"
Add-AzWebAppAccessRestrictionRule -ResourceGroupName "ResourceGroup" -WebAppName "AppName" `
  -Name "Front Door example rule" -Priority 100 -Action Allow -ServiceTag AzureFrontDoor.Backend `
  -HttpHeader @{'x-azure-fdid' = $afd.FrontDoorId}

إدارة تقييد الوصول برمجيا

يمكنك إدارة تقييد الوصول برمجيا، يمكنك العثور أدناه على أمثلة حول كيفية إضافة قواعد لقيود الوصول وكيفية تغيير إجراء القاعدة غير المتطابقة لكل من الموقع الرئيسي وموقع الأدوات المتقدمة.

إضافة قواعد قيود الوصول للموقع الرئيسي

يمكنك إضافة قواعد قيود الوصول للموقع الرئيسي برمجيا عن طريق اختيار أحد الخيارات التالية:

يمكنك تشغيل الأمر التالي في Cloud Shell. لمزيد من المعلومات حول az webapp config access-restriction الأمر، تفضل بزيارة هذه الصفحة.

az webapp config access-restriction add --resource-group ResourceGroup --name AppName \
  --rule-name 'IP example rule' --action Allow --ip-address 122.133.144.0/24 --priority 100

az webapp config access-restriction add --resource-group ResourceGroup --name AppName \
  --rule-name "Azure Front Door example" --action Allow --priority 200 --service-tag AzureFrontDoor.Backend \
  --http-header x-azure-fdid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

إضافة قواعد قيود الوصول لموقع الأدوات المتقدمة

يمكنك إضافة قواعد قيود الوصول لموقع الأدوات المتقدمة برمجيا عن طريق اختيار أحد الخيارات التالية:

يمكنك تشغيل الأمر التالي في Cloud Shell. لمزيد من المعلومات حول az webapp config access-restriction الأمر، تفضل بزيارة هذه الصفحة.

az webapp config access-restriction add --resource-group ResourceGroup --name AppName \
  --rule-name 'IP example rule' --action Allow --ip-address 122.133.144.0/24 --priority 100 --scm-site true

تغيير إجراء القاعدة غير المتطابق للموقع الرئيسي

يمكنك تغيير إجراء القاعدة غير المتطابقة للموقع الرئيسي برمجيا عن طريق اختيار أحد الخيارات التالية:

يمكنك تشغيل الأمر التالي في Cloud Shell. لمزيد من المعلومات حول az resource الأمر، تفضل بزيارة هذه الصفحة. القيم المقبولة ل ipSecurityRestrictionsDefaultAction هي Allow أو Deny.

az resource update --resource-group ResourceGroup --name AppName --resource-type "Microsoft.Web/sites" \
  --set properties.siteConfig.ipSecurityRestrictionsDefaultAction=Allow

تغيير إجراء القاعدة غير المتطابقة لموقع الأدوات المتقدمة

يمكنك تغيير إجراء القاعدة غير المتطابقة لموقع الأدوات المتقدمة برمجيا عن طريق اختيار أحد الخيارات التالية:

يمكنك تشغيل الأمر التالي في Cloud Shell. لمزيد من المعلومات حول az resource الأمر، تفضل بزيارة هذه الصفحة. القيم المقبولة ل scmIpSecurityRestrictionsDefaultAction هي Allow أو Deny.

az resource update --resource-group ResourceGroup --name AppName --resource-type "Microsoft.Web/sites" \
  --set properties.siteConfig.scmIpSecurityRestrictionsDefaultAction=Allow

إعداد قيود الوصول إلى Azure Functions

تتوفر قيود الوصول أيضًا لتطبيقات الوظائف بنفس الوظائف مثل خطط App Service. عند تمكين قيود الوصول، يمكنك أيضًا تعطيل محرر التعليمات البرمجية لمدخل Azure لأي عناوين IP غير مسموح بها.

الخطوات التالية

قيود الوصول إلى Azure Functions
تكامل بوابة التطبيق مع نقاط نهاية الخدمة
سيناريوهات تقييد الوصول المتقدمة في Azure App Service - منشور المدونة