تأمين بيئة استدلال Azure التعلم الآلي باستخدام الشبكات الظاهرية
في هذه المقالة، ستتعرف على كيفية تأمين بيئات الاستدلال باستخدام شبكة ظاهرية في Azure التعلم الآلي.
تلميح
هذه المقالة جزء من سلسلة حول تأمين سير عمل Azure التعلم الآلي. انظر المقالات الأخرى في هذه السلسلة:
- نظرة عامة على الشبكة الظاهرية
- تأمين موارد مساحة العمل
- تأمين بيئة التدريب
- تمكين وظائف الاستوديو
- اسم DNS مخصص
- استخدام جدار حماية
للحصول على برنامج تعليمي حول إنشاء مساحة عمل آمنة، راجع البرنامج التعليمي: إنشاء مساحة عمل آمنة أو البرنامج التعليمي: إنشاء مساحة عمل آمنة باستخدام قالب.
في هذه المقالة ، تتعلم كيفية تأمين موارد الاستدلال التالية في شبكة ظاهرية:
- Default Azure Kubernetes Service (AKS) cluster
- مجموعة AKS الخاصة
- مجموعة AKS مع رابط خاص
- مثيلات حاوية Azure (ACI)
المتطلبات الأساسية
اقرأ مقالة نظرة عامة على أمان الشبكة لفهم سيناريوهات الشبكة الظاهرية الشائعة وبنية الشبكة الظاهرية الشاملة.
شبكة ظاهرية وشبكة فرعية موجودة لاستخدامها مع موارد الحوسبة الخاصة بك.
لنشر الموارد في شبكة ظاهرية أو شبكة فرعية، يجب أن يكون لدى حساب المستخدم أذونات للإجراءات التالية في عنصر تحكم الوصول المستند إلى دور Azure (Azure RBAC):
- "Microsoft.Network/virtualNetworks/join/action" على مورد الشبكة الظاهرية.
- "Microsoft.Network/virtualNetworks/subnet/join/action" على مورد الشبكة الفرعية.
لمزيد من المعلومات حول Azure RBAC مع الشبكات، راجع الأدوار المضمنة في الشبكة
التقييدات
مثيلات حاويات Azure
- عند استخدام مثيلات حاوية Azure في شبكة ظاهرية، يجب أن تكون الشبكة الظاهرية في نفس مجموعة الموارد مثل مساحة عمل Azure التعلم الآلي. وإلا، يمكن أن تكون الشبكة الظاهرية في مجموعة موارد مختلفة.
- إذا كانت مساحة العمل الخاصة بك تحتوي على نقطة نهاية خاصة، فيجب أن تكون الشبكة الظاهرية المستخدمة لمثيلات حاوية Azure هي نفسها التي تستخدمها نقطة النهاية الخاصة بمساحة العمل.
تحذير
عند استخدام مثيلات حاوية Azure داخل الشبكة الظاهرية، لا يمكن أن يكون سجل حاوية Azure (ACR) لمساحة العمل الخاصة بك في الشبكة الظاهرية. وبسبب هذا القيد، لا نوصي باستخدام مثيلات حاوية Azure لعمليات النشر الآمنة باستخدام Azure التعلم الآلي.
خدمة Azure Kubernetes Service
- إذا كانت مجموعة AKS الخاصة بك متأخرة عن VNET، فيجب أن تحتوي مساحة العمل والموارد المرتبطة بها (التخزين أو مخزن المفاتيح أو سجل حاويات Azure) على نقاط نهاية خاصة أو نقاط نهاية خدمة في نفس VNET مثل VNET الخاص بمجموعة AKS. يرجى قراءة البرنامج التعليمي لإنشاء مساحة عمل آمنة لإضافة نقاط النهاية الخاصة أو نقاط نهاية الخدمة إلى VNET الخاص بك.
- إذا كانت مساحة العمل الخاصة بك تحتوي على نقطة نهاية خاصة، فيجب أن تكون مجموعة Azure Kubernetes Service في نفس منطقة Azure مثل مساحة العمل.
- استخدام اسم مجال عام مؤهل بالكامل (FQDN) مع مجموعة AKS خاصةغير مدعوم مع تعلم Azure Machine.
خدمة Azure Kubernetes Service
هام
لاستخدام نظام مجموعة AKS في شبكة ظاهرية، اتبع أولا المتطلبات الأساسية في تكوين الشبكات المتقدمة في خدمة Azure Kubernetes (AKS).
لإضافة AKS في شبكة ظاهرية إلى مساحة العمل الخاصة بك، اتبع الخطوات التالية:
سجل الدخول إلى استوديو Azure التعلم الآلي، ثم حدد الاشتراك ومساحة العمل.
حدد حساب على اليمين، مجموعات الاستدلال من الوسط، ثم حدد + جديد.
من مربع الحوار إنشاء مجموعة الاستدلال ، حدد إنشاء جديد وحجم الجهاز الظاهري لاستخدامه للمجموعة. وأخيرا، حدد التالي.
من القسم تكوين الإعدادات، أدخل اسم حساب، وحدد الغرض من نظام المجموعة، وعدد العقد، ثم حدد خيارات متقدمة لعرض إعدادات الشبكة. في منطقة تكوين الشبكة الظاهرية ، قم بتعيين القيم التالية:
قم بتعيين الشبكة الظاهرية للاستخدام.
تلميح
إذا كانت مساحة العمل الخاصة بك تستخدم نقطة نهاية خاصة للاتصال بالشبكة الظاهرية، فسيظهر حقل تحديد الشبكة الظاهرية باللون الرمادي .
قم بتعيين الشبكة الفرعية لإنشاء الكتلة في.
في الحقل نطاق عنوان خدمة Kubernetes، أدخل نطاق عناوين خدمة Kubernetes . يستخدم نطاق العناوين هذا نطاق IP لتدوين التوجيه Inter-Domain بدون فئة (CIDR) لتحديد عناوين IP المتوفرة للمجموعة. يجب ألا تتداخل مع أي نطاقات IP للشبكة الفرعية (على سبيل المثال، 10.0.0.0/16).
في حقل عنوان IP لخدمة Kubernetes DNS، أدخل عنوان IP لخدمة Kubernetes DNS . يتم تعيين عنوان IP هذا لخدمة Kubernetes DNS. يجب أن يكون ضمن نطاق عنوان خدمة Kubernetes (على سبيل المثال، 10.0.0.10).
في حقل عنوان جسر Docker، أدخل عنوان جسر Docker . يتم تعيين عنوان IP هذا إلى جسر Docker. يجب ألا يكون في أي نطاقات IP للشبكة الفرعية أو نطاق عنوان خدمة Kubernetes (على سبيل المثال، 172.18.0.1/16).
عند نشر نموذج كخدمة ويب إلى AKS، يتم إنشاء نقطة نهاية تسجيل النقاط للتعامل مع طلبات الاستدلال. تأكد من أن مجموعة أمان الشبكة (NSG) التي تتحكم في الشبكة الظاهرية تحتوي على قاعدة أمان واردة ممكنة لعنوان IP الخاص بنقطة نهاية التسجيل إذا كنت تريد الاتصال بها من خارج الشبكة الظاهرية.
للعثور على عنوان IP لنقطة نهاية تسجيل النقاط، انظر إلى عنوان URI المسجل للخدمة المنشورة. للحصول على معلومات حول عرض عنوان URI المسجل، راجع استهلاك نموذج تم نشره كخدمة ويب.
هام
احتفظ بالقواعد الصادرة الافتراضية لمجموعة موردي المواد النووية. لمزيد من المعلومات، راجع قواعد الأمان الافتراضية في مجموعات الأمان.
هام
سيكون عنوان IP الموضح في الصورة لنقطة نهاية تسجيل النقاط مختلفا لعمليات النشر الخاصة بك. في حين يتم مشاركة نفس عنوان IP بواسطة جميع عمليات النشر إلى مجموعة AKS واحدة ، سيكون لكل مجموعة AKS عنوان IP مختلف.
يمكنك أيضا استخدام Azure التعلم الآلي SDK لإضافة Azure Kubernetes Service في شبكة ظاهرية. إذا كان لديك بالفعل مجموعة AKS في شبكة ظاهرية، فقم بإرفاقها بمساحة العمل كما هو موضح في كيفية النشر إلى AKS. تقوم التعليمة البرمجية التالية بإنشاء مثيل AKS جديد في default الشبكة الفرعية لشبكة ظاهرية مسماة mynetwork:
from azureml.core.compute import ComputeTarget, AksCompute
# Create the compute configuration and set virtual network information
config = AksCompute.provisioning_configuration(location="eastus2")
config.vnet_resourcegroup_name = "mygroup"
config.vnet_name = "mynetwork"
config.subnet_name = "default"
config.service_cidr = "10.0.0.0/16"
config.dns_service_ip = "10.0.0.10"
config.docker_bridge_cidr = "172.17.0.1/16"
# Create the compute target
aks_target = ComputeTarget.create(workspace=ws,
name="myaks",
provisioning_configuration=config)
عند اكتمال عملية الإنشاء، يمكنك تشغيل الاستدلال، أو تسجيل النماذج، على مجموعة AKS خلف شبكة افتراضية. لمزيد من المعلومات، راجع كيفية النشر إلى AKS.
لمزيد من المعلومات حول استخدام التحكم في الوصول Role-Based مع Kubernetes، راجع استخدام Azure RBAC لتخويل Kubernetes.
دور المساهم في الشبكة
هام
إذا قمت بإنشاء أو إرفاق مجموعة AKS عن طريق توفير شبكة ظاهرية قمت بإنشائها مسبقا، فيجب عليك منح أصل الخدمة (SP) أو الهوية المدارة لتجميع AKS دور مساهم الشبكة إلى مجموعة الموارد التي تحتوي على الشبكة الظاهرية.
لإضافة الهوية كمساهم في الشبكة، اتبع الخطوات التالية:
للعثور على معرف الهوية الأساسي أو المدار ل AKS، استخدم أوامر Azure CLI التالية. استبدال
<aks-cluster-name>باسم نظام المجموعة. استبدال<resource-group-name>باسم مجموعة الموارد التي تحتوي على نظام مجموعة AKS:az aks show -n <aks-cluster-name> --resource-group <resource-group-name> --query servicePrincipalProfile.clientIdإذا كان هذا الأمر بإرجاع قيمة
msi، فاستخدم الأمر التالي لتحديد المعرف الأساسي للهوية المدارة:az aks show -n <aks-cluster-name> --resource-group <resource-group-name> --query identity.principalIdللبحث عن معرف مجموعة الموارد التي تحتوي على الشبكة الظاهرية، استخدم الأمر التالي. استبدال
<resource-group-name>باسم مجموعة الموارد التي تحتوي على الشبكة الظاهرية:az group show -n <resource-group-name> --query idلإضافة أصل الخدمة أو الهوية المدارة كمساهم في الشبكة، استخدم الأمر التالي. استبدل
<SP-or-managed-identity>بالمعرف الذي تم إرجاعه لأصل الخدمة أو الهوية المدارة. استبدال<resource-group-id>مع معرف تم إرجاعه لمجموعة الموارد التي تحتوي على الشبكة الظاهرية:az role assignment create --assignee <SP-or-managed-identity> --role 'Network Contributor' --scope <resource-group-id>
لمزيد من المعلومات حول استخدام موازن التحميل الداخلي مع AKS، راجع استخدام موازن التحميل الداخلي مع خدمة Azure Kubernetes.
تأمين حركة مرور VNet
هناك طريقتان لعزل حركة المرور من وإلى مجموعة AKS إلى الشبكة الافتراضية:
- مجموعة AKS الخاصة: يستخدم هذا النهج Azure Private Link لتأمين الاتصالات مع المجموعة لعمليات النشر/الإدارة.
- موازن تحميل AKS الداخلي: يقوم هذا النهج بتكوين نقطة النهاية لعمليات النشر الخاصة بك إلى AKS لاستخدام عنوان IP خاص داخل الشبكة الافتراضية.
مجموعة AKS الخاصة
بشكل افتراضي ، تحتوي مجموعات AKS على مستوى تحكم ، أو خادم API ، مع عناوين IP عامة. يمكنك تكوين AKS لاستخدام مستوى تحكم خاص عن طريق إنشاء مجموعة AKS خاصة. لمزيد من المعلومات، راجع إنشاء مجموعة خدمات Azure Kubernetes خاصة.
بعد إنشاء مجموعة AKS الخاصة، قم بإرفاق المجموعة بالشبكة الظاهرية لاستخدامها مع Azure التعلم الآلي.
موازن تحميل AKS داخلي
بشكل افتراضي، تستخدم عمليات نشر AKS موازن تحميل عام. في هذا القسم، ستتعرف على كيفية تكوين AKS لاستخدام موازن تحميل داخلي. يتم استخدام موازن تحميل داخلي (أو خاص) حيث تكون هناك حاجة إلى عناوين IP الخاصة في الواجهة الأمامية فقط. تستخدم موازنات التحميل الداخلية لتحميل حركة مرور الرصيد داخل شبكة افتراضية
يتم تمكين موازن تحميل خاص عن طريق تكوين AKS لاستخدام موازن تحميل داخلي.
تمكين موازن التحميل الخاص
هام
لا يمكنك تمكين IP الخاص عند إنشاء مجموعة خدمات Azure Kubernetes في Azure التعلم الآلي studio. يمكنك إنشاء واحد باستخدام موازن تحميل داخلي عند استخدام Python SDK أو ملحق Azure CLI للتعلم الآلي.
توضح الأمثلة التالية كيفية إنشاء مجموعة AKS جديدة باستخدام موازن تحميل IP/داخلي خاص باستخدام SDK وCLI:
import azureml.core
from azureml.core.compute import AksCompute, ComputeTarget
# Verify that cluster does not exist already
try:
aks_target = AksCompute(workspace=ws, name=aks_cluster_name)
print("Found existing aks cluster")
except:
print("Creating new aks cluster")
# Subnet to use for AKS
subnet_name = "default"
# Create AKS configuration
prov_config=AksCompute.provisioning_configuration(load_balancer_type="InternalLoadBalancer")
# Set info for existing virtual network to create the cluster in
prov_config.vnet_resourcegroup_name = "myvnetresourcegroup"
prov_config.vnet_name = "myvnetname"
prov_config.service_cidr = "10.0.0.0/16"
prov_config.dns_service_ip = "10.0.0.10"
prov_config.subnet_name = subnet_name
prov_config.load_balancer_subnet = subnet_name
prov_config.docker_bridge_cidr = "172.17.0.1/16"
# Create compute target
aks_target = ComputeTarget.create(workspace = ws, name = "myaks", provisioning_configuration = prov_config)
# Wait for the operation to complete
aks_target.wait_for_completion(show_output = True)
عند إرفاق مجموعة موجودة بمساحة العمل الخاصة بك، استخدم load_balancer_typeload_balancer_subnet معلمات AksCompute.attach_configuration() لتكوين موازن التحميل.
للحصول على معلومات حول إرفاق مجموعة، راجع إرفاق مجموعة AKS موجودة.
تمكين مثيلات حاوية Azure (ACI)
يتم إنشاء مثيلات Azure Container ديناميكيا عند نشر نموذج. لتمكين Azure التعلم الآلي من إنشاء ACI داخل الشبكة الظاهرية، يجب تمكين تفويض الشبكة الفرعية للشبكة الفرعية المستخدمة من قبل النشر. لاستخدام ACI في شبكة ظاهرية إلى مساحة العمل الخاصة بك، اتبع الخطوات التالية:
يجب أن يكون لدى حساب المستخدم الخاص بك أذونات للإجراءات التالية في التحكم في الوصول المستند إلى دور Azure (Azure RBAC):
Microsoft.Network/virtualNetworks/*/readعلى مورد الشبكة الظاهرية. هذا الإذن غير مطلوب لعمليات نشر قوالب Azure Resource Manager.Microsoft.Network/virtualNetworks/subnet/join/actionعلى مورد الشبكة الفرعية.
في مدخل Azure، ابحث عن اسم الشبكة الظاهرية. عندما يظهر في نتائج البحث، حدده.
حدد الشبكات الفرعية، ضمن إعدادات، ثم حدد الشبكة الفرعية.
في صفحة الشبكة الفرعية، بالنسبة لقائمة تفويض الشبكة الفرعية ، حدد
Microsoft.ContainerInstance/containerGroups.نشر النموذج باستخدام AciWebservice.deploy_configuration()، واستخدام المعلمات
vnet_nameوsubnet_name. قم بتعيين هذه المعلمات إلى اسم الشبكة الظاهرية والشبكة الفرعية حيث قمت بتمكين التفويض.
لمزيد من المعلومات، راجع إضافة تفويض شبكة فرعية أو إزالته.
الحد من الاتصال الصادر من الشبكة الظاهرية
إذا كنت لا تريد استخدام القواعد الصادرة الافتراضية وتريد تقييد الوصول الصادر لشبكتك الظاهرية، فيجب عليك السماح بالوصول إلى سجل حاويات Azure. على سبيل المثال، تأكد من أن مجموعات أمان الشبكة (NSG) تحتوي على قاعدة تسمح بالوصول إلى علامة خدمة AzureContainerRegistry.RegionName حيث يكون "{RegionName} هو اسم منطقة Azure.
الخطوات التالية
هذه المقالة جزء من سلسلة حول تأمين سير عمل Azure التعلم الآلي. انظر المقالات الأخرى في هذه السلسلة:
