حلول MLOps الآمنة مع أمان شبكة Azure

Azure DevOps
Azure DNS
Azure Machine Learning
Azure Private Link
Azure Virtual Network

التعلم الآلي DevOps (MLOps)، تم تمييزها أولا في الدين التقني المخفي في أنظمة التعلم الآلي في عام 2015 ينمو بسرعة. ومن المتوقع أن يصل سوق MLOps إلى 4 مليارات دولار بحلول عام 2025. في غضون ذلك، أصبح العمل على تأمين حلول MLOps أكثر أهمية.

توضح هذه المقالة كيفية المساعدة في حماية حلول MLOps باستخدام قدرات أمان شبكة Azure مثل شبكة Azure الظاهرية، ونظير الشبكة، وAzure Private Link، وAzure DNS. كما يقدم كيفية استخدام:

  • Azure Pipelines للوصول إلى الموارد في الشبكة الظاهرية
  • التكوينات المطلوبة من Azure Container Registry ومثيلات حوسبة Azure التعلم الآلي ومجموعاتها في شبكة ظاهرية.

وأخيرا، توضح هذه المقالة تكاليف استخدام خدمات أمان الشبكة.

بناء الأنظمة

رسم تخطيطي للمراحر في عملية MLOps، بدءا من إعداد البيانات إلى مراقبة النموذج.

قم بتنزيل ملف Visio لهذه البنية.

تدفق البيانات

يوضح الرسم التخطيطي للبنية نموذج حل MLOps.

  • تساعد الشبكة الظاهرية المسماة AML VNET على حماية مساحة عمل Azure التعلم الآلي والموارد المقترنة بها.

  • ينتمي مضيف الانتقال السريع وAzure Bastion والوكلاء المستضافين ذاتيا إلى شبكة ظاهرية أخرى تسمى BASTION VNET. يحاكي هذا الترتيب وجود حل آخر يتطلب الوصول إلى الموارد داخل Azure التعلم الآلي الشبكة الظاهرية.

  • بدعم من نظير الشبكة الظاهرية ومناطق DNS الخاصة، يمكن تنفيذ Azure Pipelines على عوامل المضيف الذاتي وتشغيل البنية الأساسية لبرنامج ربط العمليات التجارية التعلم الآلي Azure التي يتم نشرها في مساحة عمل Azure التعلم الآلي لتدريب نماذج التعلم الآلي وتقييمها وتسجيلها.

  • وأخيرا، يتم نشر النموذج إلى نقاط النهاية عبر الإنترنت أو نقاط النهاية الدفعية التي يدعمها Azure التعلم الآلي الحوسبة أو مجموعات خدمة Azure Kubernetes.

المكونات

يتكون نموذج حل MLOps من هذه المكونات:

يستخدم هذا السيناريو المثال أيضا الخدمات التالية للمساعدة في حماية حل MLOps:

تفاصيل السيناريو

MLOps هي مجموعة من الممارسات عند تقاطع التعلم الآلي وDevOps وهندسة البيانات التي تهدف إلى نشر نماذج التعلم الآلي وصيانتها في الإنتاج بشكل موثوق وفعال.

يوضح الرسم التخطيطي التالي نموذج عملية MLOps مبسط. يقدم هذا النموذج حلا يقوم بأتمتة إعداد البيانات وتدريب النموذج وتقييم النموذج وتسجيل النموذج ونشر النموذج والمراقبة.

رسم تخطيطي للمراحر في عملية MLOps، بدءا من إعداد البيانات إلى مراقبة النموذج.

عند تنفيذ حل MLOps، قد تحتاج إلى المساعدة في تأمين هذه الموارد:

  • مسارات DevOps
  • بيانات التدريب على التعلم الآلي
  • مسارات التعلم الآلي
  • نماذج التعلم الآلي

للمساعدة في تأمين الموارد، ضع في اعتبارك هذه الطرق:

  • المصادقة والتخويل

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

    • استخدم الشبكة الظاهرية لعزل البيئة جزئيا أو كليا عن الإنترنت العام لتقليل سطح الهجوم وإمكانية تسرب البيانات.
      • في مساحة عمل Azure التعلم الآلي، إذا كنت لا تزال تستخدم Azure التعلم الآلي CLI v1 وAzure التعلم الآلي Python SDK v1 (مثل v1 API)، فقم بإضافة نقطة نهاية خاصة إلى مساحة العمل لتوفير عزل الشبكة لكل شيء باستثناء عمليات الإنشاء والقراءة والتحديث والحذف (CRUD) على مساحة العمل أو موارد الحساب.
      • للاستفادة من الميزات الجديدة لمساحة عمل Azure التعلم الآلي، استخدم Azure التعلم الآلي CLI v2 وAzure التعلم الآلي Python SDK v2 (مثل v2 API)، حيث لا يوفر تمكين نقطة نهاية خاصة على مساحة العمل نفس المستوى من عزل الشبكة. ومع ذلك، ستظل الشبكة الظاهرية تساعد في حماية بيانات التدريب ونماذج التعلم الآلي. نوصي بتقييم v2 API قبل اعتمادها في حلول مؤسستك. لمزيد من المعلومات، راجع ما هو النظام الأساسي الجديد لواجهة برمجة التطبيقات على Azure Resource Manager.
  • تشفير البيانات

  • النهج والمراقبة

    • استخدم نهج Azure وMicrosoft Defender for Cloud لفرض النهج.
    • استخدم Azure Monitor لجمع البيانات وتجميعها (مثل المقاييس والسجلات) من مصادر مختلفة في نظام أساسي للبيانات المشتركة للتحليل والتصور والتنبيه.

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

عند إنشاء مساحة عمل جديدة، فإنه ينشئ تلقائيا موارد Azure التالية التي تستخدمها مساحة العمل:

  • Azure Application Insights
  • Azure Container Registry
  • Azure Key Vault
  • حساب مساحة تخزين Azure

حالات الاستخدام المحتملة

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

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

  • تحتاج الشركة المصنعة للمحرك إلى حل أكثر أمانا للمساعدة في حماية البيانات ونماذج التعلم الآلي من مصانعها ومنتجاتها لنظامها الذي يستخدم رؤية الكمبيوتر للكشف عن العيوب في الأجزاء.

قد تستخدم حلول MLOps لهذه السيناريوهات وغيرها مساحات عمل Azure التعلم الآلي وتخزين Azure Blob وخدمة Azure Kubernetes وسجل الحاويات وخدمات Azure الأخرى.

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

الاعتبارات

تنفذ هذه الاعتبارات ركائز Azure Well-Architected Framework، وهي مجموعة من المبادئ التوجيهية التي تحسن جودة حمل العمل عند تطبيقها. لمزيد من المعلومات، يرجى مراجعةMicrosoft Azure Well-Architected Framework.

الأمان

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

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

تحسين التكلفة

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

تكوين الشبكة الظاهرية مجاني، ولكن هناك رسوم للخدمات الأخرى التي قد يتطلبها السيناريو الخاص بك، مثل الارتباطات الخاصة ومناطق DNS ونظير الشبكة الظاهرية. يصف الجدول التالي رسوم تلك الخدمات وغيرها التي قد تكون مطلوبة.

خدمة Azure التسعير
شبكة ظاهرية مجانا.
Private Link ادفع فقط مقابل ساعات موارد نقطة النهاية الخاصة والبيانات التي تتم معالجتها من خلال نقطة النهاية الخاصة بك.
Azure DNS، المنطقة الخاصة تستند الفوترة إلى عدد مناطق DNS المستضافة في Azure وعدد استعلامات DNS التي يتم تلقيها.
تناظر الشبكة الظاهرية يتم فرض رسوم على نقل البيانات الواردة والصادرة على طرفي الشبكات المتناظرة.
بوابة VPN تستند الرسوم إلى مقدار الوقت الذي يتم فيه توفير البوابة وإتاحتها.
ExpressRoute يتم فرض رسوم على ExpressRoute و ExpressRoute Gateways.
Azure Bastion تتضمن الفوترة مزيجا من التسعير بالساعة التي تستند إلى SKU ووحدات المقياس ومعدلات نقل البيانات.

التميز التشغيلي

يغطي التميز التشغيلي عمليات التشغيل التي تحافظ على تشغيل التطبيق في الإنتاج. لمزيد من المعلومات، يرجى مراجعةنظرة عامة على ركيزة التميز التشغيلي.

لتبسيط التكامل المستمر والتسليم المستمر (CI/CD)، فإن أفضل الممارسات هي استخدام الأدوات والخدمات للبنية الأساسية كتعليق برمجي (IaC)، مثل قوالب Terraform أو Azure Resource Manager وAzure DevOps وAzure Pipelines.

نشر هذا السيناريو

تصف الأقسام التالية كيفية نشر الموارد والوصول إليها والمساعدة في تأمينها في هذا السيناريو المثال.

شبكة ظاهرية

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

يساعد وضع مساحة عمل Azure التعلم الآلي والموارد المرتبطة بها في شبكة ظاهرية على ضمان إمكانية اتصال المكونات ببعضها دون تعريضها للإنترنت العام. يؤدي القيام بذلك إلى تقليل سطح الهجوم ويساعد على منع تسرب البيانات.

يوضح مقتطف Terraform التالي كيفية إنشاء نظام مجموعة حساب ل Azure التعلم الآلي، وإرفاقه بمساحة عمل، ووضعه في شبكة فرعية لشبكة ظاهرية.

resource "azurerm_machine_learning_compute_cluster" "compute_cluster" {
  name                          = "my_compute_cluster"
  location                      = "eastasia"
  vm_priority                   = "LowPriority"
  vm_size                       = "Standard_NC6s_v3"
  machine_learning_workspace_id = azurerm_machine_learning_workspace.my_workspace.id
  subnet_resource_id            = azurerm_subnet.compute_subnet.id
  ssh_public_access_enabled     = false
  scale_settings {
    min_node_count                       = 0
    max_node_count                       = 3
    scale_down_nodes_after_idle_duration = "PT30S"
  }
  identity {
    type = "SystemAssigned"
  }
}

يتيح Private Link الوصول عبر نقطة نهاية خاصة في شبكتك الظاهرية إلى خيارات النظام الأساسي Azure كخدمة (PaaS)، مثل مساحة عمل Azure التعلم الآلي ومساحة تخزين Azure، والخدمات المملوكة للعميل والمملوكة للشريك في Azure. نقطة النهاية الخاصة هي واجهة شبكة اتصال تتصل بموارد معينة فقط، مما يساعد على الحماية من تسرب البيانات.

في هذا السيناريو المثال، هناك أربع نقاط نهاية خاصة مرتبطة بخيارات Azure PaaS وتتم إدارتها بواسطة شبكة فرعية في شبكة Azure التعلم الآلي الظاهرية، كما هو موضح في الرسم التخطيطي للبنية. لذلك، يمكن الوصول إلى هذه الخدمات فقط للموارد داخل نفس الشبكة الظاهرية، Azure التعلم الآلي الشبكة الظاهرية. هذه الخدمات هي:

  • مساحة عمل Azure Machine Learning
  • Azure Blob Storage
  • Azure Container Registry
  • Azure Key Vault

يوضح مقتطف Terraform التالي كيفية استخدام نقطة نهاية خاصة للارتباط بمساحة عمل Azure التعلم الآلي، والتي تكون محمية بشكل أكبر بواسطة الشبكة الظاهرية نتيجة لذلك. تعرض القصاصة البرمجية أيضا استخدام منطقة DNS خاصة، والتي يتم وصفها في مناطق Azure Private DNS.

resource "azurerm_machine_learning_workspace" "aml_ws" {
  name                    = "my_aml_workspace"
  friendly_name           = "my_aml_workspace"
  location                = "eastasia"
  resource_group_name     = "my_resource_group"
  application_insights_id = azurerm_application_insights.my_ai.id
  key_vault_id            = azurerm_key_vault.my_kv.id
  storage_account_id      = azurerm_storage_account.my_sa.id
  container_registry_id   = azurerm_container_registry.my_acr_aml.id

  identity {
    type = "SystemAssigned"
  }
}

# Configure private DNS zones

resource "azurerm_private_dns_zone" "ws_zone_api" {
  name                = "privatelink.api.azureml.ms"
  resource_group_name = var.RESOURCE_GROUP
}

resource "azurerm_private_dns_zone" "ws_zone_notebooks" {
  name                = "privatelink.notebooks.azure.net"
  resource_group_name = var.RESOURCE_GROUP
}

# Link DNS zones to the virtual network

resource "azurerm_private_dns_zone_virtual_network_link" "ws_zone_api_link" {
  name                  = "ws_zone_link_api"
  resource_group_name   = "my_resource_group"
  private_dns_zone_name = azurerm_private_dns_zone.ws_zone_api.name
  virtual_network_id    = azurerm_virtual_network.aml_vnet.id
}

resource "azurerm_private_dns_zone_virtual_network_link" "ws_zone_notebooks_link" {
  name                  = "ws_zone_link_notebooks"
  resource_group_name   = "my_resource_group"
  private_dns_zone_name = azurerm_private_dns_zone.ws_zone_notebooks.name
  virtual_network_id    = azurerm_virtual_network.aml_vnet.id
}

# Configure private endpoints

resource "azurerm_private_endpoint" "ws_pe" {
  name                = "my_aml_ws_pe"
  location            = "eastasia"
  resource_group_name = "my_resource_group"
  subnet_id           = azurerm_subnet.my_subnet.id

  private_service_connection {
    name                           = "my_aml_ws_psc"
    private_connection_resource_id = azurerm_machine_learning_workspace.aml_ws.id
    subresource_names              = ["amlworkspace"]
    is_manual_connection           = false
  }

  private_dns_zone_group {
    name                 = "private-dns-zone-group-ws"
    private_dns_zone_ids = [azurerm_private_dns_zone.ws_zone_api.id, azurerm_private_dns_zone.ws_zone_notebooks.id]
  }

  # Add the private link after configuring the workspace
  depends_on = [azurerm_machine_learning_compute_instance.compute_instance, azurerm_machine_learning_compute_cluster.compute_cluster]
}

ستستخدم التعليمات البرمجية السابقة لنظام azurerm_machine_learning_workspace v2 API الأساسي بشكل افتراضي. إذا كنت لا تزال ترغب في استخدام v1 API أو لديك نهج شركة يحظر إرسال الاتصال عبر الشبكات العامة، يمكنك تمكين المعلمة v1_legacy_mode_enabled ، كما هو موضح في قصاصة التعليمات البرمجية التالية. عند التمكين، تعطل هذه المعلمة واجهة برمجة التطبيقات (الإصدار الثاني) لمساحة العمل الخاصة بك.

resource "azurerm_machine_learning_workspace" "aml_ws" {
  ...
  public_network_access_enabled = false
  v1_legacy_mode_enabled  = true
}

مناطق Azure Private DNS

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

يستخدم هذا الحل النموذجي نقاط نهاية خاصة لمساحة عمل Azure التعلم الآلي والموارد المقترنة بها مثل Azure Storage أو Azure Key Vault أو Container Registry. لذلك، يجب تكوين إعدادات DNS لحل عناوين IP لنقاط النهاية الخاصة من اسم المجال المؤهل بالكامل (FQDN) سلسلة الاتصال.

يمكنك ربط منطقة DNS خاصة بشبكة ظاهرية لحل مجالات معينة.

ينشئ مقتطف Terraform في Private Link وAzure Private Endpoint منطقتين DNS خاصتين باستخدام أسماء المناطق الموصى بها في تكوين منطقة DNS لخدمات Azure:

  • privatelink.api.azureml.ms
  • privatelink.notebooks.azure.net

تناظر الشبكة الظاهرية

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

يقوم مقتطف Terraform التالي بإعداد تناظر الشبكة الظاهرية بين شبكة Azure التعلم الآلي الظاهرية وشبكة Azure Bastion الظاهرية.

# Virtual network peering for AML VNET and BASTION VNET
resource "azurerm_virtual_network_peering" "vp_amlvnet_basvnet" {
  name                      = "vp_amlvnet_basvnet"
  resource_group_name       = "my_resource_group"
  virtual_network_name      = azurerm_virtual_network.amlvnet.name
  remote_virtual_network_id = azurerm_virtual_network.basvnet.id
  allow_virtual_network_access = true
  allow_forwarded_traffic      = true
}

resource "azurerm_virtual_network_peering" "vp_basvnet_amlvnet" {
  name                      = "vp_basvnet_amlvnet"
  resource_group_name       = "my_resource_group"
  virtual_network_name      = azurerm_virtual_network.basvnet.name
  remote_virtual_network_id = azurerm_virtual_network.amlvnet.id
  allow_virtual_network_access = true
  allow_forwarded_traffic      = true
}

الوصول إلى الموارد في الشبكة الظاهرية

للوصول إلى مساحة عمل Azure التعلم الآلي في شبكة ظاهرية، مثل Azure التعلم الآلي الشبكة الظاهرية في هذا السيناريو، استخدم إحدى الطرق التالية:

  • Azure VPN Gateway
  • Azure ExpressRoute
  • Azure Bastion وVM لمضيف الانتقال السريع

لمزيد من المعلومات، راجع الاتصال بمساحة العمل.

تشغيل Azure Pipelines التي تصل إلى الموارد في الشبكة الظاهرية

تقوم Azure Pipelines تلقائياً بإنشاء واختبار مشاريع التعليمات البرمجية لإتاحتها للآخرين. تجمع Azure Pipelines بين CI/CD لاختبار وبناء التعليمات البرمجية الخاصة بك وشحنها إلى أي هدف.

العوامل المستضافة من Azure مقابل الوكلاء المستضافين ذاتيا

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

  • استخدم العوامل المستضافة ذاتيا في نفس الشبكة الظاهرية أو الشبكة الظاهرية النظيرة، كما هو موضح في الرسم التخطيطي للبنية.

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

  • استخدم العوامل المستضافة من Azure (كعملاء VPN) وبوابة VPN.

كل من هذه الخيارات له إيجابيات وسلبيات. يقارن الجدول التالي عوامل Azure المستضافة مع العوامل المستضافة ذاتيا.

عامل مستضاف من Azure عامل مستضاف ذاتيا
التكلفة ابدأ مجانا لوظيفة موازية واحدة مع 1800 دقيقة شهريا وتكلفة لكل مهمة CI/CD مستضافة على Azure. ابدأ مجانا لوظيفة موازية واحدة مع دقائق غير محدودة شهريا وتكلفة لكل وظيفة متوازية CI/CD مستضافة ذاتيا إضافية مع دقائق غير محدودة. يوفر هذا الخيار وظائف موازية أقل تكلفة.
الصيانة العناية بك من قبل Microsoft. يتم صيانته من قبلك مع مزيد من التحكم في تثبيت البرنامج الذي تريده.
وقت الإنشاء يستغرق وقتا أطول لأنه يتم تحديثه بالكامل في كل مرة تبدأ فيها عملية الإنشاء، ويمكنك دائما البناء من البداية. يوفر الوقت لأنه يحتفظ بجميع الملفات وذاكرة التخزين المؤقت.

إشعار

للحصول على التسعير الحالي، راجع تسعير Azure DevOps.

استنادا إلى المقارنات في الجدول واعتبارات الأمان والتعقيد، يستخدم هذا السيناريو المثال عامل مستضاف ذاتيا ل Azure Pipelines لتشغيل البنية الأساسية لبرنامج ربط العمليات التجارية التعلم الآلي Azure في الشبكة الظاهرية.

لتكوين عامل مستضاف ذاتيا، لديك الخيارات التالية:

  • تثبيت العامل على أجهزة Azure الظاهرية.

  • قم بتثبيت العوامل على Azure Virtual Machine Scale Set، والتي يمكن تحجيمها تلقائيا لتلبية الطلب.

  • تثبيت العامل على حاوية Docker. هذا الخيار غير ممكن، لأن هذا السيناريو قد يتطلب تشغيل حاوية Docker داخل العامل لتدريب نموذج التعلم الآلي.

يوفر نموذج التعليمات البرمجية التالي اثنين من العوامل المستضافة ذاتيا عن طريق إنشاء أجهزة Azure الظاهرية والملحقات:

resource "azurerm_linux_virtual_machine" "agent" {
  ...
}

resource "azurerm_virtual_machine_extension" "update-vm" {
  count                = 2
  name                 = "update-vm${format("%02d", count.index)}"
  publisher            = "Microsoft.Azure.Extensions"
  type                 = "CustomScript"
  type_handler_version = "2.1"
  virtual_machine_id   = element(azurerm_linux_virtual_machine.agent.*.id, count.index)

  settings = <<SETTINGS
    {
        "script": "${base64encode(templatefile("../scripts/terraform/agent_init.sh", {
          AGENT_USERNAME      = "${var.AGENT_USERNAME}",
          ADO_PAT             = "${var.ADO_PAT}",
          ADO_ORG_SERVICE_URL = "${var.ADO_ORG_SERVICE_URL}",
          AGENT_POOL          = "${var.AGENT_POOL}"
        }))}"
    }
SETTINGS
}

كما هو موضح في كتلة التعليمات البرمجية السابقة، يستدعي البرنامج النصي Terraform agent_init.sh، الموضح في كتلة التعليمات البرمجية التالية، لتثبيت برنامج العامل والمكتبات المطلوبة على الجهاز الظاهري للعامل وفقا لمتطلبات العميل.

#!/bin/sh
# Install other required libraries 
...

# Creates directory and downloads Azure DevOps agent installation files
# Find more agent versions at https://github.com/microsoft/azure-pipelines-agent/releases
AGENT_VERSION="3.240.1"
sudo mkdir /myagent 
cd /myagent
sudo wget https://vstsagentpackage.azureedge.net/agent/${AGENT_VERSION}/vsts-agent-linux-x64-${AGENT_VERSION}.tar.gz
sudo tar zxvf ./vsts-agent-linux-x64-${AGENT_VERSION}.tar.gz
sudo chmod -R 777 /myagent

# Unattended installation
sudo runuser -l ${AGENT_USERNAME} -c '/myagent/config.sh --unattended  --url ${ADO_ORG_SERVICE_URL} --auth pat --token ${ADO_PAT} --pool ${AGENT_POOL}'

cd /myagent
#Configure as a service
sudo ./svc.sh install ${AGENT_USERNAME}
#Start service
sudo ./svc.sh start

استخدام Container Registry في الشبكة الظاهرية

هناك بعض المتطلبات الأساسية لتأمين مساحة عمل Azure التعلم الآلي في شبكة ظاهرية. لمزيد من المعلومات، راجع المتطلبات الأساسية. سجل الحاوية هو خدمة مطلوبة عند استخدام مساحة عمل Azure التعلم الآلي لتدريب النماذج ونشرها.

في هذا السيناريو المثال، للتأكد من أن العامل المستضاف ذاتيا يمكنه الوصول إلى سجل الحاوية في الشبكة الظاهرية، نستخدم تناظر الشبكة الظاهرية وإضافة ارتباط شبكة ظاهرية لربط منطقة DNS الخاصة، privatelink.azurecr.io، بشبكة Azure Bastion الظاهرية. يظهر مقتطف Terraform التالي التنفيذ.

# Azure Machine Learning Container Registry is for private access 
# by the Azure Machine Learning workspace
resource "azurerm_container_registry" "acr" {
  name                     = "my_acr"
  resource_group_name      = "my_resource_group"
  location                 = "eastasia"
  sku                      = "Premium"
  admin_enabled            = true
  public_network_access_enabled = false
}

resource "azurerm_private_dns_zone" "acr_zone" {
  name                     = "privatelink.azurecr.io"
  resource_group_name      = "my_resource_group"
}

resource "azurerm_private_dns_zone_virtual_network_link" "acr_zone_link" {
  name                  = "link_acr"
  resource_group_name   = "my_resource_group"
  private_dns_zone_name = azurerm_private_dns_zone.acr_zone.name
  virtual_network_id    = azurerm_virtual_network.amlvnet.id
}

resource "azurerm_private_endpoint" "acr_ep" {
  name                = "acr_pe"
  resource_group_name = "my_resource_group"
  location            = "eastasia"
  subnet_id           = azurerm_subnet.aml_subnet.id

  private_service_connection {
    name                           = "acr_psc"
    private_connection_resource_id = azurerm_container_registry.acr.id
    subresource_names              = ["registry"]
    is_manual_connection           = false
  }

  private_dns_zone_group {
    name                 = "private-dns-zone-group-app-acr"
    private_dns_zone_ids = [azurerm_private_dns_zone.acr_zone.id]
  }
}

يضمن هذا السيناريو المثال أيضا أن سجل الحاوية له دور مساهم للهوية المدارة المعينة من قبل النظام لمساحة عمل Azure التعلم الآلي.

استخدام نظام مجموعة حساب أو مثيل في الشبكة الظاهرية

يتطلب نظام مجموعة أو مثيل حساب Azure التعلم الآلي في شبكة ظاهرية مجموعة أمان شبكة (NSG) مع بعض القواعد المحددة لشبكتها الفرعية. للحصول على قائمة بهذه القواعد، راجع القيود.

لاحظ أيضا أنه بالنسبة إلى نظام مجموعة الحوسبة أو المثيل، من الممكن الآن إزالة عنوان IP العام، مما يساعد على توفير حماية أفضل لموارد الحوسبة في حل MLOps. لمزيد من المعلومات، راجع لا يوجد IP عام لمثيلات الحساب.

المساهمون

تحتفظ Microsoft بهذه المقالة. وهي مكتوبة في الأصل من قبل المساهمين التاليين.

الكتاب الرئيسيون:

مساهمون آخرون:

لمشاهدة ملفات تعريف LinkedIn غير العامة، سجل الدخول إلى LinkedIn.

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