إعداد قيود الوصول في Azure App Service
من خلال إعداد قيود الوصول، يمكنك تحديد قائمة سماح/رفض مرتبة حسب الأولوية تتحكم في وصول الشبكة إلى تطبيقك. يمكن أن تتضمن القائمة عناوين IP أو شبكات Azure Virtual Network. عندما يكون هناك إدخال واحد أو أكثر ، يوجد إنكار ضمني لكل شيء في نهاية القائمة.
تعمل إمكانية تقييد الوصول مع جميع أحمال العمل التي تستضيفها خدمة Azure App. يمكن أن تتضمن أعباء العمل تطبيقات الويب وتطبيقات واجهة برمجة التطبيقات وتطبيقات Linux وحاويات ووظائف Linux المخصصة.
عند تقديم طلب إلى تطبيقك، يتم تقييم عنوان FROM مقابل القواعد الموجودة في قائمة تقييد الوصول. إذا كان عنوان FROM في شبكة فرعية تم تكوينها مع نقاط نهاية الخدمة إلى Microsoft.Web، تتم مقارنة الشبكة الفرعية المصدر بقواعد الشبكة الظاهرية في قائمة تقييد الوصول. إذا لم يسمح للعنوان بالوصول استنادا إلى القواعد الموجودة في القائمة، فسترد الخدمة برمز حالة HTTP 403 .
يتم تنفيذ إمكانية تقييد الوصول في أدوار الواجهة الأمامية لخدمة التطبيقات، وهي في مرحلة ما قبل المنبع من مضيفات العمال حيث يتم تشغيل التعليمات البرمجية الخاصة بك. لذلك، فإن قيود الوصول هي بشكل فعال قوائم التحكم في الوصول إلى الشبكة (ACLs).
يتم تمكين القدرة على تقييد الوصول إلى تطبيق الويب الخاص بك من شبكة Azure الظاهرية بواسطة نقاط نهاية الخدمة. باستخدام نقاط نهاية الخدمة، يمكنك تقييد الوصول إلى خدمة متعددة المستأجرين من شبكات فرعية محددة. لا يعمل على تقييد حركة المرور إلى التطبيقات المستضافة في بيئة خدمة التطبيق. إذا كنت في بيئة خدمة تطبيق، يمكنك التحكم في الوصول إلى تطبيقك من خلال تطبيق قواعد عنوان IP.
ملاحظة
يجب تمكين نقاط نهاية الخدمة على جانب الشبكة وخدمة Azure التي يتم تمكينها بها. للحصول على قائمة بخدمات Azure التي تدعم نقاط نهاية الخدمة، راجع نقاط نهاية خدمة الشبكة الظاهرية.
إدارة قواعد تقييد الوصول في البوابة الإلكترونية
لإضافة قاعدة تقييد الوصول إلى تطبيقك، قم بما يلي:
سجّل الدخول إلى مدخل Azure.
حدد التطبيق الذي لا تريد إضافة قيود الوصول إليه.
في الجزء الأيمن، حدد الشبكات.
في جزء الشبكة، ضمن قيود الوصول، حدد تكوين قيود الوصول.
في صفحة قيود الوصول، راجع قائمة قواعد تقييد الوصول المحددة لتطبيقك.
تعرض القائمة كافة القيود الحالية التي يتم تطبيقها على التطبيق. إذا كان لديك قيود شبكة ظاهرية على تطبيقك، يوضح الجدول ما إذا كانت نقاط نهاية الخدمة ممكنة ل Microsoft.Web أم لا. إذا لم يتم تحديد أي قيود على تطبيقك، فسيكون التطبيق قابلا للوصول إليه من أي مكان.
الأذونات
يجب أن يكون لديك على الأقل أذونات التحكم في الوصول المستندة إلى الدور التالية على الشبكة الفرعية أو على مستوى أعلى لتكوين قيود الوصول من خلال مدخل Azure أو CLI أو عند تعيين خصائص تكوين الموقع مباشرة:
| إجراء | الوصف |
|---|---|
| Microsoft.Web/sites/config/read | الحصول على إعدادات تكوين تطبيق الويب |
| Microsoft.Web/sites/config/write | تحديث إعدادات تكوين تطبيق الويب |
| Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action* | ضم مورد مثل حساب التخزين أو قاعدة بيانات SQL إلى شبكة فرعية |
*مطلوب فقط عند إضافة قاعدة شبكة ظاهرية (نقطة نهاية الخدمة).
إذا كنت تقوم بإضافة قاعدة تستند إلى نقطة نهاية الخدمة وكانت الشبكة الظاهرية في اشتراك مختلف عن التطبيق، فيجب عليك التأكد من تسجيل الاشتراك مع الشبكة الظاهرية لموفر موارد Microsoft.Web. يمكنك تسجيل الموفر بشكل صريح باتباع هذه الوثائق، ولكن سيتم تسجيله تلقائيا عند إنشاء أول تطبيق ويب في اشتراك.
إضافة قاعدة تقييد الوصول
لإضافة قاعدة تقييد الوصول إلى تطبيقك، في جزء قيود الوصول، حدد إضافة قاعدة. بعد إضافة قاعدة، تصبح سارية المفعول على الفور.
يتم فرض القواعد بترتيب الأولوية، بدءا من أدنى رقم في عمود الأولوية . يصبح الإنكار الضمني لكل شيء ساري المفعول بعد إضافة قاعدة واحدة.
في الجزء إضافة تقييد الوصول، عند إنشاء قاعدة، قم بما يلي:
ضمن إجراء، حدد إما السماح أو الرفض.
اختياريا، أدخل اسما ووصفا للقاعدة.
في المربع الأولوية ، أدخل قيمة أولوية.
في القائمة المنسدلة النوع ، حدد نوع القاعدة.
يتم وصف الأنواع المختلفة من القواعد في الأقسام التالية.
ملاحظة
- هناك حد أقصى يبلغ 512 قاعدة لتقييد الوصول. إذا كنت تحتاج إلى أكثر من 512 قاعدة تقييد وصول، نقترح عليك التفكير في تثبيت منتج أمان مستقل، مثل Azure Front Door أو Azure App Gateway أو WAF بديل.
تعيين قاعدة تستند إلى عنوان IP
اتبع الإجراء كما هو موضح في القسم السابق، ولكن مع الإضافة التالية:
- بالنسبة للخطوة 4، في القائمة المنسدلة النوع، حدد IPv4 أو IPv6.
حدد كتلة عنوان IP في تدوين التوجيه Inter-Domain بدون فئة (CIDR) لكل من عناوين IPv4 وIPv6. لتحديد عنوان، يمكنك استخدام شيء مثل 1.2.3.4/32، حيث تمثل الثماني الأربعة الأولى عنوان IP الخاص بك و /32 هو القناع. تدوين IPv4 CIDR لجميع العناوين هو 0.0.0.0/0. لمعرفة المزيد حول تدوين CIDR، راجع توجيه Inter-Domain بدون فئة.
تعيين قاعدة تستند إلى نقطة نهاية الخدمة
بالنسبة للخطوة 4، في القائمة المنسدلة النوع ، حدد الشبكة الظاهرية.
حدد القوائم المنسدلة الاشتراك والشبكة الظاهرية والشبكةالفرعية ، مطابقة لما تريد تقييد الوصول إليه.
باستخدام نقاط تقديم الخدمة، يمكنك تقييد الوصول إلى شبكات فرعية محددة لشبكة Azure الظاهرية. إذا لم يتم تمكين نقاط تقديم الخدمة بالفعل مع Microsoft.Web للشبكة الفرعية التي حددتها، فسيتم تمكينها تلقائيًا ما لم تحدد خانة الاختيار تجاهل نقاط تقديم خدمة Microsoft.Web المفقودة. يعتمد السيناريو، الذي قد ترغب في تمكين نقاط تقديم الخدمة فيه على التطبيق وليس على الشبكة الفرعية، بشكل أساسي على ما إذا كان لديك الأذونات لتمكينها على الشبكة الفرعية أم لا.
إذا كنت بحاجة إلى شخص آخر لتمكين نقاط تقديم الخدمة على الشبكة الفرعية، حدد خانة الاختيار تجاهل نقاط تقديم خدمة Microsoft.Web المفقودة. سيتم تكوين التطبيق لنقاط تقديم الخدمة تحسبًا لتمكينها لاحقًا على الشبكة الفرعية.
لا يمكنك استخدام نقاط نهاية الخدمة لتقييد الوصول إلى التطبيقات التي يتم تشغيلها في بيئة App Service. عندما يكون تطبيقك في بيئة App Service، يمكنك التحكم في الوصول إليه من خلال تطبيق قواعد الوصول إلى IP.
باستخدام نقاط نهاية الخدمة، يمكنك تكوين تطبيقك باستخدام بوابات التطبيقات أو أجهزة جدار حماية تطبيقات الويب (WAF) الأخرى. يمكنك أيضا تكوين تطبيقات متعددة المستويات مع نهايات خلفية آمنة. لمزيد من المعلومات، راجع ميزات الشبكات وخدمة التطبيقات وتكامل بوابة التطبيقات مع نقاط نهاية الخدمة.
ملاحظة
- نقاط نهاية الخدمة غير مدعومة حاليا لتطبيقات الويب التي تستخدم روابط TLS/SSL المستندة إلى بروتوكول الإنترنت مع عنوان IP افتراضي (VIP).
تعيين قاعدة تستند إلى علامة الخدمة
بالنسبة للخطوة 4، في القائمة المنسدلة النوع ، حدد علامة الخدمة.
يتم دعم جميع علامات الخدمة المتاحة في قواعد تقييد الوصول. تمثل كل علامة خدمة قائمة بنطاقات IP من خدمات Azure. يمكن العثور على قائمة بهذه الخدمات والروابط إلى نطاقات محددة في وثائق علامة الخدمة. استخدم قوالب Azure Resource Manager أو البرمجة النصية لتكوين قواعد أكثر تقدما مثل القواعد ذات النطاق الإقليمي.
تحرير قاعدة
لبدء تحرير قاعدة تقييد وصول موجودة، في صفحة قيود الوصول، حدد القاعدة التي تريد تحريرها.
في جزء تحرير تقييد الوصول، قم بإجراء التغييرات، ثم حدد تحديث القاعدة. تسري التعديلات على الفور، بما في ذلك التغييرات في ترتيب الأولويات.
ملاحظة
عند تحرير قاعدة، لا يمكنك التبديل بين أنواع القواعد.
حذف قاعدة
لحذف قاعدة، في الصفحة قيود الوصول ، حدد علامة الحذف (...) إلى جانب القاعدة التي تريد حذفها، ثم حدد إزالة.
السيناريوهات المتقدمة لتقييد الوصول
تصف الأقسام التالية بعض السيناريوهات المتقدمة باستخدام قيود الوصول.
التصفية حسب رأس 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 واحد
عند إضافة قاعدة تقييد الوصول الأولى، تضيف الخدمة قاعدة رفض الكل صريحة مع أولوية 2147483647. في الممارسة العملية، تعد قاعدة رفض الكل الصريحة هي القاعدة النهائية التي سيتم تنفيذها، وتحظر الوصول إلى أي عنوان IP غير مسموح به صراحة بموجب قاعدة السماح .
بالنسبة إلى سيناريو تريد فيه حظر عنوان IP واحد أو كتلة عناوين IP بشكل صريح، مع السماح بالوصول إلى كل شيء آخر، أضف قاعدة "السماح بالكل " صريحة.
تقييد الوصول إلى موقع SCM
بالإضافة إلى القدرة على التحكم في الوصول إلى تطبيقك، يمكنك تقييد الوصول إلى موقع SCM الذي يستخدمه تطبيقك. موقع SCM هو كل من نقطة نهاية نشر الويب ووحدة تحكم Kudu. يمكنك تعيين قيود الوصول إلى موقع SCM من التطبيق بشكل منفصل أو استخدام نفس مجموعة القيود لكل من التطبيق وموقع SCM. عند تحديد خانة الاختيار نفس القيود مثل <اسم> التطبيق، يتم إفراغ كل شيء. إذا قمت بإلغاء تحديد خانة الاختيار، إعادة تطبيق إعدادات موقع SCM.
تقييد الوصول إلى مثيل Azure Front Door معين
تنشأ حركة المرور من Azure Front Door إلى تطبيقك من مجموعة معروفة من نطاقات IP المحددة في علامة خدمة AzureFrontDoor.Backend. باستخدام قاعدة تقييد علامة الخدمة، يمكنك تقييد حركة المرور لتنشأ فقط من Azure Front Door. لضمان وصول حركة المرور من مثيلك المحدد فقط، ستحتاج إلى مزيد من تصفية الطلبات الواردة استنادا إلى رأس http الفريد الذي يرسله Azure Front Door.
مثال 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}
إدارة قواعد تقييد الوصول برمجيا
يمكنك إضافة قيود الوصول برمجيا عن طريق القيام بأي مما يلي:
استخدم Azure CLI. على سبيل المثال:
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ملاحظة
يتطلب العمل باستخدام علامات الخدمة أو رؤوس http أو القواعد متعددة المصادر في Azure CLI الإصدار 2.23.0 على الأقل. يمكنك التحقق من إصدار الوحدة النمطية المثبتة من خلال:
az versionUse Azure PowerShell. على سبيل المثال:
Add-AzWebAppAccessRestrictionRule -ResourceGroupName "ResourceGroup" -WebAppName "AppName" -Name "Ip example rule" -Priority 100 -Action Allow -IpAddress 122.133.144.0/24ملاحظة
يتطلب العمل باستخدام علامات الخدمة أو رؤوس http أو القواعد متعددة المصادر في Azure PowerShell الإصدار 5.7.0 على الأقل. يمكنك التحقق من إصدار الوحدة النمطية المثبتة من خلال:
Get-InstalledModule -Name Az
يمكنك أيضا تعيين القيم يدويا عن طريق القيام بأي مما يلي:
استخدم عملية Azure REST API PUT على تكوين التطبيق في Azure Resource Manager. موقع هذه المعلومات في Azure Resource Manager هو:
management.azure.com/subscriptions/ معرف الاشتراك/المواردالمجموعات/مجموعات الموارد/الموفرين/Microsoft.Web/sites/web app name/config/web?api-version=2020-06-01
استخدم قالب Resource Manager. على سبيل المثال، يمكنك استخدام resources.azure.com كتلة ipSecurityRestrictions وتحريرها لإضافة JSON المطلوب.
بناء جملة JSON للمثال السابق هو:
{ "properties": { "ipSecurityRestrictions": [ { "ipAddress": "122.133.144.0/24", "action": "Allow", "priority": 100, "name": "IP example rule" } ] } }بناء جملة JSON لمثال متقدم باستخدام علامة الخدمة وتقييد رأس http هو:
{ "properties": { "ipSecurityRestrictions": [ { "ipAddress": "AzureFrontDoor.Backend", "tag": "ServiceTag", "action": "Allow", "priority": 100, "name": "Azure Front Door example", "headers": { "x-azure-fdid": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" ] } } ] } }
إعداد قيود الوصول إلى وظائف Azure
تتوفر قيود الوصول أيضا للتطبيقات الوظيفية التي لها نفس الوظائف مثل خطط خدمة التطبيقات. عند تمكين قيود الوصول، يمكنك أيضا تعطيل محرر التعليمات البرمجية لمدخل Azure لأي عناوين IP غير مسموح بها.
الخطوات التالية
قيود الوصول لوظائف Azure
تكامل بوابة التطبيق مع نقاط نهاية الخدمة