本文介绍如何创建并连接到安全的Azure Machine Learning工作区。 本文中的步骤使用Azure Virtual Network围绕Azure Machine Learning使用的资源创建安全边界。
重要
使用Azure Machine Learning托管虚拟网络,而不是Azure虚拟网络。 有关本教程使用的托管虚拟网络版本,请参阅教程:使用托管虚拟网络创建安全工作区。
在本教程中,你将完成以下任务:
- 创建Azure Virtual Network(VNet)来保护虚拟网络中服务之间的通信。
- 在 VNet 后面创建Azure Storage帐户(blob 和文件)。 将此服务用作工作区的默认存储。
- 在 VNet 后面创建Azure Key Vault。 使用此服务来存储工作区使用的机密,例如访问存储帐户所需的安全信息。
- 创建Azure Container Registry(ACR)。 将此服务用作 Docker 映像的存储库。 Docker 映像提供训练机器学习模型或将训练的模型部署为终结点时所需的计算环境。
- 创建Azure Machine Learning工作区。
- 创建跳转盒。 跳板机是 Azure 虚拟网络(VNet)后面的虚拟机。 由于 VNet 限制从公共 Internet 进行访问,因此使用跳转框作为连接到 VNet 后面的资源的一种方式。
- 配置Azure Machine Learning studio以在 VNet 后面工作。 工作室提供用于Azure Machine Learning的 Web 界面。
- 创建Azure Machine Learning计算群集。 在云中训练机器学习模型时使用计算群集。 在Azure Container Registry位于 VNet 后面的配置中,它还会生成 Docker 映像。
- 连接到跳转框并使用Azure Machine Learning studio。
提示
有关如何创建安全工作区的模板,请参阅 Bicep 模板或 Terraform 模板。
完成本教程后,你具有以下体系结构:
- 一个Azure Virtual Network,其中包含三个子网:
- Training:包含用于训练模型的Azure Machine Learning工作区、依赖项服务和资源。
- 评分:在本教程的步骤中,评分不会被使用。 但是,如果继续使用此工作区进行其他教程,请在将模型部署到 终结点时使用此子网。
- AzureBastionSubnet:Azure Bastion服务用来安全地将客户端连接到Azure Virtual Machines。
- 使用专用终结点通过虚拟网络进行通信的Azure Machine Learning工作区。
- 使用专用终结点的 Azure 存储帐户允许存储服务(如 Blob 和文件)通过虚拟网络进行通信。
- 使用专用终结点通过虚拟网络进行通信的 Azure 容器注册表。
- 借助 Azure Bastion,可使用浏览器安全地与虚拟网络内的跳板机 VM 通信。
- Azure虚拟机,可以远程连接到虚拟网络中保护的资源并访问这些资源。
- Azure Machine Learning计算实例和计算群集。
提示
关系图中列出的Azure Batch服务是计算群集和计算实例所需的后端服务。
先决条件
- 熟悉Azure虚拟网络和 IP 网络。 如果不熟悉,请尝试 计算机网络模块的基础知识 。
- 虽然本文中的大多数步骤都使用 Azure 门户或Azure Machine Learning studio,但某些步骤使用 Machine Learning v2 的 Azure CLI 扩展。
创建虚拟网络
若要创建虚拟网络,请执行以下步骤:
在 Azure 门户中,选择左上角的门户菜单。 从菜单中选择“+ 创建资源,然后在搜索字段中输入Virtual Network。 选择 Virtual Network 条目,然后选择 Create。
在 Basics 选项卡中,选择要用于此资源的 Azure 订阅,然后选择或创建新的 资源组。 在“实例详细信息”下,为虚拟网络输入一个易记名称,并选择要在其中创建该网络的区域 。
选择“安全”。 选择“启用 Azure Bastion”。 Azure Bastion提供了一种安全的方式,用于访问在虚拟网络中创建的 VM 跳转框(稍后的步骤)。 对于剩余字段,请使用以下值:
- Bastion 名称:此 Bastion 实例的唯一名称
- 公共 IP 地址:创建新的公共 IP 地址。
将其他字段保留默认值。
选择“IP 地址”。 默认设置应类似于下图:
使用以下步骤配置 IP 地址并配置子网以对资源进行训练和评分:
提示
虽然可以对所有Azure Machine Learning资源使用单个子网,但本文中的步骤演示如何创建两个子网来分隔训练和评分资源。
工作区和其他依赖服务进入训练子网。 资源也可以在其他子网中使用它们,例如评分子网。
查看默认的“IPv4 地址空间”值。 在屏幕截图中,此值为 172.16.0.0/16。 对于您来说,该值可能有所不同。 你可以使用不同的值,但本教程中的剩余步骤都基于值 172.16.0.0/16 进行。
警告
不要对虚拟网络使用 172.17.0.0/16 IP 地址范围。 此范围是 Docker 网桥网络使用的默认子网范围,如果将其用于虚拟网络,则会导致错误。 其他范围可能也会根据要连接到虚拟网络的内容而发生冲突。 例如,如果您计划将本地网络连接到虚拟网络,并且您的本地网络也使用 172.16.0.0/16 范围。 最终,需要规划网络基础结构。
选择默认子网,然后选择编辑图标。
将子网名称更改为 Training。 将其他值保留为默认设置,然后选择“ 保存” 以保存更改。
若要为用于对模型进行评分的计算资源创建子网,请选择“+ 添加子网”,并设置名称和地址范围:
- 子网名称:评分
- 起始地址:172.16.2.0
- 子网大小:/24(256 个地址)
选择“添加”以添加子网。
选择“查看 + 创建”。
确认信息无误,然后选择“创建”。
创建存储帐户
在 Azure 门户中,选择左上角的门户菜单。 从菜单中选择“+ 创建资源”,然后输入“存储帐户” 。 选择“存储帐户”条目,然后选择“创建” 。
在“基本信息”选项卡中,选择之前用于虚拟网络的“订阅”、“资源组”和“区域” 。 输入唯一的“存储帐户名称”,并将“冗余”设置为“本地冗余存储(LRS)” 。
在“网络”选项卡中,选择“禁用公共访问”,然后选择“+ 添加专用终结点”。
在“创建专用终结点”窗体中,使用以下值:
- Subscription:包含上述资源的同一Azure订阅。
- Resource group:包含上述资源的同一Azure资源组。
- Location:包含上述资源的相同Azure区域。
- 名称:此专用终结点的唯一名称。
- 目标子资源:blob
- 虚拟网络:前面已创建的虚拟网络。
- 子网:训练 (172.16.0.0/24)
- Private DNS集成:是
- Private DNS 区域:privatelink.blob.core.chinacloudapi.cn
选择“添加”以创建专用终结点。
选择“查看 + 创建”。 确认信息无误,然后选择“创建”。
创建存储帐户后,选择“转到资源
”
从左侧导航中选择“ 网络”。 选择 “专用终结点连接 ”选项卡,然后选择“ + 专用终结点:
注意
在前面的步骤中为 Blob 存储创建一个专用终结点时,还必须为文件存储创建一个专用终结点。
在
“创建专用终结点”窗体上,使用与以前资源相同的 订阅 、资源组 和区域 。 输入唯一名称。
选择“下一步:资源”,然后将“目标子资源”设置为“文件”。
选择 Next: Virtual Network,然后使用以下值:
- 虚拟网络:前面创建的虚拟网络
- 子网:训练
继续浏览选择默认值的选项卡,直到看到“查看 + 创建”。 确认信息无误,然后选择“创建”。
提示
如果计划使用 batch 终结点或使用 ParallelRunStep 的 Azure Machine Learning 管道, 还需要配置面向 queue 和 table 子资源的专用终结点。
ParallelRunStep 内部使用队列和表进行任务计划和调度。
创建密钥库
在 Azure 门户中,选择左上角的门户菜单。 从菜单中选择+ 创建资源,然后输入 Key Vault。 选择 Key Vault 条目,然后选择 Create。
在“基本信息”选项卡中,选择之前用于虚拟网络的“订阅”、“资源组”和“区域” 。 输入唯一的密钥保管库名称。 将其他字段保留默认值。
在“网络”选项卡中,取消选择“启用公共访问”,然后选择“+ 创建专用终结点”。
在“创建专用终结点”窗体中,使用以下值:
- Subscription:包含上述资源的同一Azure订阅。
- Resource group:包含上述资源的同一Azure资源组。
- Location:包含上述资源的相同Azure区域。
- 名称:此专用终结点的唯一名称。
- 目标子资源:保管库
- 虚拟网络:前面已创建的虚拟网络。
- 子网:训练 (172.16.0.0/24)
- 启用私有 DNS 集成:已启用
- Private DNS 区域:选择包含虚拟网络和密钥保管库的资源组。
选择“添加”以创建专用终结点。
选择“查看 + 创建”。 确认信息无误,然后选择“创建”。
创建密钥保管库后,选择“ 转到资源”。
从左侧导航中选择“ 网络”。 在防火墙和虚拟网络选项卡上,选中允许受信任的 Microsoft 服务绕过此防火墙的复选框,然后选择应用。
创建容器注册表
在 Azure 门户中,选择左上角的门户菜单。 从菜单中选择“+ 创建资源”,然后输入“容器注册表” 。 选择“容器注册表”条目,然后选择“创建” 。
在“基本信息”选项卡中,选择之前用于虚拟网络的“订阅”、“资源组”和“位置” 。 输入唯一的注册表名称,并将SKU设置为高级。
在“网络”选项卡中,选择“专用终结点”,然后选择“+ 添加” 。
在“创建专用终结点”窗体中,使用以下值:
- Subscription:包含上述资源的同一Azure订阅。
- Resource group:包含上述资源的同一Azure资源组。
- Location:包含上述资源的相同Azure区域。
- 名称:此专用终结点的唯一名称。
- 目标子资源:注册表
- 虚拟网络:前面已创建的虚拟网络。
- 子网:训练 (172.16.0.0/24)
- Private DNS集成:是
- 资源组:选择包含虚拟网络和容器注册表的资源组。
选择“添加”以创建专用终结点。
选择“查看 + 创建”。 确认信息无误,然后选择“创建”。
创建容器注册表后,选择“转到资源”。
在页面左侧,选择“访问密钥”,然后启用“管理员用户” 。 在虚拟网络中使用Azure Container Registry和Azure Machine Learning时,需要此设置。
创建工作区
在 Azure 门户中,选择左上角的门户菜单。 从菜单中选择+ 创建资源,然后输入 Machine Learning。 选择 Machine Learning 条目,然后选择 Create。
在“基本信息”选项卡中,选择之前用于虚拟网络的“订阅”、“资源组”和“区域” 。 对其他字段使用以下值:
- 名称:你的工作区的唯一名称。
- 存储帐户:选择前面创建的存储帐户。
- 密钥保管库:选择前面创建的密钥保管库。
- 应用程序见解:使用默认值。
- 容器注册表:使用前面创建的容器注册表。
在“网络”选项卡中,选择“Internet 出站专用”。 在“工作区入站访问”部分中,选择“+ 添加”。
在“创建专用终结点”窗体中,使用以下值:
- Subscription:包含上述资源的同一Azure订阅。
- Resource group:包含上述资源的同一Azure资源组。
- Location:包含上述资源的相同Azure区域。
- 名称:此专用终结点的唯一名称。
- 目标子资源:amlworkspace
- 虚拟网络:前面已创建的虚拟网络。
- 子网:训练 (172.16.0.0/24)
- Private DNS集成:是
- Private DNS 区域:将两个private DNS区域保留为默认值 privatelink.api.azureml.ms 和 privatelink.notebooks.chinacloudapi.cn。
选择“确定”以创建专用终结点。
从“工作区出站访问”部分的“网络”选项卡中,选择“使用我自己的虚拟网络”。
选择“查看 + 创建”。 确认信息无误,然后选择“创建”。
创建工作区后,选择“转到资源”。
在左侧的“设置”部分中,依次选择“网络”、“专用终结点连接”,然后选择“专用终结点”列中的链接:
在专用终结点信息出现后,从页面左侧选择“DNS 配置”。 保存此页上的 IP 地址和完全限定的域名 (FQDN) 信息。
重要
在可以完全使用工作区之前,还需要执行一些配置步骤。 但是,这些步骤要求你连接到工作区。
启用工作室
Azure Machine Learning studio是用于管理工作区的基于 Web 的应用程序。 但是,它需要一些额外的配置,然后才能将其与在虚拟网络中保护的资源一起使用。 使用以下步骤启用工作室:
使用具有专用终结点的 Azure Storage 帐户时,应将工作区的服务主体添加为存储专用终结点的 Reader。 在 Azure 门户中,选择存储帐户,然后选择 Networking。 接着,选择私有终结点连接。
对于列出的每个专用终结点,请使用以下步骤:
选择“专用终结点”列中的链接。
在左侧选择“访问控制(IAM)”。
选择“+ 添加”,然后选择“添加角色分配”(预览版)。
在“角色”选项卡上,选择“读者”角色。
在“成员”选项卡上,在“将访问权限分配到”区域中选择“用户、组或服务主体”,然后选择“+ 选择成员” 。 在 选择成员 对话框中,输入您的 Azure 机器学习工作区的名称。 为工作区选择服务主体,然后使用“选择”按钮。
在“查看 + 分配”选项卡上,选择“查看 + 分配”,以分配角色 。
保护 Azure Monitor 和 Application Insights
注意
有关保护Azure Monitor和 Application Insights 的详细信息,请参阅以下文章:
在 Azure 门户中,选择 Home,然后搜索 Private link。 选择 Azure Monitor Private Link Scope 结果,然后选择 Create。
在 Basics 选项卡中, 选择与Azure Machine Learning工作区相同的 Subscription、Resource Group 和 resource 组区域。 输入实例的“名称”,然后选择“查看 + 创建”。 若要创建实例,请选择“创建”。
创建Azure Monitor Private Link范围实例后,在Azure门户中选择该实例。 在 Configure 部分中,选择 Azure Monitor Resources 然后选择 + Add。
从选择范围中,使用筛选器为 Azure Machine Learning 工作区选择合适的 Application Insights 实例。 选择“应用”以添加实例。
在“配置”部分中,选择“专用终结点连接”,然后选择“+ 专用终结点”。
选择与包含您的虚拟网络的订阅、资源组和区域相同的订阅、资源组和区域。 请选择下一步:资源。
选择
Microsoft.insights/privateLinkScopes作为 Resource 类型。 选择前面创建的 Private Link 作用域作为 Resource。 选择azuremonitor作为“目标子资源”。 选择 Next: Virtual Network继续。
选择之前创建的“虚拟网络”和“训练”子网。 选择“下一步”,直至到达“查看 + 创建”。 选择“创建”以创建专用终结点。
创建专用终结点后,返回到门户中的 Azure Monitor Private Link Scope 资源。 在“配置”部分中,选择“访问模式”。 仅针对引入访问模式和查询访问模式选择“专用”,然后选择“保存”。
连接到工作区
可以通过多种方式连接到受保护的工作区。 本文中的步骤使用的是跳转盒,它是虚拟网络中的虚拟机。 可以使用 Web 浏览器和Azure Bastion连接到它。 下表列出了可以连接到安全工作区的其他几种方法:
| 方法 | 说明 |
|---|---|
| Azure VPN 网关 | 通过专用连接将本地网络连接到虚拟网络。 通过公共 Internet 建立连接。 |
| ExpressRoute | 通过专用连接将本地网络连接到云。 连接是通过连接提供商建立的。 |
重要
使用 VPN 网关 或 ExpressRoute 时,需要规划本地资源与虚拟网络中的名称解析的工作原理。 有关详细信息,请参阅使用自定义 DNS 服务器。
创建跳转盒 (VM)
使用以下步骤创建Azure虚拟机以用作跳转框。 通过使用 Azure Bastion,可以通过浏览器连接到 VM 桌面。 在 VM 桌面中,可以使用 VM 上的浏览器连接到虚拟网络中的资源,例如Azure Machine Learning studio。 或者,可以在 VM 上安装开发工具。
提示
以下步骤创建Windows 11企业 VM。 根据要求,可能需要选择不同的 VM 映像。 Windows 11(或10)企业版镜像在需要将虚拟机加入组织的域时非常有用。
在 Azure 门户中,选择左上角的门户菜单。 从菜单中选择“+ 创建资源”,然后输入“虚拟机”。 选择“虚拟机”条目,然后选择“创建”。
在“基本信息”选项卡中,选择之前用于虚拟网络的“订阅”、“资源组”和“区域” 。 提供以下字段的值:
虚拟机名称:VM 的唯一名称。
用户名:将用于登录 VM 的用户名。
密码:用户名的密码。
安全类型:标准。
Image:Windows 11 Enterprise。
提示
如果Windows 11 Enterprise 不在映像选择列表中,请使用 查看所有映像。 从 Microsoft 中找到 Windows 11 条目,并使用 Select 下拉列表选择企业映像。
可将其他字段保留为默认值。
选择“网络”,然后选择前面创建的“虚拟网络” 。 使用以下信息来设置剩余字段:
- 选择训练子网。
- 将“公共 IP”设置为“无” 。
- 将其他字段保留默认值。
选择“查看 + 创建”。 确认信息无误,然后选择“创建”。
连接到跳转盒
创建虚拟机后,选择“ 转到资源”。
在页面顶部,选择“连接”,然后选择“通过 Bastion 连接”。
提示
Azure Bastion使用端口 443 进行入站通信。 如果有限制出站流量的防火墙,请确保它允许端口 443 上的流量发到Azure Bastion服务。 有关详细信息,请参阅 使用 NSG 和 Azure Bastion。
输入虚拟机的身份验证信息。 在浏览器中建立连接。
创建计算群集和实例
计算实例在附加到工作区的共享计算资源上提供Jupyter Notebook体验。
在与跳转框的Azure Bastion连接中,打开远程桌面上的 Microsoft Edge 浏览器。
在远程浏览器会话中,转到 https://studio.ml.azure.cn。 出现提示时,请使用Microsoft Entra帐户进行身份验证。
从 Welcome 到 studio! 屏幕,选择之前创建的 Machine Learning 工作区,然后选择 Get started。
提示
如果 Microsoft Entra 帐户有权访问多个目录或订阅,请使用 目录和订阅 下拉菜单选择包含工作区的项目。
在工作室中,选择 “计算”、“ 计算群集”,然后选择“ + 新建”。
在“虚拟机”对话框中,选择“ 下一步 ”接受默认虚拟机配置。
在“配置设置”对话框中,输入
cpu-cluster为“计算名称”。 将子网Training设置为“创建”,然后选择“ 创建 ”以创建群集。提示
计算群集会根据需要动态缩放群集中的节点。 将最小节点数保留为 0,以在群集未使用时降低成本。
在工作室中,依次选择“计算”、“计算实例”和“+ 新建” 。
从“必要设置”中,输入唯一的“计算机名称”,然后选择“下一步”。
继续选择“下一步”,直到出现“安全”对话框,选择“虚拟网络”并将“子网”设置为“Training”。 选择“查看 + 创建”,然后选择“创建”。
提示
创建计算群集或计算实例时,Azure Machine Learning动态添加网络安全组(NSG)。 此 NSG 包含以下特定于计算群集和计算实例的规则:
- 允许
BatchNodeManagement服务标记中端口 29876-29877 上的入站 TCP 流量。 - 允许来自
AzureMachineLearning服务标记的 TCP 入站流量通过端口 44224。
下面的屏幕截图展示了这些规则的示例:
有关创建计算群集和计算实例的详细信息,包括如何使用 Python 和 CLI 执行此操作,请参阅以下文章:
配置镜像生成
当Azure Container Registry位于虚拟网络后面时,Azure Machine Learning不能使用它直接生成 Docker 映像(用于训练和部署)。 相反,可以将工作区配置为使用前面创建的计算群集。 使用以下步骤来创建计算群集,并将工作区配置为使用它来生成映像:
打开 Azure Cli。
在 Azure Cli 中,使用以下命令安装 2.0 CLI for Azure Machine Learning:
az extension add -n ml更新工作区以使用计算群集生成 Docker 映像。 将
docs-ml-rg替换为你的资源组。 将docs-ml-ws替换为你的工作区。 将cpu-cluster替换为计算群集名称:az ml workspace update \ -n docs-ml-ws \ -g docs-ml-rg \ -i cpu-cluster注意
可以使用同一计算群集为工作区训练模型和生成 Docker 映像。
使用工作区
重要
本文中的步骤将Azure Container Registry放在虚拟网络后面。 在此配置中,无法将模型部署到虚拟网络内部Azure Container Instances。 请勿将Azure Container Instances用于虚拟网络中的Azure Machine Learning。 有关详细信息,请参阅保护推理环境 (SDK/CLI v1)。
作为Azure Container Instances的替代方法,请尝试Azure Machine Learning托管联机终结点。 有关详细信息,请参阅为托管联机终结点启用网络隔离。
此时,可以使用工作室以交互方式在计算实例上使用笔记本,并在计算群集上运行训练作业。 有关使用计算实例和计算群集的教程,请参阅 教程:一天内掌握Azure 机器学习。
停止计算实例和跳转盒
警告
在运行(已启动)时,计算实例和跳转框将继续对订阅收费。 为了避免超额费用,请在不使用时 将其停止。
创建计算群集时,它会在最小节点数和最大节点数之间动态扩展。 如果接受默认值,则最小值为 0,这会在不使用群集时有效关闭群集。
停止计算实例
在工作室中,选择计算、计算群集,然后选择计算实例。 最后,从页面顶部选择“停止”。
停止跳转盒
创建跳转框后,在 Azure 门户中选择虚拟机,然后使用 Stop 按钮。 当准备好再次使用它时,使用“启动”按钮来启动它。
还可以将跳转盒配置为在特定时间自动关闭。 若要执行此操作,请依次选择“自动关闭”、“启用”,设置一个时间,然后选择“保存” 。
清理资源
如果计划继续使用受保护的工作区和其他资源,请跳过本部分。
若要删除本教程中创建的所有资源,请执行以下步骤:
在Azure门户中,选择最左侧的资源组。
从列表中选择你在本教程中创建的资源组。
选择“删除资源组”。
输入资源组名称,然后选择“ 删除”。
后续步骤
设置安全工作区和访问工作室后,了解如何 使用网络隔离将模型部署到联机终结点。
设置安全工作区后,了解如何 部署模型。
