规划网络隔离

本文介绍如何规划 Azure 机器学习的网络隔离以及我们的建议。 本文面向想要设计网络体系结构的 IT 管理员。

使用托管虚拟网络可以更轻松地配置网络隔离。 托管虚拟网络会自动保护托管虚拟网络中的工作区和托管计算资源。 可以为工作区依赖的其他 Azure 服务(例如 Azure 存储帐户)添加专用终结点连接。 根据需要,可以允许所有出站流量进入公共网络,也可以只允许你批准的出站流量进入公共网络。 将自动为托管虚拟网络启用 Azure 机器学习服务所需的出站流量。 建议使用工作区托管网络隔离实现内置无摩擦的网络隔离方法。 我们有两种模式:允许 Internet 出站模式或仅允许已批准的出站模式。

允许 Internet 出站模式

如果你想要允许你的机器学习工程师自由访问 Internet,请使用此选项。 可以创建其他专用终结点出站规则,让他们访问你在 Azure 上的专用资源。

为 internet 出站配置的托管网络隔离示意图。

仅允许已批准的出站模式

如果你想要最大程度地降低数据外泄风险并控制你的机器学习工程师可以访问的内容,请使用此选项。 可以使用专用终结点、服务标记和 FQDN 控制出站规则。

仅允许已批准的出站配置的托管网络隔离示意图。

如果你有阻止使用托管虚拟网络的特定要求或公司策略,则可以使用 Azure 虚拟网络进行网络隔离。

下图是我们推荐的体系结构,其将所有资源设为专用,但允许从 VNet 进行出站 Internet 访问。 此图描述了以下体系结构:

  • 将所有资源放在同一区域。
  • 包含你的防火墙的中心 VNet。
  • 包含以下资源的辐射 VNet:
    • 训练子网包含用于训练 ML 模型的计算实例和群集。 这些资源配置为无公共 IP。
    • 评分子网包含 AKS 群集。
    • “pe”子网包含专用终结点,这些终结点连接到工作区和工作区使用的专用资源(存储、密钥保管库、容器注册表等)
  • 托管联机终结点使用工作区的专用终结点来处理传入请求。 专用终结点还用于允许托管联机终结点部署访问专用存储。

此体系结构会在网络安全和 ML 工程师的工作效率之间进行平衡。

推荐的网络体系结构示意图。

可以使用 Bicep 模板Terraform 模板自动创建此环境。 不使用托管联机终结点或 AKS。 如果没有用于 AI 模型评分的现有 AKS 群集,则解决方案是托管联机终结点。 有关详细信息,请参阅如何保护联机终结点文档。 如果有用于 AI 模型评分的现有 AKS 群集,则解决方案是使用 Azure 机器学习扩展的 AKS。 有关详细信息,请参阅如何附加 kubernetes 文档。

删除防火墙要求

如果要删除防火墙要求,则可以使用网络安全组和 Azure 虚拟网络 NAT 允许从专用计算资源进行 Internet 出站。

没有防火墙的推荐网络体系结构示意图。

使用公共工作区

如果你可以使用具有条件访问的 Microsoft Entra 身份验证和授权,那么你可以使用公共工作区。 公共工作区有一些功能可以显示你的专用存储帐户中的数据,我们建议使用专用工作区。

此图显示了推荐的体系结构,其将所有资源设为专用,并控制出站目标以防止数据外泄。 在生产环境中使用 Azure 机器学习处理敏感数据时,建议使用此体系结构。 此图描述了以下体系结构:

  • 将所有资源放在同一区域。
  • 包含你的防火墙的中心 VNet。
    • 除了服务标记外,防火墙还使用 FQDN 来防止数据外泄。
  • 包含以下资源的辐射 VNet:
    • 训练子网包含用于训练 ML 模型的计算实例和群集。 这些资源配置为无公共 IP。 此外,还部署了服务终结点和服务终结点策略来防止数据外泄。
    • 评分子网包含 AKS 群集。
    • “pe”子网包含专用终结点,这些终结点连接到工作区和工作区使用的专用资源(存储、密钥保管库、容器注册表等)
  • 托管联机终结点使用工作区的专用终结点来处理传入请求。 专用终结点还用于允许托管联机终结点部署访问专用存储。

具有数据外泄防护配置的推荐网络示意图。

下表列出了所需的出站 Azure 服务标记和具有数据外泄防护设置的完全限定的域名 (FQDN):

出站服务标记 协议 端口
AzureActiveDirectory TCP 80、443
AzureResourceManager TCP 443
AzureMachineLearning UDP 5831
BatchNodeManagement TCP 443
出站 FQDN 协议 端口
mcr.microsoft.com TCP 443
*.data.mcr.microsoft.com TCP 443
studio.ml.azure.cn TCP 443
automlresources-prod.azureedge.net TCP 443

使用公共工作区

如果你可以使用具有条件访问的 Microsoft Entra 身份验证和授权,那么你可以使用公共工作区。 公共工作区有一些功能可以显示你的专用存储帐户中的数据,我们建议使用专用工作区。

需了解的重要注意事项详细信息

Azure 机器学习同时具有 IaaS 和 PaaS 资源

Azure 机器学习的网络隔离涉及平台即服务 (PaaS) 和基础结构即服务 (IaaS) 组件。 可以使用专用链接隔离 PaaS 服务,例如 Azure 机器学习工作区、存储、密钥保管库、容器注册表和监视器。 可以将 IaaS 计算服务(例如用于 AI 模型训练的计算实例/群集)和 Azure Kubernetes 服务 (AKS) 或托管的联机终结点(用于 AI 模型评分)注入虚拟网络,并使用专用链接与 PaaS 服务通信。 下图是此体系结构的示例。

IaaS 和 PaaS 组件示意图。

在此图中,计算实例、计算群集和 AKS 群集位于你的虚拟网络中。 它们可以使用专用终结点访问 Azure 机器学习工作区或存储。 你可以对 Azure 存储和 Azure 密钥保管库使用服务终结点(而不是专用终结点)。 其他服务不支持服务终结点。

必需的入站和出站配置

Azure 机器学习对你的虚拟网络具有多个必需的入站和出站配置。 如果你具有一个独立的虚拟网络,则使用网络安全组进行配置非常简单。 但是,你可能有一个中心辐射型或网状型网络体系结构、防火墙、网络虚拟设备、代理和用户定义的路由。 在任一情况下,请确保允许使用网络安全组件进行入站和出站操作。

通过防火墙进行出站的中心辐射型网络示意图。

在此图中,你有一个中心辐射型网络体系结构。 辐射 VNet 具有用于 Azure 机器学习的资源。 中心 VNet 有一个防火墙,用于控制来自虚拟网络的 Internet 出站。 在这种情况下,防火墙必须允许对所需资源进行出站访问,辐射 VNet 中的计算资源必须能够访问防火墙。

提示

在该图中,计算实例和计算群集配置为无公共 IP。 如果改用具有公共 IP 的计算实例或群集,则需要使用网络安全组 (NSG) 和用户定义的路由来允许来自 Azure 机器学习服务标记的入站,以跳过防火墙。 此入站流量来自 Microsoft 服务(Azure 机器学习)。 但是,建议使用无公共 IP 选项来删除此入站要求。

如果你自己的 DNS 服务器托管在 Azure 或本地,则需要在 DNS 服务器中创建条件转发器。 条件转发器会为所有已启用专用链接的 PaaS 服务将 DNS 请求发送到 Azure DNS。 有关详细信息,请参阅文章 DNS 配置方案特定于 Azure 机器学习的 DNS 配置

数据外泄防护

我们有两种类型的出站:只读和读/写。 恶意攻击者无法利用只读出站,但可以利用读/写出站。 在本例中,Azure 存储和 Azure Frontdoor(frontdoor.frontend 服务标记)是读/写出站。

你可以使用我们的数据外泄防护解决方案来缓解此数据外泄风险。 我们将服务终结点策略与 Azure 机器学习别名结合使用,以仅允许出站到 Azure 机器学习托管存储帐户。 你不需要在防火墙上对存储开放出站。

具有外泄防护配置的网络示意图。

在此图中,计算实例和群集需要访问 Azure 机器学习托管存储帐户才能获取设置脚本。 可以将服务终结点策略与 Azure 机器学习别名结合使用,以便仅允许存储访问 Azure 机器学习存储帐户,而不是对存储开放出站。

下表列出了所需的出站 Azure 服务标记和具有数据外泄防护设置的完全限定的域名 (FQDN):

出站服务标记 协议 端口
AzureActiveDirectory TCP 80、443
AzureResourceManager TCP 443
AzureMachineLearning UDP 5831
BatchNodeManagement TCP 443
出站 FQDN 协议 端口
mcr.microsoft.com TCP 443
*.data.mcr.microsoft.com TCP 443
studio.ml.azure.cn TCP 443
automlresources-prod.azureedge.net TCP 443

托管联机终结点

托管联机终结点的入站和出站通信安全性是分开配置的。

入站通信

Azure 机器学习使用专用终结点来保护与托管联机终结点的入站通信。 将终结点的 public_network_access 标志设置为 disabled 以阻止公共对它的访问。 禁用此标志后,只能通过你的 Azure 机器学习工作区的专用终结点访问你的终结点,并且无法从公用网络访问该终结点。

出站通信

为了保护从部署到资源的出站通信,Azure 机器学习使用工作区托管虚拟网络。 需要在工作区托管 VNet 中创建部署,以便它可以使用工作区托管虚拟网络的专用终结点进行出站通信。

以下体系结构图显示了通信如何通过专用终结点流向托管联机终结点。 来自客户端虚拟网络的传入评分请求通过工作区的专用终结点流向托管联机终结点。 从部署到服务的出站通信通过从工作区的托管虚拟网络到这些服务实例的专用终结点进行处理。

显示通过工作区专用终结点进行入站通信和通过工作区托管 VNet 的专用终结点进行出站通信的示意图。

有关详细信息,请参阅托管联机终结点的网络隔离

主网络中的专用 IP 地址不足

Azure 机器学习需要专用 IP;每个计算实例、计算群集节点和专用终结点一个 IP。 如果使用 AKS,则还需要许多 IP。 与本地网络连接的中心辐射型网络可能没有足够的专用 IP 地址空间。 在这种情况下,可以将隔离的、非对等互连的 VNet 用于 Azure 机器学习资源。

由专用终结点而不是对等互连连接的网络的示意图。

在此图中,主 VNet 需要专用终结点的 IP。 你可以为具有较大地址空间的多个 Azure 机器学习工作区提供中心辐射型 VNet。 此体系结构的缺点是专用终结点的数量增加了一倍。

网络策略强制实施

如果要通过自助服务工作区和计算资源创建来控制网络隔离参数,则可以使用内置策略

其他次要注意事项

VNet 后面的 ACR 的映像生成计算设置

如果将 Azure 容器注册表 (ACR) 放在专用终结点后面,则 ACR 无法生成 Docker 映像。 你需要使用计算实例或计算群集来生成映像。 有关详细信息,请参阅如何设置映像生成计算一文。

如果计划使用 Azure 机器学习工作室,则需要执行额外的配置步骤。 这些步骤可防止任何数据外泄情形。 有关详细信息,请参阅如何在 Azure 虚拟网络中使用 Azure 机器学习工作室一文。

后续步骤

有关使用托管虚拟网络的详细信息,请参阅以下文章:

有关使用 Azure 虚拟网络的详细信息,请参阅以下文章: