Azure 机器学习数据外泄防护

Azure 机器学习有多个入站和出站依赖项。 其中一些依赖项可能会暴露组织内恶意代理的数据外泄风险。 本文档介绍如何通过限制入站和出站要求来最大程度降低数据外泄风险。

  • 入站:如果计算实例或群集使用公共 IP 地址,则在 azuremachinelearning(端口 44224)服务标记上有一个入站。 可以使用网络安全组 (NSG) 和服务标记控制此入站流量。 Azure 服务 IP 难以伪装,因此数据外泄风险较低。 还可以将计算配置为不使用公共 IP,这样能消除入站要求。

  • 出站:如果恶意代理对出站目标资源没有写入访问权限,就无法使用该出站进行数据外泄。 Microsoft Entra ID、Azure 资源管理器、Azure 机器学习和 Microsoft 容器注册表属于此类别。 另一方面,存储和 AzureFrontDoor.frontend 可用于数据外泄。

    • 存储出站:此要求来自计算实例和计算群集。 通过在其存储帐户中预配和保存数据,恶意代理可以利用此出站规则外泄数据。 可使用 Azure 服务终结点策略和 Azure Batch 的简化节点通信体系结构消除数据外泄风险。

    • AzureFrontDoor.frontend 出站:Azure 机器学习工作室 UI 和 AutoML 使用 Azure Front Door。 请切换到以下完全限定的域名 (FQDN),而不是允许到服务标记 (AzureFrontDoor.frontend) 的出站流量。 切换到这些 FQDN 会删除服务标记中包括的不必要的出站流量,并且仅允许 Azure 机器学习工作室 UI 和 AutoML 所需的流量。

      • studio.ml.azure.cn
      • automlresources-prod.azureedge.net

提示

本文中的信息主要介绍了如何使用 Azure 虚拟网络。 Azure 机器学习还可以使用托管虚拟网络。 使用托管虚拟网络,Azure 机器学习可处理工作区和托管计算的网络隔离作业。

为了解决数据外泄问题,托管虚拟网络允许限制为仅流出经过批准的出站流量。 有关详细信息,请参阅工作区托管网络隔离

先决条件

  • Azure 订阅
  • Azure 虚拟网络 (VNet)
  • 具有连接到 VNet 的专用终结点的 Azure 机器学习工作区。
    • 工作区使用的存储帐户还必须使用专用终结点连接到 VNet。
  • 你需要重新创建计算实例或将计算群集缩减到零个节点。
    • 如果你已加入预览版,则不需要执行此操作。
    • 如果你在 2022 年 12 月之后创建了新的计算实例和计算群集,则不需要执行此操作。

为什么需要使用服务终结点策略

使用服务终结点策略可以通过服务终结点筛选发往 Azure 存储帐户的出口虚拟网络流量,并让数据只能外泄到特定 Azure 存储帐户。 Azure 机器学习计算实例和计算群集需要访问 Azure 管理的存储帐户才能进行预配。 服务终结点策略中的 Azure 机器学习别名包括 Azure 管理的存储帐户。 我们将服务终结点策略与 Azure 机器学习别名结合使用来防止数据外泄或控制目标存储帐户。 可以在服务终结点策略文档中了解详细信息。

1. 创建服务终结点策略

  1. Azure 门户添加新“服务终结点策略”。 “基本信息”选项卡上提供了所需信息,然后选择“下一步”。

  2. 在“策略定义”选项卡上执行以下操作:

    1. 选择“+ 添加资源”,然后提供以下信息:

      • 服务:Microsoft.Storage
      • 作用域:选择“单个帐户”作为作用域,将网络流量限制到一个存储帐户。
      • 订阅:包含存储帐户的 Azure 订阅。
      • 资源组:包含存储帐户的资源组。
      • 资源:你的工作区的默认存储帐户。

      选择“添加”以添加资源信息。

      A screenshot showing how to create a service endpoint policy.

    2. 选择“+ 添加别名”,然后选择 /services/Azure/MachineLearning 作为服务器别名值。 选择“添加”以添加别名。

      注意

      Azure CLI 和 Azure PowerShell 不支持向策略添加别名。

  3. 选择“查看 + 创建”,然后选择“创建”。

重要

如果计算实例和计算群集需要访问其他存储帐户,则服务终结点策略应在资源部分中包括其他存储帐户。 请注意,如果你使用存储专用终结点,则不需要这样做。 服务终结点策略和专用终结点是独立的。

2. 允许入站和出站网络流量

入站

重要

以下信息修改了如何保护训练环境一文中提供的指南。

重要

以下信息修改了如何保护训练环境一文中提供的指南。

将 Azure 机器学习计算实例与公共 IP 地址配合使用时,允许来自 Azure Batch 管理(服务标记 BatchNodeManagement.<region>)的入站流量。 无公共 IP 的计算实例不需要此入站通信。

出站

重要

以下信息是对使用虚拟网络保护训练环境配置入站和出站网络流量文章中提供的指南的补充。

重要

以下信息是对使用虚拟网络保护训练环境配置入站和出站网络流量文章中提供的指南的补充。

选择正在使用的配置:

允许流向以下服务标记的出站流量。 将 <region> 替换为包含计算群集或实例的 Azure 区域:

服务标记 协议 端口
BatchNodeManagement.<region> ANY 443
AzureMachineLearning TCP 443
Storage.<region> TCP 443

注意

对于存储出站,将在后续步骤中应用服务终结点策略来限制出站流量。

有关详细信息,请参阅如何保护训练环境以及配置入站和出站网络流量

有关详细信息,请参阅如何保护训练环境以及配置入站和出站网络流量

3. 为子网启用存储终结点

按照以下步骤,为包含 Azure 机器学习计算群集和计算实例的子网启用存储终结点:

  1. Azure 门户中选择 Azure 机器学习工作区的“Azure 虚拟网络”。
  2. 从页面左侧选择“子网”,然后选择包含计算群集和计算实例的子网。
  3. 在出现的窗体中,展开“服务”下拉列表,然后启用 Microsoft.Storage。 选择“保存”以保存这些更改。
  4. 将服务终结点策略应用于你的工作区子网。

A screenshot of the Azure portal showing how to enable storage endpoint for the subnet.

4. 特选环境

使用 Azure 机器学习特选环境时,请确保使用最新环境版本。 环境的容器注册表也必须是 mcr.microsoft.com。 请使用以下步骤检查容器注册表:

  1. Azure 机器学习工作室中选择工作区,然后选择“环境”。

  2. 验证 Azure 容器注册表是否以 mcr.microsoft.com 值开头。

    重要

    如果容器注册表是 viennaglobal.azurecr.cn,则不能将特选环境与数据外泄配合使用。 尝试将特选环境更新到最新版本。

  3. 使用 mcr.microsoft.com 时,必须允许出站配置到以下资源。 选择正在使用的配置选项:

    允许通过 TCP 端口 443 到以下服务标记的出站流量。 将 <region> 实例替换为包含计算群集或实例的 Azure 区域。

    • MicrosoftContainerRegistry.<region>
    • AzureFrontDoor.FirstParty

后续步骤

有关详细信息,请参阅以下文章: