Compartir a través de

使用虚拟网络保护 Azure 机器学习训练环境

适用于:Python SDK azure-ai-ml v2(当前版本)

提示

可以使用 Azure 机器学习托管虚拟网络,而不是执行本文中的步骤。 使用托管虚拟网络,Azure 机器学习可处理工作区和托管计算的网络隔离作业。 还可以为工作区所需的资源(例如 Azure 存储帐户)添加专用终结点。 有关详细信息,请参阅工作区托管网络隔离

Azure 机器学习计算实例、无服务器计算和计算群集可用于在 Azure 虚拟网络中安全地训练模型。 规划环境时,可以使用或不使用公共 IP 地址配置计算实例/群集或无服务器计算。 两者之间的一般区别如下:

  • 无公共 IP:可降低成本,因为它不具有相同的网络资源要求。 通过删除来自 Internet 的入站流量的要求来提高安全性。 但是,若要启用对所需资源(Microsoft Entra ID、Azure 资源管理器等)的出站访问,还需要进行其他配置更改。
  • 公共 IP:默认有效,但由于额外的 Azure 网络资源,成本更高。 需要通过公共 Internet 从 Azure 机器学习服务进行入站通信。

下表包含这些配置之间的差异:

配置 使用公共 IP 不使用公共 IP
入站流量 AzureMachineLearning 服务标记。
出站流量 默认情况下,可以不受限制地访问公共 Internet。
可以使用网络安全组或防火墙限制其访问的内容。
默认情况下,可以使用 Azure 提供的默认出站访问来访问公用网络。
如果你需要将出站流量路由到 Internet 上所需的资源,我们建议使用虚拟网络 NAT 网关或防火墙。
Azure 网络资源 公共 IP 地址、负载均衡器、网络接口

还可以使用 Azure Databricks 或 HDInsight 在虚拟网络中训练模型。

重要

本文中标记了“(预览版)”的项目目前为公共预览版。 该预览版在提供时没有附带服务级别协议,建议不要将其用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅适用于 Azure 预览版的补充使用条款

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

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

本文介绍如何在虚拟网络中保护以下训练计算资源:

  • Azure 机器学习计算群集
  • Azure 机器学习计算实例
  • Azure 机器学习无服务器计算
  • Azure Databricks
  • 虚拟机
  • HDInsight 群集

先决条件

  • 阅读网络安全概述一文,了解常见的虚拟网络方案和总体虚拟网络体系结构。

  • 用于计算资源的现有虚拟网络和子网。 该 VNet 必须与 Azure 机器学习工作区位于同一订阅。

    • 建议将工作区和训练作业使用的存储帐户放在计划用于计算实例、无服务器计算和群集的同一 Azure 区域中。 如果它们不在同一 Azure 区域中,可能会产生数据传输成本并增加网络延迟。
    • 确保 VNet 中的 *.instances.ml.azure.cn*.instances.ml.azure.cn 允许 WebSocket 通信。 WebSocket 由 Jupyter 在计算实例上使用。
  • 虚拟网络中的现有子网。 此子网用于为无服务器计算创建计算实例、群集和节点。

    • 请确保该子网未委托给其他 Azure 服务。
    • 请确保该子网包含足够的可用 IP 地址。 每个计算实例只需要一个 IP 地址。 计算群集中的每个节点以及每个无服务器计算节点都需要一个 IP 地址。
  • 如果你有自己的 DNS 服务器,建议使用 DNS 转发来解析计算实例和群集的完全限定的域名 (FQDN)。 有关详细信息,请参阅将自定义 DNS 与 Azure 机器学习配合使用

  • 若要将资源部署到虚拟网络或子网中,你的用户帐户必须在 Azure 基于角色的访问控制 (Azure RBAC) 中具有以下操作的权限:

    • 虚拟网络资源上的“Microsoft.Network/*/read”。 对于 Azure 资源管理器 (ARM) 模板部署,不需要此权限。
    • “Microsoft.Network/virtualNetworks/join/action”(在虚拟网络资源上)。
    • "Microsoft.Network/virtualNetworks/subnets/join/action"(在子网资源上)。

    若要详细了解如何将 Azure RBAC 与网络配合使用,请参阅网络内置角色

限制

  • Azure Lighthouse 不支持虚拟网络中的计算群集/实例和无服务器计算部署。

  • 在训练期间,必须打开端口 445,以便在计算实例与默认存储帐户之间进行专用网络通信。 例如,如果计算在一个 VNet 中,存储帐户在另一个 VNet 中,请不要阻止存储帐户 VNet 的端口 445。

与工作区位于不同 VNet/区域的计算群集

重要

无法在不同的区域/VNet 中创建计算实例,只能创建计算群集

要在与工作区虚拟网络位于不同区域的 Azure 虚拟网络中创建计算群集,可以通过几种方式在两个 VNet 之间启用通信。

  • 使用 VNet 对等互连
  • 在将要包含计算群集的虚拟网络中为工作区添加专用终结点。

重要

无论选择哪种方法,都必须为计算群集创建 VNet,Azure 机器学习不会替你创建它。

还必须允许默认存储帐户、Azure 容器注册表和 Azure 密钥保管库访问计算群集的 VNet。 可通过多种方法来实现此目的。 例如,可以为计算群集的 VNet 中的每个资源创建专用终结点,也可以使用 VNet 对等互连允许工作区 VNet 访问计算群集 VNet。

方案:VNet 对等互连

  1. 将工作区配置为使用 Azure 虚拟网络。 有关详细信息,请参阅保护工作区资源

  2. 创建将用于计算群集的第二个 Azure 虚拟网络。 它可以与用于工作区的群集位于不同的 Azure 区域中。

  3. 配置两个 VNet 之间的 VNet 对等互连

    提示

    等到 VNet 对等互连状态为“已连接”后再继续。

  4. 修改 privatelink.api.azureml.ms DNS 区域,将链接添加到计算群集的 VNet。 此区域由 Azure 机器学习工作区使用专用终结点参与 VNet 时创建。

    1. 将新的虚拟网络链接添加到 DNS 区域。 可以通过多种方法执行此操作:

      • 在 Azure 门户中,导航到 DNS 区域,然后选择“虚拟网络链接”。 然后选择“+ 添加”,随后选择为计算群集创建的 VNet。
      • 通过 Azure CLI 使用 az network private-dns link vnet create 命令。 有关详细信息,请参阅 az network private-dns link vnet create
      • 通过 Azure PowerShell 使用 New-AzPrivateDnsVirtualNetworkLink 命令。 有关详细信息,请参阅 New-AzPrivateDnsVirtualNetworkLink
  5. privatelink.notebooks.chinacloudapi.cn DNS 区域重复上一步和子步骤。

  6. 配置以下 Azure 资源以允许从两个 VNet 进行访问。

    • 工作区的默认存储帐户。
    • 工作区的 Azure 容器注册表。
    • 工作区的 Azure 密钥保管库。

    提示

    可以通过多种方式将这些服务配置为允许访问 VNet。 例如,你可以为两个 VNet 中的每个资源创建专用终结点。 或者,可以将资源配置为允许从两个 VNet 进行访问。

  7. 使用 VNet 时,可以像平常一样创建计算群集,但请选择为计算群集创建的 VNet。 如果 VNet 位于其他区域,请在创建计算群集时选择该区域。

    警告

    在设置区域时,如果它是你的工作区或数据存储所在区域以外的区域,则可能会出现网络延迟加重和数据传输成本增加的情况。 在创建群集以及在该群集上运行作业时,可能会存在这样的延迟和成本。

方案:专用终结点

  1. 将工作区配置为使用 Azure 虚拟网络。 有关详细信息,请参阅保护工作区资源

  2. 创建将用于计算群集的第二个 Azure 虚拟网络。 它可以与用于工作区的群集位于不同的 Azure 区域中。

  3. 在包含计算群集的 VNet 中为工作区创建新的专用终结点。

    • 若要使用 Azure 门户添加新的专用终结点,请选择工作区,然后选择“网络”。 选择“专用终结点连接”、“+ 专用终结点”,然后使用字段创建新的专用终结点。

      • 选择“区域”时,请选择与虚拟网络相同的区域。
      • 选择“资源类型”时,请使用“Microsoft.MachineLearningServices/workspaces” 。
      • 将“资源”设置为工作区名称。
      • 虚拟网络子网设置为你为计算群集创建的 VNet 和子网。

      最后,选择“创建”以创建专用终结点。

    • 要使用 Azure CLI 添加新的专用终结点,请使用 az network private-endpoint create。 有关使用此命令的示例,请参阅为 Azure 机器学习工作区配置专用终结点

  4. 使用 VNet 时,可以像平常一样创建计算群集,但请选择为计算群集创建的 VNet。 如果 VNet 位于其他区域,请在创建计算群集时选择该区域。

    警告

    在设置区域时,如果它是你的工作区或数据存储所在区域以外的区域,则可能会出现网络延迟加重和数据传输成本增加的情况。 在创建群集以及在该群集上运行作业时,可能会存在这样的延迟和成本。

没有公共 IP 的计算实例/群集或无服务器计算

重要

此信息仅在使用 Azure 虚拟网络时有效。 如果使用的是托管虚拟网络,则无法在 Azure 虚拟网络中部署计算资源。 有关使用托管虚拟网络的信息,请参阅使用托管网络进行托管计算

重要

如果你在未选择加入预览版的情况下一直在使用未配置公共 IP 的计算实例或计算群集,则需要在 2023 年 1 月 20 日(该功能正式发布时)之后删除并重新创建它们。

如果之前一直在使用没有公共 IP 的预览版,可能还需要修改允许入站和出站的流量,因为正式发布版的要求已更改:

  • 出站要求 - 另外两个出站,仅用于管理计算实例和群集。 这些服务标记的目标归 Microsoft 所有:
    • UDP 端口 5831 上的 AzureMachineLearning 服务标记。
    • TCP 端口 443 上的 BatchNodeManagement 服务标记。

以下配置是对先决条件部分所列配置的补充,并且特定于创建没有配置公共 IP 的计算实例/群集。 它们也适用于无服务器计算:

  • 必须使用计算资源的工作区专用终结点才能从 VNet 与 Azure 机器学习服务进行通信。 有关详细信息,请参阅为 Azure 机器学习工作区配置专用终结点

  • 在 VNet 中,允许流向以下服务标记或完全限定的域名 (FQDN) 的出站流量:

    服务标记 协议 端口 说明
    AzureMachineLearning TCP
    UDP
    443/8787/18881
    5831
    与 Azure 机器学习服务通信。
    BatchNodeManagement.<region> ANY 443 <region> 替换为包含 Azure 机器学习工作区的 Azure 区域。 与 Azure Batch 通信。 计算实例和计算群集是使用 Azure Batch 服务实现的。
    Storage.<region> TCP 443 <region> 替换为包含 Azure 机器学习工作区的 Azure 区域。 此服务标记用于与 Azure Batch 使用的 Azure 存储帐户通信。

    重要

    Storage.<region> 的出站访问可能会导致工作区的数据外泄。 通过使用服务终结点策略,你可以缓解此漏洞的问题。 有关详细信息,请参阅 Azure 机器学习数据外泄防护一文。

    FQDN 协议 端口 说明
    <region>.tundra.ml.azure.cn UDP 5831 <region> 替换为包含 Azure 机器学习工作区的 Azure 区域。
    microsoftgraph.chinacloudapi.cn TCP 443 与 Microsoft Graph API 通信。
    *.instances.ml.azure.cn TCP 443/8787/18881 与 Azure 机器学习进通信。
    *.<region>.batch.chinacloudapi.cn ANY 443 <region> 替换为包含 Azure 机器学习工作区的 Azure 区域。 与 Azure Batch 通信。
    *.<region>.service.batch.chinacloudapi.cn ANY 443 <region> 替换为包含 Azure 机器学习工作区的 Azure 区域。 与 Azure Batch 通信。
    *.blob.core.chinacloudapi.cn TCP 443 与 Azure Blob 存储通信。
    *.queue.core.chinacloudapi.cn TCP 443 与 Azure 队列存储通信。
    *.table.core.chinacloudapi.cn TCP 443 与 Azure 表存储通信。
  • 默认情况下,配置为无公共 IP 的计算实例/群集不具有对 Internet 的出站访问。 如果你可以从它访问 Internet,则这是因为 Azure 默认出站访问,并且你有一个 NSG 允许出站到 Internet。 但是,我们不建议使用默认出站访问。 如果需要对 Internet 的出站访问,则建议改用防火墙和出站规则或 NAT 网关和网络服务组来允许出站流量。

    若要详细了解如何保护 Azure 机器学习所用的出站流量,请参阅以下文章:

    有关可与 Azure 防火墙配合使用的服务标记的详细信息,请参阅虚拟网络服务标记一文。

使用以下信息创建没有公共 IP 地址的计算实例或群集:

az ml compute create 命令中,替换以下值:

  • rg:将在其中创建计算的资源组。
  • ws:Azure 机器学习工作区名称。
  • yourvnet:Azure 虚拟网络。
  • yoursubnet:用于计算的子网。
  • AmlComputeComputeInstance:指定 AmlCompute 将创建计算群集。 ComputeInstance 将创建创建计算实例。
# create a compute cluster with no public IP
az ml compute create --name cpu-cluster --resource-group rg --workspace-name ws --vnet-name yourvnet --subnet yoursubnet --type AmlCompute --set enable_node_public_ip=False

# create a compute instance with no public IP
az ml compute create --name myci --resource-group rg --workspace-name ws --vnet-name yourvnet --subnet yoursubnet --type ComputeInstance --set enable_node_public_ip=False

使用以下信息为给定工作区配置没有公共 IP 地址的无服务器计算节点

重要

如果使用无公共 IP 无服务器计算,并且工作区使用 IP 允许列表,则必须将出站专用终结点添加到工作区。 无服务器计算需要与工作区通信,但在未配置公共 IP 时,它使用 Azure 默认出站进行 Internet 访问。 此出站的公共 IP 是动态的,无法将其添加到 IP 允许列表中。 创建到工作区的出站专用终结点允许来自为工作区绑定的无服务器计算的流量绕过 IP 允许列表。

创建工作区:

az ml workspace create -n <workspace-name> -g <resource-group-name> --file serverlesscomputevnetsettings.yml
name: testserverlesswithnpip
location: eastus
public_network_access: Disabled
serverless_compute:
  custom_subnet: /subscriptions/<sub id>/resourceGroups/<resource group>/providers/Microsoft.Network/virtualNetworks/<vnet name>/subnets/<subnet name>
  no_public_ip: true

更新工作区:

az ml workspace update -n <workspace-name> -g <resource-group-name> --file serverlesscomputevnetsettings.yml
serverless_compute:
  custom_subnet: /subscriptions/<sub id>/resourceGroups/<resource group>/providers/Microsoft.Network/virtualNetworks/<vnet name>/subnets/<subnet name>
  no_public_ip: true

有公共 IP 的计算实例/群集或无服务器计算

重要

此信息仅在使用 Azure 虚拟网络时有效。 如果使用的是托管虚拟网络,则无法在 Azure 虚拟网络中部署计算资源。 有关使用托管虚拟网络的信息,请参阅使用托管网络进行托管计算

以下配置是对先决条件部分所列配置的补充,并且特定于创建具有公共 IP 的计算实例/群集。 它们也适用于无服务器计算:

  • 如果将多个计算实例/群集置于一个虚拟网络中,可能需要请求为一个或多个资源增加配额。 机器学习计算实例或群集自动在包含虚拟网络的资源组中分配网络资源。 对于每个计算实例或群集,此服务分配以下资源:

    • 系统会自动创建网络安全组 (NSG)。 此 NSG 允许 AzureMachineLearning 服务标记中端口 44224 上的入站 TCP 流量。

      重要

      计算实例和计算群集会自动创建具有所需规则的 NSG。

      如果在子网级别具有其他 NSG,则子网级别的 NSG 中的规则不得与自动创建的 NSG 中的规则相冲突。

      若要了解 NSG 如何筛选网络流量,请参阅网络安全组如何筛选网络流量

    • 一个负载均衡器

    对于计算群集,每当群集纵向缩减到 0 个节点时,将删除这些资源,而当群集横向扩展时,将创建这些资源。

    对于计算实例,这些资源将一直保留,直到该实例被删除。 停止实例不会删除资源。

    重要

    这些资源受订阅的资源配额限制。 如果虚拟网络资源组被锁定,则删除计算群集/实例将失败。 在删除计算群集/实例之前,无法删除负载均衡器。 此外,请确保不存在禁止创建网络安全组的 Azure Policy 分配。

  • 在 VNet 中,允许 AzureMachineLearning 服务标记中端口 44224 上的入站 TCP 流量。

    重要

    创建计算实例/群集时,会动态为其分配一个 IP 地址。 由于该地址在创建之前是未知的,并且创建过程中需要入站访问,因此无法在防火墙上静态分配该地址。 相反,如果将防火墙与 VNet 配合使用,则必须创建用户定义的路由以允许此入站流量。

  • 在 VNet 中,允许流向以下服务标记的出站流量:

    服务标记 协议 端口 说明
    AzureMachineLearning TCP
    UDP
    443/8787/18881
    5831
    与 Azure 机器学习服务通信。
    BatchNodeManagement.<region> ANY 443 <region> 替换为包含 Azure 机器学习工作区的 Azure 区域。 与 Azure Batch 通信。 计算实例和计算群集是使用 Azure Batch 服务实现的。
    Storage.<region> TCP 443 <region> 替换为包含 Azure 机器学习工作区的 Azure 区域。 此服务标记用于与 Azure Batch 使用的 Azure 存储帐户通信。

    重要

    Storage.<region> 的出站访问可能会导致工作区的数据外泄。 通过使用服务终结点策略,你可以缓解此漏洞的问题。 有关详细信息,请参阅 Azure 机器学习数据外泄防护一文。

    FQDN 协议 端口 说明
    <region>.tundra.ml.azure.cn UDP 5831 <region> 替换为包含 Azure 机器学习工作区的 Azure 区域。
    microsoftgraph.chinacloudapi.cn TCP 443 与 Microsoft Graph API 通信。
    *.instances.ml.azure.cn TCP 443/8787/18881 与 Azure 机器学习进通信。
    *.<region>.batch.chinacloudapi.cn ANY 443 <region> 替换为包含 Azure 机器学习工作区的 Azure 区域。 与 Azure Batch 通信。
    *.<region>.service.batch.chinacloudapi.cn ANY 443 <region> 替换为包含 Azure 机器学习工作区的 Azure 区域。 与 Azure Batch 通信。
    *.blob.core.chinacloudapi.cn TCP 443 与 Azure Blob 存储通信。
    *.queue.core.chinacloudapi.cn TCP 443 与 Azure 队列存储通信。
    *.table.core.chinacloudapi.cn TCP 443 与 Azure 表存储通信。

使用以下信息在 VNet 中创建包含公共 IP 地址的计算实例或群集:

az ml compute create 命令中,替换以下值:

  • rg:将在其中创建计算的资源组。
  • ws:Azure 机器学习工作区名称。
  • yourvnet:Azure 虚拟网络。
  • yoursubnet:用于计算的子网。
  • AmlComputeComputeInstance:指定 AmlCompute 将创建计算群集。 ComputeInstance 将创建创建计算实例。
# create a compute cluster with a public IP
az ml compute create --name cpu-cluster --resource-group rg --workspace-name ws --vnet-name yourvnet --subnet yoursubnet --type AmlCompute

# create a compute instance with a public IP
az ml compute create --name myci --resource-group rg --workspace-name ws --vnet-name yourvnet --subnet yoursubnet --type ComputeInstance

使用以下信息为给定工作区配置有公共 IP 地址的无服务器计算节点

创建工作区:

az ml workspace create -n <workspace-name> -g <resource-group-name> --file serverlesscomputevnetsettings.yml
name: testserverlesswithvnet
location: eastus
serverless_compute:
  custom_subnet: /subscriptions/<sub id>/resourceGroups/<resource group>/providers/Microsoft.Network/virtualNetworks/<vnet name>/subnets/<subnet name>
  no_public_ip: false

更新工作区:

az ml workspace update -n <workspace-name> -g <resource-group-name> --file serverlesscomputevnetsettings.yml
serverless_compute:
  custom_subnet: /subscriptions/<sub id>/resourceGroups/<resource group>/providers/Microsoft.Network/virtualNetworks/<vnet name>/subnets/<subnet name>
  no_public_ip: false

Azure Databricks

  • 该虚拟网络必须与 Azure 机器学习工作区位于同一订阅和区域。
  • 如果工作区的 Azure 存储帐户也在虚拟网络中受保护,则它们必须与 Azure Databricks 群集位于同一虚拟网络中。
  • 除了 Azure Databricks 使用的 databricks-privatedatabricks-public 子网以外,还需要为虚拟网络创建 default 子网。
  • Azure Databricks 不使用专用终结点来与虚拟网络通信。

若要详细了解如何结合使用 Azure Databricks 和虚拟网络,请参阅在 Azure 虚拟网络中部署 Azure Databricks

虚拟机或 HDInsight 群集

本部分介绍如何将虚拟网络中的虚拟机或 Azure HDInsight 群集用于工作区。

创建 VM 或 HDInsight 群集

重要

Azure 机器学习只支持运行 Ubuntu 的虚拟机。

使用 Azure 门户或 Azure CLI 创建 VM 或 HDInsight 群集,然后将群集置于 Azure 虚拟网络中。 有关详细信息,请参阅以下文章:

配置网络端口

允许 Azure 机器学习与 VM 或群集上的 SSH 端口进行通信,为网络安全组配置源条目。 SSH 端口通常是端口 22。 若要允许来自此源的流量,请执行以下操作:

  1. 在“源”下拉列表中,选择“服务标记”。

  2. 在“源服务标记”下拉列表中,选择“AzureMachineLearning”。

    用于在虚拟网络中的 VM 或 HDInsight 群集上执行试验的入站规则的屏幕截图。

  3. 在“源端口范围”下拉列表中,选择

  4. 在“目标”下拉列表中,选择“任何”。

  5. 在“目标端口范围”下拉列表中,选择“22”。

  6. 在“协议”下,选择“任何”。

  7. 在“操作”下,选择“允许”。

保留网络安全组的默认出站规则。 有关详细信息,请参阅安全组中的“默认安全规则”。

如果你不想要使用默认的出站规则,同时想要限制虚拟网络的出站访问,请参阅所需公共 Internet 访问部分。

附加 VM 或 HDInsight 群集

将 VM 或 HDInsight 群集附加到 Azure 机器学习工作区。 有关详细信息,请参阅在工作室中管理用于模型训练和部署的计算资源

训练模型所需的公共 Internet 访问权限

重要

虽然本文的前面部分介绍了创建计算资源所需的配置,但需要此部分的配置信息才能使用这些资源训练模型。

Azure 机器学习需要对公共 Internet 进行入站和出站访问。 下表概述了需要的访问权限及其用途。 对于以 .region 结尾的服务标记,请将 region 替换为包含你的工作区的 Azure 区域。 例如,Storage.chinanorth

提示

“必需”选项卡列出了必需的入站和出站配置。 “视情况”选项卡列出了你可能希望启用的特定配置所需的可选入站和出站配置。

方向 协议和
ports
服务标记 目的
出站 TCP:80、443 AzureActiveDirectory 使用 Microsoft Entra ID 进行身份验证。
出站 TCP:443、18881
UDP:5831
AzureMachineLearning 使用 Azure 机器学习服务。
笔记本中的 Python Intellisense 使用端口 18881。
创建、更新和删除 Azure 机器学习计算实例时使用端口 5831。
出站 任何:443 BatchNodeManagement.region 与 Azure 机器学习计算实例/群集的 Azure Batch 后端通信。
出站 TCP:443 AzureResourceManager 使用 Azure 机器学习、Azure CLI 和 Azure 机器学习 SDK 创建 Azure 资源。
出站 TCP:443 Storage.region 访问存储在 Azure 存储帐户中、用于计算群集和计算实例的数据。 有关防止数据通过此出站外泄的信息,请参阅数据外泄保护
出站 TCP:443 AzureFrontDoor.FrontEnd
* 在由世纪互联运营的 Azure 中不需要。
Azure 机器学习工作室的全球入口点。 为 AutoML 存储图像和环境。 有关防止数据通过此出站外泄的信息,请参阅数据外泄保护
出站 TCP:443 MicrosoftContainerRegistry.region
注意:此标记依赖于 AzureFrontDoor.FirstParty 标记
访问由 Microsoft 提供的 docker 映像。 为 Azure Kubernetes 服务设置 Azure 机器学习路由器。

提示

如果需要 IP 地址而不是服务标记,请使用下列选项之一:

IP 地址可能会定期改变。

可能还需要允许出站流量发往 Visual Studio Code 和非 Microsoft 站点,以便安装机器学习项目所需的包。 下表列出了用于机器学习的常用存储库:

主机名 目的
anaconda.com
*.anaconda.com
用于安装默认包。
*.anaconda.org 用于获取存储库数据。
pypi.org 用于列出默认索引的依赖项(如果有),索引不会被用户设置覆盖。 如果索引被覆盖,则还必须允许 *.pythonhosted.org
cloud.r-project.org 在安装用于 R 开发的 CRAN 包时使用。
*.pytorch.org 由基于 PyTorch 的一些示例使用。
*.tensorflow.org 由基于 Tensorflow 的一些示例使用。
code.visualstudio.com 下载和安装 Visual Studio Code 桌面时需要。 Visual Studio Code Web 不需要。
update.code.visualstudio.com
*.vo.msecnd.net
用于检索通过安装脚本安装在计算实例上的 Visual Studio Code 服务器位。
marketplace.visualstudio.com
vscode.blob.core.chinacloudapi.cn
*.gallerycdn.vsassets.io
下载和安装 Visual Studio Code 扩展时需要。 这些主机会启用与适用于 Visual Studio Code 的 Azure ML 扩展提供的计算实例的远程连接。 有关详细信息,请参阅在 Visual Studio Code 中连接到 Azure 机器学习计算实例
raw.githubusercontent.com/microsoft/vscode-tools-for-ai/master/azureml_remote_websocket_server/* 用于检索安装在计算实例上的 websocket 服务器位。 websocket 服务器用于将来自 Visual Studio Code 客户端(桌面应用程序)的请求传输到计算实例上运行的 Visual Studio Code 服务器。

注意

使用 Azure 机器学习 VS Code 扩展时,远程计算实例需要访问公共存储库才能安装该扩展所需的包。 如果计算实例需要代理来访问这些公共存储库或 Internet,则需要在计算实例的 ~/.bashrc 文件中设置和导出 HTTP_PROXYHTTPS_PROXY 环境变量。 可以使用自定义脚本在预配时自动执行此过程。

将 Azure Kubernetes Service (AKS) 与 Azure 机器学习一起使用时,请允许将以下流量发送到 AKS VNet:

有关使用防火墙解决方案的信息,请参阅在 Azure 机器学习中使用防火墙

后续步骤

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