使用虚拟网络 (SDK/CLI v1) 保护 Azure 机器学习工作区资源

适用于:Python SDK azureml v1

适用于:Azure CLI ml 扩展 v1

使用虚拟网络 (VNet) 保护 Azure 机器学习工作区资源和计算环境。 本文使用一个示例方案来说明如何配置完整的虚拟网络。

提示

本文是介绍如何保护 Azure 机器学习工作流系列文章的一部分。 请参阅本系列中的其他文章:

有关创建安全工作区的教程,请参阅教程:创建安全工作区教程:使用模板创建安全工作区

先决条件

本文假定你已熟悉以下主题:

示例方案

本部分将介绍如何设置一个常见的网络方案来确保 Azure 机器学习与专用 IP 地址的通信安全。

下表比较了在使用 VNet 和不使用 VNet 的情况下服务如何访问 Azure 机器学习网络的不同部分:

场景 工作区 关联的资源 训练计算环境 推理计算环境
无虚拟网络 公共 IP 公共 IP 公共 IP 公共 IP
公共工作区,虚拟网络中的所有其他资源 公共 IP 公共 IP(服务终结点)
- 或 -
专用 IP(专用终结点)
公共 IP 专用 IP
确保虚拟网络中的资源安全 专用 IP(专用终结点) 公共 IP(服务终结点)
- 或 -
专用 IP(专用终结点)
专用 IP 专用 IP
  • 工作区 - 为你的工作区创建专用终结点。 专用终结点通过多个专用 IP 地址将工作区连接到 VNet。
    • 公共访问 - 可以选择为受保护的工作区启用公共访问。
  • 关联的资源 - 使用服务终结点或专用终结点连接到工作区资源,如 Azure 存储、Azure Key Vault。 对于 Azure 容器服务,请使用专用终结点。
    • 服务终结点:为 Azure 服务提供虚拟网络的标识。 在虚拟网络中启用服务终结点后,可以添加虚拟网络规则,以在虚拟网络中保护 Azure 服务资源。 服务终结点使用公共 IP。
    • 专用终结点:是网络接口,可安全地连接到由 Azure 专用链接提供支持的服务。 专用终结点使用 VNet 中的专用 IP 地址将服务有效接入 VNet 中。
  • 训练计算访问 - 使用公共或专用 IP 地址访问训练计算目标,如 Azure 机器学习计算实例和 Azure 机器学习计算群集。
  • 推理计算访问 - 使用专用 IP 地址访问 Azure Kubernetes 服务 (AKS) 计算群集。

接下来的部分介绍如何保护上述网络环境。 若要确保网络安全,必须:

  1. 保护工作区和关联的资源
  2. 保护训练环境 (v1)
  3. 保护推理环境 (v1)
  4. 可选:启用工作室功能
  5. 配置防火墙设置
  6. 配置 DNS 名称解析

公共工作区和受保护的资源

如果要通过公共 Internet 访问工作区,同时在虚拟网络中保护所有关联的资源,请使用以下步骤:

  1. 创建一个 Azure 虚拟网络,其中将包含工作区使用的资源。

  2. 使用以下选项之一创建可公开访问的工作区:

  3. 使用服务终结点或专用终结点将以下服务添加到虚拟网络 。 还要允许受信任的 Azure 服务访问以下服务:

    服务 终结点信息 允许受信任的信息
    Azure Key Vault 服务终结点
    专用终结点
    允许受信任的 Azure 服务绕过此防火墙
    Azure 存储帐户 服务和专用终结点
    专用终结点
    授予对受信任的 Azure 服务的访问权限
    Azure 容器注册表 专用终结点 允许受信任的服务
  4. 在工作区的 Azure 存储帐户的属性中,将客户端 IP 地址添加到防火墙设置中的允许列表。 有关详细信息,请参阅配置防火墙和虚拟网络

保护工作区和关联的资源

使用以下步骤确保工作区和关联的资源安全。 这些步骤可使服务在虚拟网络中进行通信。

  1. 创建一个 Azure 虚拟网络,其中将包含工作区和其他资源。 然后创建启用了专用链接的工作区,以启用 VNet 与工作区之间的通信。

  2. 使用服务终结点或专用终结点将以下服务添加到虚拟网络 。 还要允许受信任的 Azure 服务访问以下服务:

    服务 终结点信息 允许受信任的信息
    Azure Key Vault 服务终结点
    专用终结点
    允许受信任的 Azure 服务绕过此防火墙
    Azure 存储帐户 服务和专用终结点
    专用终结点
    允许从 Azure 资源实例进行访问
    or
    授予对受信任的 Azure 服务的访问权限
    Azure 容器注册表 专用终结点 允许受信任的服务

显示工作区和关联资源如何在 VNet 中进行通信的示意图。

有关如何完成这些步骤的详细说明,请参阅确保 Azure 机器学习工作区安全

限制

确保工作区以及虚拟网络中关联的资源的安全具有以下限制:

  • 所有资源都必须位于同一个 VNet 中。 但允许使用同一 VNet 中的子网。

保护训练环境

此部分介绍如何保护 Azure 机器学习中的训练环境。 你还将了解 Azure 机器学习如何完成训练作业来了解网络配置协同工作的方法。

若要保护训练环境,请执行以下步骤:

  1. 在虚拟网络中创建 Azure 机器学习计算实例和计算机群集以运行训练作业。

  2. 如果计算群集或计算实例使用了公共 IP 地址,则必须允许入站通信,以便管理服务可以将作业提交到你的计算资源。

    提示

    可以使用或不使用公共 IP 地址来创建计算群集和计算实例。 如果创建时使用了公共 IP 地址,则会收到使用公共 IP 的负载均衡器,用于接受来自 Azure 批处理服务和 Azure 机器学习服务的入站访问。 如果使用防火墙,则需要配置用户定义的路由 (UDR)。 如果创建时没有公共 IP,则会收到专用链接服务,用于接受来自没有公共 IP 的 Azure 批处理服务和 Azure 机器学习服务的入站访问。

显示如何确保托管计算群集和实例安全的示意图。

有关如何完成这些步骤的详细说明,请参阅确保训练环境安全

训练作业提交示例

本部分介绍 Azure 机器学习如何安全地在服务之间进行通信,以提交训练作业。 此内容将展示所有配置如何协同工作以确保通信安全。

  1. 客户端将训练脚本和培训数据上传到使用服务或专用终结点保护的存储帐户。

  2. 客户端通过专用终结点将训练作业提交到 Azure 机器学习工作区。

  3. Azure Batch 服务从工作区接收作业。 然后,它通过计算资源的公共负载均衡器将训练作业提交到计算环境。

  4. 计算资源接收作业并开始训练。 计算资源使用密钥保管库中存储的信息访问存储帐户以下载训练文件和上传输出。

显示安全训练作业提交工作流的关系图。

限制

  • Azure 计算实例和 Azure 计算群集必须与工作区及其关联的资源位于同一 VNet、区域和订阅中。

保护推理环境 (v1)

适用于:Python SDK azureml v1

适用于:Azure CLI ml 扩展 v1

本部分介绍在使用适用于 ML v1 的 Azure CLI 扩展或 Azure 机器学习 Python SDK v1 时可用于保护推理环境安全的选项。 在进行 v1 部署时,建议使用 Azure Kubernetes 服务 (AKS) 群集进行大规模生产部署。

虚拟网络中的 AKS 群集有两个选项:

  • 将默认 AKS 群集部署或附加到 VNet。
  • 将专用 AKS 群集附加到 VNet。

默认 AKS 群集:具有一个带公共 IP 的控制平面。 可以在部署过程中将默认 AKS 群集添加到 VNet,也可以在创建群集后附加群集。

专用 AKS 群集:具有控制平面,只能通过专用 IP 对其进行访问。 创建群集后,必须附加专用 AKS 群集。

有关如何添加默认群集和专用群集的详细说明,请参阅确保推理环境安全

无论使用默认 AKS 群集还是专用 AKS 群集,如果 AKS 群集位于 VNET 后面,则工作区及其关联资源(存储、密钥保管库和 ACR)必须在与 AKS 群集相同的 VNET 中具有专用终结点或服务终结点。

以下网络示意图显示了一个受保护的 Azure 机器学习工作区,其中包含附加到虚拟网络的专用 AKS 群集。

显示附加的专用 AKS 群集的关系图。

可选:启用公共访问

你可以使用专用终结点保护 VNet 后面的工作区,并且仍允许通过公共 Internet 进行访问。 初始配置与确保工作区和关联资源安全的方式相同。

使用专用终结点保护工作区后,使用以下步骤使客户端能够使用 SDK 或 Azure 机器学习进行远程开发:

  1. 启用对工作区的公共访问
  2. 配置 Azure 存储防火墙,以允许与通过公共 Internet 连接的客户端的 IP 地址通信。

可选:启用工作室功能

如果存储在 VNet 中,则必须使用额外的配置步骤在工作室中启用全部功能。 默认情况下,禁用以下功能:

  • 预览工作室中的数据。
  • 在设计器中将数据可视化。
  • 在设计器中部署模型。
  • 提交 AutoML 试验。
  • 启动标记项目。

若要启用完整的工作室功能,请参阅在虚拟网络中使用 Azure 机器学习工作室

限制

ML 辅助数据标记不支持虚拟网络背后的默认存储帐户。 相反,对于 ML 辅助数据标记,请使用存储帐户而不是默认帐户。

提示

只要不是默认的存储帐户,数据标签使用的帐户就可以受到虚拟网络的保护。

配置防火墙设置

配置防火墙以控制 Azure 机器学习工作区资源和公共 Internet 之间的流量。 尽管我们建议使用 Azure 防火墙,但你也可以使用其他防火墙产品。

有关防火墙设置的详细信息,请参阅使用防火墙后面的工作区

自定义 DNS

如果需要为虚拟网络使用自定义 DNS 解决方案,则必须为工作区添加主机记录。

有关所需域名和 IP 地址的详细信息,请参阅如何将工作区与自定义 DNS 服务器配合使用

公共访问

如果你同意使用公共终结点,则 Azure Sentinel 可以自动为你创建工作区。 在此配置中,安全运营中心 (SOC) 分析师和系统管理员通过 Sentinel 连接到工作区中的笔记本。

显示 Azure Sentinel 公共连接的示意图。

专用终结点

如果要保护 VNet 中的工作区和关联资源,必须首先创建 Azure 机器学习工作区。 还必须在与你的工作区所在的 VNet 中创建一个虚拟机“跳转盒”,并启用与它的 Azure Bastion 连接。 与公共配置类似,SOC 分析师和管理员可以使用 Azure Sentinel 进行连接,但必须使用 Azure Bastion 执行某些操作才能连接到 VM。

显示 Azure Sentinel 通过 VNet 连接的示意图。

后续步骤

本文是介绍如何保护 Azure 机器学习工作流系列文章的一部分。 请参阅本系列中的其他文章: