你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
规划 Azure 机器学习中的网络隔离
本文介绍如何规划 Azure 机器学习的网络隔离以及我们的建议。 本文面向想要设计网络体系结构的 IT 管理员。
什么是网络隔离?
网络隔离是一种安全策略,即将网络划分为单独的网段或子网,且它们均各自充当一个独立的小型网络。 此方法有助于在较大的网络结构中提高安全性和性能。 大型企业需要实施网络隔离,以保护其资源免受未经授权的访问、篡改或泄露数据和模型。 他们还需要遵守其所在行业和领域的相关法规和标准。
入站和出站访问
在 Azure 机器学习中,必须在三个方面考虑网络隔离:
- 对 Azure 机器学习工作区的入站访问。 例如,要让数据科学家可以安全地访问工作区。
- 从 Azure 机器学习工作区进行的出站访问。 例如,访问其他 Azure 服务。
- 从 Azure 机器学习计算资源进行的出站访问。 例如,访问数据源、Python 包存储库或其他资源。
下图分解了入站和出站访问。
对 Azure 机器学习的入站访问
对受保护 Azure 机器学习工作区的入站访问将使用公用网络访问 (PNA) 标志进行设置。 PNA 标志设置将决定工作区是否需要通过专用终结点进行访问。 还有另外一个设置也会影响是选择公用还是专用终结点,即“已从所选 IP 地址启用”。 此设置允许从指定的 IP 地址访问工作区。 有关此功能的详细信息,请参阅仅启用从 Internet IP 范围进行公共访问。
出站访问
Azure 机器学习的网络隔离涉及平台即服务 (PaaS) 和基础结构即服务 (IaaS) 组件。 可以使用专用链接隔离 PaaS 服务,例如 Azure 机器学习工作区、存储、密钥保管库、容器注册表和监视器。 可以将 IaaS 计算服务(例如用于 AI 模型训练的计算实例/群集)和 Azure Kubernetes 服务 (AKS) 或托管的联机终结点(用于 AI 模型评分)注入虚拟网络,并使用专用链接与 PaaS 服务通信。 下图是 IaaS 和 PaaS 组件的一个示例。
从服务到其他 Azure PaaS 资源的出站访问
对于从 Azure 机器学习服务到其他 PaaS 服务的出站访问,将通过受信任的服务为其提供保护。 你可以向一部分受信任的 Azure 服务授予对 Azure 机器学习的访问权限,同时维护针对其他应用的网络规则。 这些受信任的服务将使用托管标识对 Azure 机器学习服务进行身份验证。
从计算到 Internet 和其他 Azure PaaS 资源的出站访问
IaaS 的组成部分包括计算实例/群集等算资源以及 Azure Kubernetes 服务 (AKS) 或托管联机终结点。 对于这些 IaaS 资源,将通过防火墙保护对 Internet 的出站访问,通过专用链接和专用终结点保护对其他 PaaS 资源的出站访问。 托管虚拟网络可以简化从计算进行的出站访问的控制设置。
如果不使用托管虚拟网络,你可以使用自己的虚拟网络和子网集来保护出站控制。 如果你具有一个独立的虚拟网络,则使用网络安全组进行配置非常简单。 但是,你可能有一个中心辐射型或网状型网络体系结构、防火墙、网络虚拟设备、代理和用户定义的路由。 在任一情况下,请确保允许使用网络安全组件进行入站和出站操作。
在此图中,你有一个中心辐射型网络体系结构。 分支虚拟网络具有针对 Azure 机器学习的资源。 中心虚拟网络具有一个防火墙,可控制从虚拟网络进行的 Internet 出站访问。 在这种情况下,防火墙必须允许对所需资源进行出站访问,分支虚拟网络中的计算资源必须能够访问防火墙。
提示
在该图中,计算实例和计算群集配置为无公共 IP。 如果改用具有公共 IP 的计算实例或群集,则需要使用网络安全组 (NSG) 和用户定义的路由来允许来自 Azure 机器学习服务标记的入站,以跳过防火墙。 此入站流量来自 Microsoft 服务(Azure 机器学习)。 但是,建议使用无公共 IP 选项来删除此入站要求。
用于保护从计算进行的出站访问的网络隔离产品/服务
现在,我们了解了需要保护哪些访问权限,接下来让我们看看如何使用网络隔离来保护机器学习工作区。 Azure 机器学习提供网络隔离选项,用于保护从计算资源进行的出站访问。
托管网络隔离(建议)
使用托管虚拟网络可以更轻松地配置网络隔离。 托管虚拟网络会自动保护托管虚拟网络中的工作区和托管计算资源。 可以为工作区依赖的其他 Azure 服务(例如 Azure 存储帐户)添加专用终结点连接。 根据需要,可以允许所有出站流量进入公共网络,也可以只允许你批准的出站流量进入公共网络。 将自动为托管虚拟网络启用 Azure 机器学习服务所需的出站流量。 建议使用工作区托管网络隔离实现内置无摩擦的网络隔离方法。 我们有两种模式:允许 Internet 出站模式或仅允许已批准的出站模式。
注意
使用托管虚拟网络保护工作区时,可以为从工作区和托管计算进行的出站访问提供网络隔离。 你创建和管理的 Azure 虚拟网络用于对工作区的入站访问提供网络隔离。 例如,在 Azure 虚拟网络中创建工作区的专用终结点。 连接到虚拟网络的任何客户端都可以通过专用终结点访问工作区。 在托管计算上运行作业时,托管网络会限制计算可以访问的内容。 此配置不同于自定义虚拟网络产品/服务,后者还需要设置虚拟网络并将所有计算设置到该虚拟网络中。
允许 Internet 出站模式:如果你想要允许你的机器学习工程师自由访问 Internet,请使用此选项。 可以创建其他专用终结点出站规则,让他们访问你在 Azure 上的专用资源。
仅允许批准的出站模式:如果你想要最大程度地降低数据外泄风险并控制你的机器学习工程师可以访问的内容,请使用此选项。 你可以使用专用终结点、服务标记和 FQDN 控制出站规则。
自定义网络隔离
如果你有阻止使用托管虚拟网络的特定要求或公司策略,则可以使用 Azure 虚拟网络进行网络隔离。
下图是我们推荐使用的体系结构,其将所有资源设为专用,但允许从虚拟网络进行出站 Internet 访问。 此图描述了以下体系结构:
- 将所有资源放在同一区域。
- 中心虚拟网络,其中包含防火墙和自定义 DNS 设置。
- 分支虚拟网络,其中包含以下资源:
- 训练子网包含用于训练 ML 模型的计算实例和群集。 这些资源配置为无公共 IP。
- 评分子网包含 AKS 群集。
- “pe”子网包含专用终结点,这些终结点连接到工作区和工作区使用的专用资源(存储、密钥保管库、容器注册表等)
- 若要使用自定义虚拟网络保护托管联机终结点,请启用旧的托管联机终结点托管虚拟网络。 我们不建议使用此方法。
此体系结构会在网络安全和 ML 工程师的工作效率之间进行平衡。
注意
如果要免除防火墙要求,则可以使用网络安全组和 Azure 虚拟网络 NAT 来允许从专用计算资源进行 Internet 出站访问。
防止数据外泄
此图显示了推荐的体系结构,其将所有资源设为专用,并控制出站目标以防止数据外泄。 在生产环境中使用 Azure 机器学习处理敏感数据时,建议使用此体系结构。 此图描述了以下体系结构:
- 将所有资源放在同一区域。
- 中心虚拟网络,其中包含防火墙。
- 除了服务标记外,防火墙还使用 FQDN 来防止数据外泄。
- 分支虚拟网络,其中包含以下资源:
- 训练子网包含用于训练 ML 模型的计算实例和群集。 这些资源配置为无公共 IP。 此外,还部署了服务终结点和服务终结点策略来防止数据外泄。
- 评分子网包含 AKS 群集。
- “pe”子网包含专用终结点,这些终结点连接到工作区和工作区使用的专用资源(存储、密钥保管库、容器注册表等)
- 托管联机终结点使用工作区的专用终结点来处理传入请求。 专用终结点还用于允许托管联机终结点部署访问专用存储。
网络隔离选项对比
托管网络隔离和自定义网络隔离是类似的产品/服务。 下表描述了这两种产品/服务在设置方面的所有相似和差异之处。 二者设置中的一个关键区别是计算本身的虚拟网络托管在何处。 对于自定义网络隔离,计算的虚拟网络位于你的租户中,而对于托管网络隔离,计算的虚拟网络位于 Microsoft 租户中。
相似性 | 差异 |
---|---|
- 网络专属于你,不会与任何其他客户共享。
- 数据在虚拟网络中受到保护。 - 使用出站规则完全控制流出量。 - 所需的 ServiceTags。 |
- 托管虚拟网络的位置;自定义网络隔离是在你的租户中,而托管网络隔离是在 Microsoft 租户中。 |
为了在确定最适合你的应用场景的网络设置时做出正确决策,请考虑要使用 Azure 机器学习中的哪些功能。 有关我们各网络隔离产品/服务之间的差异的详细信息,请参阅比较网络隔离配置。
配置比较
托管网络(建议) | 自定义网络 | |
---|---|---|
优点 | - 最大程度地减少设置和维护开销。
- 支持托管联机终结点。 - 支持无服务器 spark。 - 可以访问位于本地或自定义虚拟网络中的 HTTP 终结点资源。 - 侧重于开发新功能。 |
- 根据要求自定义网络。
- 自带非 Azure 资源。 - 连接到本地资源。 |
限制 | - Azure 防火墙和 FQDN 规则产生的额外费用。
- 不支持对虚拟网络防火墙和 NSG 规则进行日志记录。 - 不支持访问非 HTTPS 终结点资源。 |
- 新功能支持可能会延迟。
-不支持托管联机终结点。 - 不支持无服务器 spark。 - 不支持基础模型。 - 不支持无代码 MLFlow。 - 实施复杂性。 - 维护开销。 |
使用公共工作区
如果你可以将 Microsoft Entra ID 身份验证和授权与条件访问配合使用,那么你可以使用公共工作区。 公共工作区具有一些允许在专用存储帐户中使用数据的功能。 建议尽可能使用专用工作区。
重要注意事项
计算实例上的专用链接资源和应用程序的 DNS 解析
如果你自己的 DNS 服务器托管在 Azure 或本地,则需要在 DNS 服务器中创建条件转发器。 条件转发器会为所有已启用专用链接的 PaaS 服务将 DNS 请求发送到 Azure DNS。 有关详细信息,请参阅文章 DNS 配置方案和特定于 Azure 机器学习的 DNS 配置。
数据外泄防护
我们有两种类型的出站:只读和读/写。 只读出站权限不会给恶意行动者带来可乘之机,但读/写出站权限可以。 在本例中,Azure 存储和 Azure Frontdoor(frontdoor.frontend 服务标记)是读/写出站权限。
你可以使用我们的数据外泄防护解决方案来缓解此数据外泄风险。 我们将服务终结点策略与 Azure 机器学习别名结合使用,以仅允许出站到 Azure 机器学习托管存储帐户。 你不需要在防火墙上对存储开放出站。
在此图中,计算实例和群集需要访问 Azure 机器学习托管存储帐户才能获取设置脚本。 可以将服务终结点策略与 Azure 机器学习别名结合使用,以便仅允许存储访问 Azure 机器学习存储帐户,而不是对存储开放出站。
托管联机终结点
托管联机终结点的入站和出站通信安全性是分开配置的。
- 入站通信:Azure 机器学习使用专用终结点来保护与托管联机终结点的入站通信。 若要防止对终结点进行公共访问,请将终结点的 public_network_access 标志设置为禁用。 禁用此标志后,只能通过你的 Azure 机器学习工作区的专用终结点访问你的终结点,并且无法从公用网络访问该终结点。
- 出站通信:为了保护从部署到资源的出站通信,Azure 机器学习使用工作区托管虚拟网络。 部署需要在工作区托管虚拟网络中创建,这样它才可以使用工作区托管虚拟网络的专用终结点进行出站通信。
以下体系结构图显示了通信如何通过专用终结点流向托管联机终结点。 来自客户端虚拟网络的传入评分请求通过工作区的专用终结点流向托管联机终结点。 从部署到服务的出站通信通过从工作区的托管虚拟网络到这些服务实例的专用终结点进行处理。
有关详细信息,请参阅托管联机终结点的网络隔离。
主网络中的专用 IP 地址不足
Azure 机器学习需要专用 IP;每个计算实例、计算群集节点和专用终结点一个 IP。 如果使用 AKS,则还需要许多 IP。 与本地网络连接的中心辐射型网络可能没有足够的专用 IP 地址空间。 在这种情况下,可以将隔离的、非对等互连的 VNet 用于 Azure 机器学习资源。
在此图中,主虚拟网络需要专用终结点的 IP。 你可以为具有较大地址空间的多个 Azure 机器学习工作区提供中心辐射型 VNet。 此体系结构的缺点是专用终结点的数量增加了一倍。
网络策略强制实施
如果要通过创建自助工作区和计算资源来控制网络隔离参数,则可以使用内置策略;或者也可以创建自定义策略,以实现更精细的控制。 有关策略的详细信息,请参阅 Azure Policy 法规合规性控制。
相关内容
有关使用托管虚拟网络的详细信息,请参阅以下文章:
有关使用自定义虚拟网络的详细信息,请参阅以下文章: