البرنامج التعليمي: تقييد وصول الشبكة إلى موارد PaaS باستخدام نقاط نهاية خدمة الشبكة الظاهرية

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

رسم تخطيطي لموارد Azure التي تم إنشاؤها في البرنامج التعليمي.

في هذا البرنامج التعليمي، تتعلم كيفية:

  • إنشاء شبكة افتراضية باستخدام شبكة فرعية
  • إضافة شبكة فرعية لتمكين نقطة نهاية خدمة
  • إنشاء مورد Azure والسماح للشبكة بالوصول إليه من شبكة فرعية فقط
  • توزيع جهاز ظاهري (VM) على كل شبكة فرعية
  • تأكيد الوصول إلى مورد من شبكة فرعية
  • تأكيد رفض الوصول إلى مورد من شبكة فرعية والإنترنت

المتطلبات الأساسية

تمكين نقطة نهاية خدمة

إنشاء شبكة ظاهرية ومضيف Azure Bastion

ينشئ الإجراء التالي شبكة ظاهرية مع شبكة فرعية لمورد وشبكة فرعية Azure Bastion ومضيف Bastion:

  1. في المدخل، ابحث عن Virtual networks وحددها.

  2. في صفحة ⁧⁩الشبكة الظاهرية⁧⁩، حدد ⁧+⁩ إنشاء⁧⁩.

  3. في علامة التبويب Basics في Create virtual network، أدخل المعلومات التالية أو حددها:

    الإعداد القيمة‬
    تفاصيل المشروع
    الاشتراك حدد Subscription الخاص بك.
    مجموعة الموارد حدد إنشاء جديد.
    أدخل test-rg للاسم.
    حدد موافق.
    تفاصيل المثيل
    الاسم أدخل vnet-1.
    المنطقة حدد شرق الولايات المتحدة 2.

    لقطة شاشة لعلامة التبويب Basics لإنشاء شبكة ظاهرية في مدخل Microsoft Azure.

  4. حدد التالي للمتابعة إلى علامة التبويب الأمان .

  5. في قسم Azure Bastion ، حدد Enable Azure Bastion.

    يستخدم Bastion المستعرض للاتصال بالأجهزة الظاهرية في شبكتك الظاهرية عبر Secure Shell (SSH) أو بروتوكول سطح المكتب البعيد (RDP) باستخدام عناوين IP الخاصة بها. لا تحتاج الأجهزة الظاهرية إلى عناوين IP عامة أو برامج عميل أو تكوين خاص. لمزيد من المعلومات، راجع ما هو Azure Bastion؟.

    إشعار

    يبدأ التسعير بالساعة من اللحظة التي يتم فيها نشر Bastion، بغض النظر عن استخدام البيانات الصادرة. لمزيد من المعلومات، راجع التسعير ووحدات SKU. إذا كنت تقوم بنشر Bastion كجزء من برنامج تعليمي أو اختبار، نوصي بحذف هذا المورد بعد الانتهاء من استخدامه.

  6. في Azure Bastion، أدخل المعلومات التالية أو حددها:

    الإعداد القيمة‬
    اسم مضيف Azure Bastion أدخل bastion.
    عنوان IP العام ل Azure Bastion حدد إنشاء عنوان IP عام.
    أدخل public-ip-bastion في Name.
    حدد موافق.

    لقطة شاشة لخيارات تمكين مضيف Azure Bastion كجزء من إنشاء شبكة ظاهرية في مدخل Microsoft Azure.

  7. حدد التالي للمتابعة إلى علامة التبويب عناوين IP.

  8. في مربع مساحة العنوان في الشبكات الفرعية، حدد الشبكة الفرعية الافتراضية.

  9. في تحرير الشبكة الفرعية، أدخل المعلومات التالية أو حددها:

    الإعداد القيمة‬
    الغرض من الشبكة الفرعية اترك الإعداد الافتراضي الافتراضي.
    الاسم أدخل subnet-1.
    IPv4
    نطاق عناوين IPv4 اترك الإعداد الافتراضي 10.0.0.0/16.
    عنوان البدء اترك الإعداد الافتراضي 10.0.0.0.
    الحجم اترك القيمة الافتراضية ل /24 (256 عنوانا) .

    لقطة شاشة لتفاصيل التكوين لشبكة فرعية.

  10. حدد حفظ.

  11. حدد Review + create في أسفل النافذة. بعد تجاوز التحقق من الصحة، حدد Create.

يتم تمكين نقاط تقديم الخدمة لكل خدمة، لكل شبكة فرعية.

  1. في مربع البحث في أعلى صفحة المدخل، ابحث عن الشبكة الظاهرية. حدد الشبكات الظاهرية في نتائج البحث.

  2. في الشبكات الظاهرية، حدد vnet-1.

  3. في قسم Settings في vnet-1، حدد Subnets.

  4. حدد + الشبكة الفرعية.

  5. في صفحة إضافة شبكة فرعية، أدخل المعلومات التالية أو حددها:

    الإعداد القيمة‬
    الاسم الشبكة الفرعية الخاصة
    نطاق عنوان الشبكة الفرعية اترك الإعداد الافتراضي 10.0.2.0/24.
    نقاط نهاية الخدمة
    الخدمات اختر Microsoft.Storage
  6. حدد حفظ.

تنبيه

قبل تمكين نقطة نهاية خدمة لشبكة فرعية موجودة بها موارد، راجع تغيير إعدادات الشبكة الفرعية.

تقييد وصول شبكة فرعية إلى الشبكة

بشكل افتراضي، يمكن لجميع مثيلات الجهاز الظاهري في الشبكة الفرعية الاتصال بأي موارد. يمكنك تقييد الاتصال من وإلى كافة الموارد في شبكة فرعية عن طريق إنشاء مجموعة أمان شبكة اتصال وربطها بالشبكة الفرعية.

  1. في مربع البحث في أعلى صفحة المدخل، ابحث عن مجموعة أمان الشبكة. حدد "Network security group" في نتائج البحث.

  2. في مجموعات أمان الشبكة، حدد + إنشاء.

  3. في علامة التبويب "Basics" "Create network security group"، أدخل أو حدد المعلومات التالية:

    الإعداد القيمة‬
    تفاصيل المشروع
    الاشتراك حدد Subscription الخاص بك.
    مجموعة الموارد حدد test-rg.
    تفاصيل المثيل
    الاسم أدخل nsg-storage.
    المنطقة حدد شرق الولايات المتحدة 2.
  4. حدد Review + create، ثم حدد Create.

إنشاء قواعد مجموعة أمان الشبكة الصادرة (NSG)

  1. في مربع البحث في أعلى صفحة المدخل، ابحث عن مجموعة أمان الشبكة. حدد "Network security group" في نتائج البحث.

  2. حدد nsg-storage.

  3. حدد "Outbound security rules" في "Settings".

  4. حدد + إضافة.

  5. أنشئ قاعدة تسمح بالاتصال الصادر بخدمة Azure Storage. أدخل المعلومات التالية أو حددها في إضافة قاعدة أمان صادرة:

    الإعداد القيمة‬
    Source حدد علامة الخدمة.
    علامة خدمة المصدر حدد VirtualNetwork.
    نطاقات منافذ المصادر اترك الإعداد الافتراضي الخاص بـ *.
    الوجهة حدد علامة الخدمة.
    علامة خدمة الوجهة اختار التخزين .
    الخدمة اترك الإعداد الافتراضي مخصص.
    نطاقات المنفذ الوجهات أدخل 445.
    البروتوكول حدد "Any".
    الإجراء حدد السماح.
    أولوية اترك القيمة الافتراضية 100.
    الاسم أدخل allow-storage-all.

    لقطة شاشة لإنشاء أمان صادر للوصول إلى التخزين.

  6. حدد + إضافة.

  7. إنشاء قاعدة أمان صادرة أخرى تمنع الاتصال بالإنترنت. تتجاوز هذه القاعدة قاعدة افتراضية في كل مجموعات أمان الشبكة تسمح بالاتصال بالإنترنت الصادر. أكمل الخطوات السابقة بالقيم التالية في إضافة قاعدة أمان صادرة:

    الإعداد القيمة‬
    Source حدد علامة الخدمة.
    علامة خدمة المصدر حدد VirtualNetwork.
    نطاقات منافذ المصادر اترك الإعداد الافتراضي الخاص بـ *.
    الوجهة حدد علامة الخدمة.
    علامة خدمة الوجهة حدد Internet.
    الخدمة اترك الإعداد الافتراضي مخصص.
    نطاقات المنفذ الوجهات أدخل *.
    البروتوكول حدد "Any".
    الإجراء حدد Deny.
    أولوية اترك القيمة الافتراضية 110.
    الاسم أدخل deny-internet-all.

    لقطة شاشة لإنشاء أمان صادر لحظر إلى الإنترنت.

  8. حدد إضافة.

  9. في مربع البحث في أعلى صفحة المدخل، ابحث عن مجموعة أمان الشبكة. حدد "Network security group" في نتائج البحث.

  10. حدد nsg-storage.

  11. حدد الشبكات الفرعية في الإعدادات.

  12. حدد + مساعد .

  13. في Associate subnet، حدد vnet-1 في Virtual network. حدد subnet-private في الشبكة الفرعية.

    لقطة شاشة لشبكة فرعية خاصة مرتبطة بمجموعة أمان الشبكة.

  14. حدد موافق.

تقييد وصول الشبكة إلى مورد

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

إنشاء حساب تخزين

إنشاء حساب Azure Storage للخطوات الواردة في هذه المقالة. إذا كان لديك حساب تخزين بالفعل، يمكنك استخدامه بدلا من ذلك.

  1. في مربع البحث أعلى المدخل، أدخل Storage account. حدّد Storage accounts في نتائج البحث.

  2. حدد + إنشاء.

  3. في علامة التبويب Basics في Create a storage account، أدخل المعلومات التالية أو حددها:

    الإعداد القيمة‬
    تفاصيل المشروع
    الاشتراك حدد اشتراك Azure الخاص بك.
    مجموعة الموارد حدد test-rg.
    تفاصيل المثيل
    Storage account name أدخل storage1. إذا كان الاسم غير متوفر، فأدخِل اسمًا فريدًا.
    الموقع حدد (US) Eeast US 2
    الأداء اترك Standardالافتراضي.
    التكرار حدد التخزين المتكرر محليًا (LRS).
  4. حدد "Review".

  5. حدد إنشاء.

إنشاء مشاركة ملف في حساب التخزين

  1. في مربع البحث أعلى المدخل، أدخل Storage account. حدّد Storage accounts في نتائج البحث.

  2. في حسابات التخزين، حدد حساب التخزين الذي أنشأته في الخطوة السابقة.

  3. في Data storage، حدد File shares.

  4. اختر + File share.

  5. أدخل المعلومات التالية أو حددها في مشاركة ملف جديد:

    الإعداد القيمة‬
    الاسم أدخل file-share.
    المستوى اترك الإعداد الافتراضي للمعاملات المحسنة.
  6. حدد Next: Backup.

  7. إلغاء تحديد تمكين النسخ الاحتياطي.

  8. حدد Review + create، ثم حدد Create.

تقييد وصول الشبكة إلى شبكة فرعية

بشكل افتراضي، تقبل حسابات التخزين اتصالات الشبكة من العملاء في أي شبكة، بما في ذلك الإنترنت. يمكنك تقييد الوصول إلى الشبكة من الإنترنت، وجميع الشبكات الفرعية الأخرى في جميع الشبكات الظاهرية (باستثناء الشبكة الفرعية الخاصة بالشبكة الفرعية في الشبكة الظاهرية vnet-1 .)

لتقييد الوصول إلى الشبكة إلى شبكة فرعية:

  1. في مربع البحث أعلى المدخل، أدخل Storage account. حدّد Storage accounts في نتائج البحث.

  2. حدد حساب التخزين.

  3. في Security + networking، حدد Networking.

  4. في علامة التبويب Firewalls and virtual networks ، حدد Enabled من الشبكات الظاهرية المحددة وعناوين IP في الوصول إلى الشبكة العامة.

  5. في الشبكات الظاهرية، حدد + إضافة شبكة ظاهرية موجودة.

  6. في إضافة شبكات، أدخل المعلومات التالية أو حددها:

    الإعداد القيمة‬
    الاشتراك حدد Subscription الخاص بك.
    الشبكات الظاهرية حدد vnet-1.
    الشبكات الفرعية حدد subnet-private.

    لقطة شاشة لقيود حساب التخزين على الشبكة الفرعية والشبكة الظاهرية التي تم إنشاؤها مسبقا.

  7. حدد إضافة.

  8. حدد Save لحفظ تكوينات الشبكة الظاهرية.

    لقطة شاشة لشاشة حساب التخزين وتأكيد تقييد الشبكة الفرعية.

توزيع الأجهزة الظاهرية إلى الشبكات الفرعية

لاختبار الوصول إلى الشبكة إلى حساب تخزين، انشر جهازا ظاهريا على كل شبكة فرعية.

إنشاء جهاز ظاهري للاختبار

ينشئ الإجراء التالي جهازا ظاهريا تجريبيا (VM) يسمى vm-1 في الشبكة الظاهرية.

  1. في المدخل، ابحث عن الأجهزة الظاهرية وحددها.

  2. في الأجهزة الظاهرية، حدد + إنشاء، ثم جهاز Azure الظاهري.

  3. في علامة التبويب أساسيات، قم بإنشاء جهاز ظاهري، وأدخل أو حدد المعلومات التالية:

    الإعداد القيمة‬
    تفاصيل المشروع
    الاشتراك حدد Subscription الخاص بك.
    مجموعة الموارد حدد test-rg.
    تفاصيل المثيل
    اسم الجهاز الظاهري أدخل vm-1.
    المنطقة حدد شرق الولايات المتحدة 2.
    خيارات التوفر حدد No infrastructure redundancy required.
    نوع الأمان اترك الإعداد الافتراضي "Standard".
    الصورة حدد Windows Server 2022 Datacenter - x64 Gen2.
    بنية الجهاز الظاهري اترك الإعداد الافتراضي x64.
    الحجم تحديد الحجم.
    حساب المسؤول
    نوع المصادقة اختر كلمة السر.
    اسم مستخدم أدخل azureuser.
    كلمة المرور إدخال «password».
    تأكيد كلمة المرور أعد إدخال كلمة المرور.
    قواعد المنفذ الوارد
    المنافذ العامة الواردة حدد لا شيء.
  4. حدد علامة التبويب Networking في أعلى الصفحة.

  5. أدخل المعلومات التالية أو حددها في علامة تبويب "Networking":

    الإعداد القيمة‬
    واجهة الشبكة
    الشبكة الظاهرية حدد vnet-1.
    الشبكة الفرعية حدد subnet-1 (10.0.0.0/24).
    عنوان IP عام حدد لا شيء.
    المجموعة الأمنية للشبكة NIC حدد خيارات متقدمة.
    تكوين مجموعة أمان الشبكة حدد إنشاء جديد.
    أدخل nsg-1 للاسم.
    اترك الباقي في الإعدادات الافتراضية وحدد موافق.
  6. اترك بقية الإعدادات في الإعدادات الافتراضية وحدد Review + create.

  7. راجع الإعدادات وحدد Create.

إشعار

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

إشعار

يوفر Azure عنوان IP افتراضيا للوصول الصادر للأجهزة الظاهرية التي لم يتم تعيين عنوان IP عام لها أو الموجودة في تجمع الواجهة الخلفية لموازن تحميل Azure الأساسي الداخلي. توفر آلية IP للوصول الصادر الافتراضي عنوان IP صادر غير قابل للتكوين.

يتم تعطيل عنوان IP الافتراضي للوصول الصادر عند حدوث أحد الأحداث التالية:

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

لا تتمتع الأجهزة الظاهرية التي تقوم بإنشائها باستخدام مجموعات مقياس الجهاز الظاهري في وضع التنسيق المرن بالوصول الصادر الافتراضي.

لمزيد من المعلومات حول الاتصالات الصادرة في Azure، راجع الوصول الصادر الافتراضي في Azure واستخدام ترجمة عنوان الشبكة المصدر (SNAT) للاتصالات الصادرة.

إنشاء الجهاز الظاهري الثاني

  1. إنشاء جهاز ظاهري ثان يكرر الخطوات الواردة في القسم السابق. استبدل القيم التالية في إنشاء جهاز ظاهري:

    الإعداد القيمة‬
    اسم الجهاز الظاهري أدخل vm-private.
    الشبكة الفرعية حدد subnet-private.
    عنوان IP عام حدد لا شيء.
    المجموعة الأمنية للشبكة NIC حدد لا شيء.

    تحذير

    لا تنتقل إلى الخطوة التالية حتى يتم إكمال التوزيع.

تأكيد حق الوصول إلى حساب التخزين

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

الحصول على مفتاح الوصول إلى حساب التخزين

  1. في مربع البحث أعلى المدخل، أدخل Storage account. حدّد Storage accounts في نتائج البحث.

  2. في حسابات التخزين، حدد حساب التخزين الخاص بك.

  3. في Security + networking، حدد Access keys.

  4. انسخ قيمة key1. قد تحتاج إلى تحديد الزر إظهار لعرض المفتاح.

    لقطة شاشة لمفتاح الوصول إلى حساب التخزين.

  5. في مربع البحث الموجود أعلى المدخل، أدخل Virtual machine. حدد "Virtual machines" في نتائج البحث.

  6. حدد vm-private.

  7. حدد Bastion في Operations.

  8. أدخل اسم المستخدم وكلمة المرور التي حددتها عند إنشاء الجهاز الظاهري. حدد اتصال.

  9. افتح Windows PowerShell. استخدم البرنامج النصي التالي لتعيين مشاركة ملف Azure لمحرك الأقراص Z.

    • استبدل <storage-account-key> بالمفتاح الذي نسخته في الخطوة السابقة.

    • استبدال <storage-account-name> اسم حساب التخزين الخاص بك. في هذا المثال، إنه storage8675.

     $key = @{
         String = "<storage-account-key>"
     }
     $acctKey = ConvertTo-SecureString @key -AsPlainText -Force
    
     $cred = @{
         ArgumentList = "Azure\<storage-account-name>", $acctKey
     }
     $credential = New-Object System.Management.Automation.PSCredential @cred
    
     $map = @{
         Name = "Z"
         PSProvider = "FileSystem"
         Root = "\\<storage-account-name>.file.core.windows.net\file-share"
         Credential = $credential
     }
     New-PSDrive @map
    

    يرجع PowerShell الإخراج مشابهًا إلى إخراج المثال التالي:

    Name        Used (GB)     Free (GB) Provider      Root
    ----        ---------     --------- --------      ----
    Z                                      FileSystem    \\storage8675.file.core.windows.net\f...
    

    تم تعيين مشاركة ملف Azure بنجاح إلى محرك الأقراص Z.

  10. أغلق اتصال Bastion إلى vm-private.

تأكد من رفض الوصول إلى حساب التخزين

من vm-1

  1. في مربع البحث الموجود أعلى المدخل، أدخل Virtual machine. حدد "Virtual machines" في نتائج البحث.

  2. حدد vm-1.

  3. حدد Bastion في Operations.

  4. أدخل اسم المستخدم وكلمة المرور التي حددتها عند إنشاء الجهاز الظاهري. حدد اتصال.

  5. كرر الأمر السابق لمحاولة تعيين محرك الأقراص إلى مشاركة الملف في حساب التخزين. قد تحتاج إلى نسخ مفتاح الوصول إلى حساب التخزين مرة أخرى لهذا الإجراء:

    $key = @{
        String = "<storage-account-key>"
    }
    $acctKey = ConvertTo-SecureString @key -AsPlainText -Force
    
    $cred = @{
        ArgumentList = "Azure\<storage-account-name>", $acctKey
    }
    $credential = New-Object System.Management.Automation.PSCredential @cred
    
    $map = @{
        Name = "Z"
        PSProvider = "FileSystem"
        Root = "\\<storage-account-name>.file.core.windows.net\file-share"
        Credential = $credential
    }
    New-PSDrive @map
    
  6. قد تتلقى رسالة الخطأ التالية:

    New-PSDrive : Access is denied
    At line:1 char:5
    +     New-PSDrive @map
    +     ~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (Z:PSDriveInfo) [New-PSDrive], Win32Exception
        + FullyQualifiedErrorId : CouldNotMapNetworkDrive,Microsoft.PowerShell.Commands.NewPSDriveCommand
    
  7. أغلق اتصال Bastion إلى vm-1.

من جهاز محلي

  1. في مربع البحث أعلى المدخل، أدخل Storage account. حدّد Storage accounts في نتائج البحث.

  2. في حسابات التخزين، حدد حساب التخزين الخاص بك.

  3. في Data storage، حدد File shares.

  4. حدد file-share.

  5. حدد استعراض في القائمة اليسرى.

  6. قد تتلقى رسالة الخطأ التالية:

    تم لقطة شاشة لرسالة الخطأ رفض الوصول.

إشعار

تم رفض الوصول لأن الكمبيوتر الخاص بك ليس في الشبكة الفرعية الخاصة بالشبكة الفرعية للشبكة الظاهرية vnet-1 .

عند الانتهاء من استخدام الموارد التي قمت بإنشائها، يمكنك حذف مجموعة الموارد وجميع مواردها.

  1. في مدخل Azure، ابحث عن مجموعة المواردوحددها.

  2. في صفحة Resource groups ، حدد مجموعة موارد test-rg .

  3. في صفحة test-rg ، حدد Delete resource group.

  4. أدخل test-rg في Enter resource group name لتأكيد الحذف، ثم حدد Delete.

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

في هذا البرنامج التعليمي:

  • لقد قمت بتمكين نقطة نهاية خدمة لشبكة فرعية لشبكة ظاهرية.

  • تعلمت أنه يمكنك تمكين نقاط نهاية الخدمة للموارد التي تم توزيعها من خدمات Azure المتعددة.

  • أنشأت حساب Azure Storage وقمت بتقييد وصول شبكة الاتصال إلى حساب التخزين للموارد فقط ضمن شبكة فرعية لشبكة ظاهرية.

لمعرفة المزيد حول نقاط نهاية الخدمة، راجع Service endpoints overview وManage subnets.

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