跳转到主要内容

热门内容

今日:

  • 【数据科学】12 项数据科学认证将带来回报
  • pgsodium:加密功能
  • 【GAN架构】GAN与transformer模型:比较架构和用途
  • 【可组合架构】可组合架构:为什么它很重要以及如何开始
  • Microsoft Fabric-更好地理解底层体系结构和概念
  • 【数据科学家】数据科学家职位描述:吸引顶尖人才的技巧
  • 【数据加密】端到端加密:如何在web应用程序中加密数据
  • 【Lakehouse】Walmart 的湖仓架构实践
  • 【容器云】k0s — 另外一个 Kubernetes 发行版 !!
  • 【Rust架构】Rust web框架比较

总体:

  • 【数据集成】用于数据集成的10个最佳开源ETL工具
  • 【管理】热尔韦原理综述
  • 【Java框架】2022 年 17 个流行的 Java 框架:优缺点等
  • 【开源许可】从开源到免费和开源,MinIO现在在GNU AGPLv3许可
  • 【SAP】如何开始使用Sap AFS和Sap FMS。
  • 【数据治理】开源数据治理-2023年需要考虑的7个最佳工具
  • 【数据目录】OpenMetadata与DataHub:比较架构、功能、集成等
  • 【开源合规】使用MySQL许可:开源许可与商业许可
  • 【微服务架构】微服务已死——迷你服务万岁
  • 【SAP GUI】什么是SAP GUI(图形用户界面)以及如何使用它

最近浏览:

  • 【Rust架构】Rust web框架比较
  • 【容器云】k0s — 另外一个 Kubernetes 发行版 !!
  • Microsoft Fabric-更好地理解底层体系结构和概念
  • 【Lakehouse】Walmart 的湖仓架构实践
  • 【数据科学家】数据科学家职位描述:吸引顶尖人才的技巧
  • 【数据科学】12 项数据科学认证将带来回报
  • pgsodium:加密功能
  • 【可组合架构】可组合架构:为什么它很重要以及如何开始
  • 【数据加密】端到端加密:如何在web应用程序中加密数据
  • 【GAN架构】GAN与transformer模型:比较架构和用途

热门内容

今日:

  • 2025年商业领袖必读:6大AI认证课程深度解析
  • 【知识】DIKW(数据,信息,知识,智慧)金字塔
  • 2025全球22大AI认证全景图鉴
  • 【数据建模】什么是数据建模?
  • 【工业控制系统】ICS 安全简介
  • 【容器云】k0s — 另外一个 Kubernetes 发行版 !!
  • 【数据科学家】数据科学家职位描述:吸引顶尖人才的技巧
  • 【数据质量】十大数据质量工具
  • 【数据架构师】2023年10项顶级数据架构师和数据工程师认证
  • 【Rust架构】Rust web框架比较

总体:

  • 语言和框架
  • 【容器架构】Minikube vs.kind vs.k3s-我应该用哪一个?
  • 【数据集成】用于数据集成的10个最佳开源ETL工具
  • 【Java框架】2022 年 17 个流行的 Java 框架:优缺点等
  • 【技术选型】Keras、TensorFlow和PyTorch的区别
  • 【深度学习】45测试深度学习基础知识的数据科学家的问题(以及解决方案)
  • 【数据架构】什么是实体关系图(ERD)?
  • 【Rust架构】Rust web框架比较
  • 【知识】DIKW(数据,信息,知识,智慧)金字塔
  • 【技术选型】AMQP vs MQTT

最近浏览:

  • 【Rust架构】Rust web框架比较
  • 【容器云】k0s — 另外一个 Kubernetes 发行版 !!
  • 2025全球22大AI认证全景图鉴
  • 2025年商业领袖必读:6大AI认证课程深度解析
  • 企业架构
  • 【AI认证课】2025年AI认证课程终极指南:免费与付费最优选
  • 【数据质量】什么是“垃圾进,垃圾出”,为什么它仍然是一个问题?
  • 【数据质量】十大数据质量工具
  • Microsoft Fabric-更好地理解底层体系结构和概念
  • 【Lakehouse】Walmart 的湖仓架构实践

首页
x

Main navigation

  • 主页
  • 数字化 +
    • 数字业务自动化
    • 数字化方案
    • 数字化转型战略
    • 数字化转型治理
    • 数字化运营
    • 数字化客户
      • 客户
    • 数字化研发
      • 研发
    • 数字化制造
    • 数字化生产
    • 数字化供应链
    • 数字化销售
    • 数字化服务
    • 数字化营销
      • 营销
    • 数字化财务
    • 人力资源
    • 数字化法务
  • 企业架构 +
    • 企业安全架构
    • 企业架构框架
    • 方案架构
  • 企业业务架构
  • 企业技术架构
  • 企业应用架构
  • 企业数据架构
  • 数据应用架构 +
    • 主数据架构
    • 大数据架构
    • 数据仓库架构
    • 数据保护
    • 数据库架构
    • 数据建模
    • 数据枢纽架构
    • 数据湖架构
    • 数据编制架构
    • 数据网格架构
    • 数据虚拟化架构
  • 集成架构 +
  • 架构质量 +
  • 软件架构 +
  • 大数据架构 +
    • Hadoop 生态
    • Saprk生态
    • 大数据战略
  • 数据和分析 +
    • 机器学习
    • 数据分析
    • 数据可视化
    • 数据工程
    • 数据战略
    • 数据挖掘
    • 数据科学
    • 商务智能
  • 数据库架构 +
    • MySql架构
    • PostgreSql架构
    • 云数据库
    • 内存数据库
    • 列式数据库
    • 图形数据库
    • 搜索引擎
    • 文档数据库
  • 数据治理
  • 数据管理 +
    • 数据仓库
    • 数据湖
  • 企业合规管理
  • 企业治理 +
  • 企业风险管理
  • 隐私保护
  • 智能转型 +
  • 云计算 +
    • AWS 平台
    • SaaS云
    • Salesforce
    • 云原生
    • 云架构
    • 云治理
    • 云转型战略
    • 容器云
    • 微软云
    • 私有云
  • 人工智能 +
  • 生成式人工智能 +
    • 多模态模型
    • 大视觉模型
    • 大语言模型
    • 大音频模型
  • 万物互联 +
    • 工业控制系统
    • 工业物联网
    • 物联网(IoT)安全
    • 物联网(IoT)架构
    • 物联网战略
    • 边缘计算
  • 元宇宙
  • 区块链 +
  • 安全 +
    • 云安全
    • 安全工具
    • 安全战略
    • 安全运营
    • 应用安全
    • 数据安全
    • 终端安全
    • 网络安全
    • 隐私保护
  • 基础设施 +
  • 软件开发 +
    • 开发管理
    • 需求分析
    • 低代码开发
  • 软件测试 +
  • 软件设计
  • DevOps +
  • 敏捷
  • 项目 +
  • 平台和工具 +
    • DevOps工具
    • 云计算平台
    • 企业事件枢纽
    • 其他工具
    • 分布式平台
    • 大数据平台
    • 应用中间件
    • 开发工具
    • 数据工具
    • 集成平台
  • 语言和框架 +
    • Go语言
    • Javascript开发
    • Java开发
    • Python开发
    • Rust语言
    • TypeScript开发
    • 前端技术和框架
    • 算法和数据结构
  • 硬件和设备 +
  • 产品 +
    • 产品管理
    • 产品设计
  • 技术 +
    • 技术趋势
    • 技术选型
  • 用户体验 +
  • IT管理 +
  • 商业 +
    • 商业模型
    • 商业管理
    • 商业结构
    • 商业计划
    • 商务沟通
    • 创业
      • 创业管理
    • 国际商务
    • 经济
  • 战略 +
  • 管理 +
  • 解决方案
  • 关注
  • 社区
  • 职业
  • 职业和职位 +
  • 咨询服务
  • 微软专栏

【MLOps】使用Azure网络安全保护MLOps解决方案

  1. 首页 ⟶
  2. 【MLOps】使用Azure网络安全保护MLOps解决方案
Chinese, Simplified
SEO Title
Secure MLOps solutions with Azure network security

category

  • 数据和分析

机器学习DevOps(MLOps)在2015年的《机器学习系统中的隐藏技术债务》中首次被强调,目前正在快速增长。MLOps的市场预计到2025年将达到40亿美元。与此同时,确保MLOps解决方案的安全变得越来越重要。

本文描述了如何通过使用Azure网络安全功能(如Azure虚拟网络、网络对等、Azure私有链接和Azure DNS)来帮助保护MLOps解决方案。它还介绍了如何使用:

  • 访问虚拟网络中资源的Azure管道
  • 虚拟网络中Azure容器注册表和Azure机器学习计算实例和集群的必需配置。


最后,本文描述了使用网络安全服务的成本。

架构


MLOps过程中各个阶段的示意图,从准备数据到监控模型。

下载此体系结构的Visio文件。

数据流


体系结构图显示了一个示例MLOps解决方案。

  • 名为AML VNET的虚拟网络有助于保护Azure机器学习工作区及其相关资源。
  • 跳转主机Azure Bastion和自托管代理属于另一个名为Bastion VNET的虚拟网络。这种安排模拟了拥有另一个需要访问Azure机器学习虚拟网络内资源的解决方案。
  • 在虚拟网络对等和专用DNS区域的支持下,Azure管道可以在自主机代理上执行,并触发在Azure机器学习工作区中发布的Azure机器学习管道,以训练、评估和注册机器学习模型。
  • 最后,将该模型部署到Azure机器学习计算或Azure Kubernetes服务集群支持的在线端点或批处理端点。

组件


示例MLOps解决方案由以下组件组成:

  • 数据存储:用于数据存储的Azure Blob存储。
  • 模型培训、验证和注册:Azure机器学习工作区
  • 模型部署:Azure机器学习端点和Azure Kubernetes服务
  • 模型监视器:Azure monitor for Application Insights
  • MLOps管道:Azure DevOps和Azure管道
     

此示例场景还使用以下服务来帮助保护MLOps解决方案:

  • Azure密钥保管库
  • Azure策略
  • 虚拟网络


场景详细信息


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上的新API平台是什么。
  • 数据加密
    • 使用平台管理或客户管理的访问密钥,对传输中和休息中的培训数据进行加密。
  • 政策和监控
    • 使用Azure Policy和Microsoft Defender for Cloud来强制执行策略。
    • 使用Azure Monitor将来自各种来源的数据(如指标和日志)收集并聚合到一个通用数据平台中,用于分析、可视化和警报。

Azure机器学习工作区是Azure机器学习的顶级资源,也是MLOps解决方案的核心组件。工作区提供了一个集中的地方来处理您在使用Azure机器学习时创建的所有工件。

创建新工作区时,它会自动创建工作区使用的以下Azure资源:

  • Azure应用程序见解
  • Azure容器注册表
  • Azure密钥保管库
  • Azure存储帐户


潜在用例


该解决方案适用于客户使用MLOps解决方案在更安全的环境中部署和维护机器学习模型的场景。客户可以来自各个行业,如制造业、电信、零售、医疗保健等。例如:

  • 电信运营商在其零售店视频监控系统中帮助保护客户的图片、数据和机器学习模型。
  • 发动机制造商需要一个更安全的解决方案来帮助保护其工厂和产品的数据和机器学习模型,用于其使用计算机视觉检测零件缺陷的系统。
  • 这些场景和其他场景的MLOps解决方案可能使用Azure机器学习工作区、Azure Blob存储、Azure Kubernetes服务、容器注册表和其他Azure服务。
  • 您可以将此示例的全部或部分用于任何类似的场景,该场景具有部署在Azure上的MLOps环境,并使用Azure安全功能来帮助保护相关资源。此解决方案的原始客户是电信行业。

注意事项


这些注意事项实现了Azure架构良好的框架的支柱,这是一套指导原则,可在应用时提高工作负载的质量。有关详细信息,请参阅Microsoft Azure架构良好的框架。

安全

  • 安全性为防止蓄意攻击和滥用您的宝贵数据和系统提供了更多保证。有关更多信息,请参阅安全支柱概述。
  • 从架构设计开始,考虑如何帮助保护MLOps解决方案。开发环境可能不需要显著的安全性,但它在阶段和生产环境中很重要。

成本优化


成本优化是指寻找减少不必要费用和提高运营效率的方法。有关更多信息,请参阅成本优化支柱概述。

配置虚拟网络是免费的,但您的场景可能需要的其他服务也会收费,如专用链接、DNS区域和虚拟网络对等。下表介绍了这些服务和其他可能需要的服务的收费。

Azure Service Pricing
Virtual Network Free of charge.
Private Link Pay only for private endpoint resource hours and the data that is processed through your private endpoint.
Azure DNS, private zone Billing is based on the number of DNS zones that are hosted in Azure and the number of DNS queries that are received.
Virtual Network peering Inbound and outbound traffic is charged at both ends of the peered networks.
VPN Gateway Charges are based on the amount of time that the gateway is provisioned and available.
ExpressRoute Charges are for ExpressRoute and ExpressRoute Gateways.
Azure Bastion Billing involves a combination of hourly pricing that is based on SKU, scale units, and data transfer rates.

卓越运营


卓越运营涵盖了部署应用程序并使其在生产中运行的运营过程。有关更多信息,请参阅卓越运营支柱概述。

为了简化持续集成和持续交付(CI/CD),最佳实践是使用基础设施的工具和服务作为代码(IaC),如Terraform或Azure资源管理器模板、Azure DevOps和Azure管道。

部署此场景


以下部分描述了如何在此示例场景中部署、访问和帮助保护资源。

虚拟网络


帮助保护MLOps环境的第一步是帮助保护Azure机器学习工作区及其相关资源。一种有效的保护方法是使用虚拟网络。虚拟网络是Azure中私有网络的基本构建块。虚拟网络使许多类型的Azure资源能够更安全地相互通信、互联网和本地网络。

将Azure机器学习工作区及其相关资源放入虚拟网络有助于确保组件可以在不将其暴露于公共互联网的情况下相互通信。这样做可以减少他们的攻击面,并有助于防止数据泄露。

以下Terraform片段显示了如何为Azure机器学习创建计算集群,将其连接到工作区,并将其放入虚拟网络的子网。

Terraform

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"
 }
}


专用链接和Azure专用端点


私有链接允许通过虚拟网络中的私有端点访问Azure平台即服务(PaaS)选项,如Azure机器学习工作区和Azure存储,以及Azure托管的客户所有和合作伙伴所有的服务。专用端点是一种仅连接到特定资源的网络接口,从而有助于防止数据泄露。

在这个示例场景中,有四个专用端点与Azure PaaS选项绑定,并由Azure机器学习虚拟网络中的子网管理,如架构图所示。因此,这些服务只能访问同一虚拟网络Azure Machine Learning虚拟网络中的资源。这些服务是:

  • Azure机器学习工作区
  • Azure Blob存储
  • Azure容器注册表
  • Azure密钥保管库


以下Terraform片段显示了如何使用专用端点链接到Azure机器学习工作区,因此该工作区更受虚拟网络的保护。该片段还显示了专用DNS区域的使用,该区域在Azure专用DNS区域中进行了描述。

Terraform

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平台。如果您仍然希望使用v1neneneba API或公司策略禁止通过公共网络发送通信,则可以启用v1_legacy_mode_enabled参数,如以下代码片段所示。启用时,此参数将禁用工作区的v2 API。

Terraform

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

Azure专用DNS区域


Azure DNS提供了一种可靠、更安全的DNS服务,无需添加自定义DNS解决方案即可在虚拟网络中管理和解析域名。通过使用专用DNS区域,您可以使用自定义域名,而不是Azure提供的名称。针对专用DNS区域的DNS解析只能通过链接到该区域的虚拟网络进行。

此示例解决方案为Azure机器学习工作区及其相关资源(如Azure存储、Azure密钥库或容器注册表)使用专用端点。因此,您必须配置DNS设置,以便从连接字符串的完全限定域名(FQDN)解析专用终结点的IP地址。

您可以将专用DNS区域链接到虚拟网络以解析特定域。

Private Link和Azure Private Endpoint中的Terraform片段通过使用Azure服务DNS区域配置中推荐的区域名称创建两个专用DNS区域:

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

虚拟网络对等


虚拟网络对等允许Azure Bastion虚拟网络中的跳转主机虚拟机(VM)或自托管代理虚拟机访问Azure machine Learning虚拟网络的资源。出于连接目的,这两个虚拟网络可作为一个网络工作。对等虚拟网络中虚拟机和Azure机器学习资源之间的流量使用Azure骨干基础设施。虚拟网络之间的流量通过Azure专用网络进行路由。

以下Terraform片段设置了Azure机器学习虚拟网络和Azure堡垒虚拟网络之间的虚拟网络对等。

Terraform

# 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 Machine Learning虚拟网络,请使用以下方法之一:

  • Azure VPN网关
  • Azure ExpressRoute
  • Azure堡垒和跳转主机VM


有关详细信息,请参见连接到工作空间。

运行访问虚拟网络中资源的Azure管道


Azure Pipelines自动构建和测试代码项目,使其可供他人使用。Azure Pipelines结合CI/CD来测试和构建您的代码,并将其运送到任何目标。

Azure托管代理与自托管代理


此示例场景中的MLOps解决方案由两个管道组成,它们可以触发Azure机器学习管道并访问相关资源。由于Azure机器学习工作区及其相关资源位于虚拟网络中,因此此场景必须为Azure管道代理提供访问它们的方法。代理是指安装了代理软件的计算基础设施,该软件一次运行一个Azure管道的作业。有多种方法可以实现访问:

  • 在同一虚拟网络或对等虚拟网络中使用自托管代理,如体系结构图所示。
  • 使用Azure托管代理,并将其IP地址范围添加到目标Azure服务的防火墙设置中的允许列表中。
  • 使用Azure托管代理(作为VPN客户端)和VPN网关。

这些选择各有利弊。下表将Azure托管代理与自托管代理进行了比较。

Azure-hosted Agent Self-hosted Agent
Cost Start free for one parallel job with 1,800 minutes per month and a charge for each Azure-hosted CI/CD parallel job.
Maintenance Taken care of for you by Microsoft.
Build Time More time consuming because it completely refreshes every time you start a build, and you always build from scratch.


笔记

有关当前定价,请参阅Azure DevOps的定价。

基于表中的比较以及安全性和复杂性的考虑,此示例场景使用Azure管道的自托管代理来触发虚拟网络中的Azure机器学习管道。

要配置自托管代理,您有以下选项:

  • 在Azure虚拟机上安装代理。
  • 在Azure虚拟机扩展集上安装代理,该扩展集可以自动扩展以满足需求。
  • 在Docker容器上安装代理。这个选项是不可行的,因为这个场景可能需要在代理中运行Docker容器来进行机器学习模型训练。

以下示例代码通过创建Azure虚拟机和扩展来提供两个自托管代理:

Terraform

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,如下面的代码块中所示,以根据客户的要求在代理VM上安装代理软件和所需的库。

Bash

#!/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


在虚拟网络中使用容器注册表


在虚拟网络中保护Azure机器学习工作区有一些先决条件。有关详细信息,请参阅先决条件。当您使用Azure机器学习工作区来训练和部署模型时,容器注册是必需的服务。

在这个示例场景中,为了确保自托管代理可以访问虚拟网络中的容器注册表,我们使用虚拟网络对等,并添加一个虚拟网络链接,将私有DNS区域privatelink.azurecr.io链接到Azure Bastion虚拟网络。以下Terraform片段显示了实现。

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维护。它最初是由以下贡献者撰写的。

主要作者:

Gary Wang |首席软件工程师
其他贡献者:

Gary Moore |程序员/作家
要查看非公开的领英个人资料,请登录领英。

接下来的步骤


  • Terraform on Azure documentation
  • Azure Machine Learning Enterprise Terraform Examples
  • Azure MLOps (v2) solution accelerator
  • Azure Virtual Network pricing
  • Pricing for Azure DevOps

Related resources

  • Machine learning operations (MLOps) framework to upscale machine learning lifecycle with Azure Machine Learning
  • Secure an Azure Machine Learning workspace with virtual networks
  • Azure Pipelines agents
 
 

本文地址
https://architect.pub
  • 登录 发表评论
  • 18 次浏览
发布日期
星期四, 七月 4, 2024 - 21:23
最后修改
星期四, 七月 4, 2024 - 21:23

Tags

  • MLOps
  • Azure network security
  • 机器学习
  • 数据分析
  • Azure
Article
Read more

最新内容

  • 【UI开发】为AI应用程序构建UI的3个最佳Python框架
    6 days 11 hours ago
  • 【前端开发】🚀🔥 改变编码方式的10个前端开发AI助手
    1 week ago
  • 【前端开发】生成式AI革新前端开发:传统开发模式的颠覆
    1 week ago
  • 【CNN架构】解释不同类型的CNN架构:示例
    1 week ago
  • 【信息设计】设计模式指南:学习指南
    1 week ago
  • 【设计思维】什么是设计思维?
    1 week ago
  • 【Gen UI】生成式用户界面与结果导向设计的范式革命​
    4 weeks 2 days ago
  • 测试Bolt.new:开发者亲测AI应用构建工具​
    4 weeks 2 days ago
  • 生成式用户界面(Gen UI)是什么?它重要吗?
    4 weeks 2 days ago
  • Pedersen承诺
    1 month ago

网站备案号:京ICP备2022026098号-2

友情链接

  • CPO宝典
  • 全球IT瞭望
  • 开发者开聊
  • 智能化转型智库
  • 架构师研究会

知识星球

知识星球:首席架构师圈

 

抖音直播

抖音:cea_cio(超级架构师)
干货直播,干货分享

 

微信小号

超级架构师
超级架构师小号:加群,私聊

 

微信公众号

超级架构师公众号

 

QQ群:超级架构师

QQ Group

Tags

Tags

  • MLOps
  • Azure network security
  • 机器学习
  • 数据分析
  • Azure
© 2025 架构师研究会, All rights reserved.
↑