你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn 。
本文内容
我们提供了两个网络隔离特性。 一种是用于访问 Azure AI Foundry 中心的网络隔离。 另一种是中心和项目的计算资源的网络隔离(例如计算实例、无服务器和托管联机终结点)。本文档介绍关系图中突出显示的后者。 可以使用中心内置网络隔离来保护计算资源。
需要配置以下网络隔离配置。
选择网络隔离模式。 你有两个选项:允许 Internet 出站模式或仅允许已批准的出站模式。
如果使用具有仅允许已批准的出站模式的 Visual Studio Code 集成,请创建使用 Visual Studio Code 部分所述的 FQDN 出站规则。
如果在具有仅允许已批准的出站模式的模型中使用 HuggingFace 模型,请创建使用 HuggingFace 模型 部分所述的 FQDN 出站规则。
如果使用其中一种具有仅允许已批准出站模式的开放源代码模型,请按由 Azure AI 策展 部分所述创建 FQDN 出站规则。
网络隔离体系结构和隔离模式
启用托管虚拟网络隔离时,会为中心创建托管虚拟网络。 为中心创建的托管计算资源会自动使用此托管虚拟网络。 托管虚拟网络可以将专用终结点用于中心使用的 Azure 资源,例如 Azure 存储、Azure Key Vault 和 Azure 容器注册表。
托管虚拟网络的出站流量有三种不同的配置模式:
出站模式
说明
方案
允许 Internet 出站
允许来自托管虚拟网络的所有 Internet 出站流量。
你希望不受限制地访问 Internet 上的机器学习资源,例如 Python 包或预先训练的模型。1
仅允许已批准的出站
通过指定服务标记允许出站流量。
* 你希望最大程度地减少数据外泄的风险,但需要在专用环境中准备所有必需的机器学习项目。 * 你想要配置对已批准的服务、服务标记或 FQDN 列表的出站访问。
已禁用
入站和出站流量不受限制。
需要从中心进行公共入站和出站。
1 可以将出站规则与“仅允许已批准的出站 ”模式配合使用,使结果与使用“允许 Internet 出站连接”相同。 不同之处在于:
始终使用专用终结点访问 Azure 资源。
必须为需要允许的每个出站连接添加规则。
添加 FQDN 出站规则会增加成本,因为此规则类型使用 Azure 防火墙。 如果使用出站 FQDN 规则,则 Azure 防火墙费用将包含在计费中。 有关详细信息,请参阅定价 。
“仅允许批准的出站连接 ”的默认规则旨在最大程度地减少数据外泄的风险。 添加的任何出站规则都可能会增加风险。
托管虚拟网络预先配置了所需的默认规则 。 它还配置为与中心、中心的默认存储、容器注册表和密钥保管库建立专用终结点连接(如果这些组件配置为专用组件,或中心隔离模式设置为仅允许已批准的出站)。 选择隔离模式后,只需考虑可能需要添加的其他出站要求。
下图显示了配置为 允许 Internet 出站 的托管虚拟网络:
下图显示了配置为 仅允许已批准的出站 的托管虚拟网络:
注意
在此配置中,中心使用的存储、密钥保管库和容器注册表均标记为专用。 由于它们标记为专用,因此会使用专用终结点来与它们通信。
先决条件
在按照本文中的步骤操作之前,请确保满足以下先决条件:
Azure 订阅。 如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
必须为 Azure 订阅注册 Microsoft.Network 资源提供程序。 为托管虚拟网络创建专用终结点时,中心会使用此资源提供程序。
有关注册资源提供程序的信息,请参阅解决资源提供程序注册错误 。
部署托管网络时使用的 Azure 标识需要下列 Azure 基于角色的访问控制 (Azure RBAC) 操作来创建专用终结点:
Microsoft.MachineLearningServices/workspaces/privateEndpointConnections/read
Microsoft.MachineLearningServices/workspaces/privateEndpointConnections/write
Azure 订阅。 如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
必须为 Azure 订阅注册 Microsoft.Network 资源提供程序。 为托管虚拟网络创建专用终结点时,中心会使用此资源提供程序。
有关注册资源提供程序的信息,请参阅解决资源提供程序注册错误 。
部署托管网络时使用的 Azure 标识需要下列 Azure 基于角色的访问控制 (Azure RBAC) 操作来创建专用终结点:
Microsoft.MachineLearningServices/workspaces/privateEndpointConnections/read
Microsoft.MachineLearningServices/workspaces/privateEndpointConnections/write
Azure CLI 和 Azure CLI 的 ml
扩展。 有关详细信息,请参阅安装、设置和使用 CLI (v2) 。
本文中的 CLI 示例假定你使用的是 Bash(或兼容的)shell。 例如,从 Linux 系统或者适用于 Linux 的 Windows 子系统 。
本文中的 Azure CLI 示例使用 ws
表示中心的名称,并使用 rg
表示资源组的名称。 将命令用于 Azure 订阅时,请根据需要更改这些值。
Azure 订阅。 如果没有 Azure 订阅,请在开始操作前先创建一个免费帐户。 试用免费版或付费版 Azure 机器学习 。
必须为 Azure 订阅注册 Microsoft.Network 资源提供程序。 为托管虚拟网络创建专用终结点时,中心会使用此资源提供程序。
有关注册资源提供程序的信息,请参阅解决资源提供程序注册错误 。
部署托管网络时使用的 Azure 标识需要下列 Azure 基于角色的访问控制 (Azure RBAC) 操作来创建专用终结点:
Microsoft.MachineLearningServices/workspaces/privateEndpointConnections/read
Microsoft.MachineLearningServices/workspaces/privateEndpointConnections/write
Azure 机器学习 Python SDK v2。 有关 SDK 的详细信息,请参阅安装适用于 Azure 机器学习的 Python SDK v2 。
本文中的示例假定代码以以下 Python 开头。 此代码导入使用托管虚拟网络创建中心时所需的类,为 Azure 订阅和资源组设置变量,并创建 ml_client
:
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
Hub,
ManagedNetwork,
IsolationMode,
ServiceTagDestination,
PrivateEndpointDestination,
FqdnDestination
)
from azure.identity import DefaultAzureCredential
# Replace with the values for your Azure subscription and resource group.
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
# get a handle to the subscription
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group)
限制
Azure AI Foundry 目前不支持使用自有虚拟网络,它仅支持托管虚拟网络隔离。
一旦启用 Azure AI 的托管虚拟网络隔离,便无法禁用它。
托管虚拟网络使用专用终结点连接来访问专用资源。 不能同时为 Azure 资源(例如存储帐户)提供专用终结点和服务终结点。 我们建议在所有情况下都使用专用终结点。
删除 Azure AI 时,将删除托管虚拟网络。
数据外泄保护会自动为唯一已批准的出站模式启用。 如果将其他出站规则(例如添加到 FQDN),Microsoft 无法保证不会将数据外泄到这些出站目标。
使用 FQDN 出站规则会增加托管虚拟网络的成本,因为 FQDN 规则使用 Azure 防火墙。 有关详细信息,请参阅定价 。
FQDN 出站规则仅支持端口 80 和 443。
将计算实例与托管网络配合使用时,可以使用 az ml compute connect-ssh
命令通过 SSH 连接到计算实例。
如果将托管网络配置为 “仅允许已批准的出站”,则无法使用 FQDN 规则访问 Azure 存储帐户。 必须改用专用终结点。
提示
托管 VNet 的创建将推迟到创建计算资源或手动启动预配后。 允许自动创建时,创建第一个计算资源可能需要大约 30 分钟 ,因为此过程还需要预配网络。
创建新的中心 :
登录到 Azure 门户 ,然后从“创建资源”菜单中选择“Azure AI Foundry”。
选择“+ 新建 Azure AI” 。
在“基本信息”选项卡中,提供必填的信息。
在“网络”选项卡中,选择“Internet 出站专用”。
若要添加出站规则 ,请从“网络 ”选项卡中选择“添加用户定义的出站规则 ”。从“出站规则 ”边栏,提供以下信息:
规则名称 :规则的名称。 该名称对于此中心来说必须是唯一的。
目标类型 :当网络隔离是 Internet 出站专用时,专用终结点是唯一的选项。 中心托管虚拟网络不支持为所有 Azure 资源类型创建专用终结点。 请参阅 专用终结点 部分查看受支持资源的列表。
订阅 :包含要为其添加专用终结点的 Azure 资源的订阅。
资源组 :包含要为其添加专用终结点的 Azure 资源的资源组。
资源类型 :Azure 资源的类型。
资源名称 :Azure 资源的名称。
子资源 :Azure 资源类型的子资源。
选择“保存 ”以保存规则。 可以继续使用“添加用户定义的出站规则 ”来添加规则。
继续照常创建中心。
更新现有中心 :
登录到 Azure 门户 ,然后选择要为其启用托管虚拟网络隔离的中心。
依次选择“网络”、“Internet 出站专用”。
选择页面顶部的“保存 ”,将更改保存到托管虚拟网络。
若要配置允许 Internet 出站通信的托管虚拟网络,可以使用 --managed-network allow_internet_outbound
参数或包含以下条目的 YAML 配置文件:
managed_network:
isolation_mode: allow_internet_outbound
还可以为中心所依赖的其他 Azure 服务定义出站规则 。 这些规则定义允许 Azure 资源与托管虚拟网络进行安全通信的专用终结点 。 以下规则演示如何将专用终结点添加到 Azure Blob 资源。
managed_network:
isolation_mode: allow_internet_outbound
outbound_rules:
- name: added-perule
destination:
service_resource_id: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT_NAME>
spark_enabled: true
subresource_target: blob
type: private_endpoint
可以使用 az ml workspace create
或 az ml workspace update
命令配置托管虚拟网络:
创建新的中心 :
以下示例将创建新中心。 --managed-network allow_internet_outbound
参数为中心配置托管虚拟网络:
az ml workspace create --name ws --resource-group rg --kind hub --managed-network allow_internet_outbound
若要改为使用 YAML 文件创建中心,请使用 --file
参数并指定包含配置设置的 YAML 文件:
az ml workspace create --file hub.yaml --resource-group rg --name ws --kind hub
以下 YAML 示例定义具有托管虚拟网络的中心:
name: myhub
location: EastUS
managed_network:
isolation_mode: allow_internet_outbound
更新现有中心 :
警告
在更新现有工作区以使用托管虚拟网络之前,必须删除工作区的所有计算资源。 这包括计算实例、计算群集和托管联机终结点。
以下示例更新现有中心。 --managed-network allow_internet_outbound
参数为中心配置托管虚拟网络:
az ml workspace update --name ws --resource-group rg --kind hub --managed-network allow_internet_outbound
若要使用 YAML 文件更新现有中心,请使用 --file
参数并指定包含配置设置的 YAML 文件:
az ml workspace update --file hub.yaml --name ws --kind hub --resource-group MyGroup
以下 YAML 示例为中心定义托管虚拟网络。 它还演示了如何将专用终结点连接添加到中心使用的资源;在本例中,即 blob 存储的专用终结点:
name: myhub
managed_network:
isolation_mode: allow_internet_outbound
outbound_rules:
- name: added-perule
destination:
service_resource_id: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT_NAME>
spark_enabled: true
subresource_target: blob
type: private_endpoint
若要配置允许 Internet 出站通信的托管虚拟网络,请使用 ManagedNetwork
类定义具有 IsolationMode.ALLOW_INTERNET_OUTBOUND
的网络。 然后,可以使用 ManagedNetwork
对象创建新中心或更新现有中心。 若要定义中心所依赖的 Azure 服务的出站规则 ,请使用 PrivateEndpointDestination
类定义服务的新专用终结点。
创建新的中心 :
以下示例创建一个名为 myhub
的新中心,其中包含一个名为 myrule
的出站规则,该规则为 Azure Blob 存储添加专用终结点:
# Basic managed VNet configuration
network = ManagedNetwork(isolation_mode=IsolationMode.ALLOW_INTERNET_OUTBOUND)
# Hub configuration
ws = Hub(
name="myhub",
location="eastus",
managed_network=network
)
# Example private endpoint outbound to a blob
rule_name = "myrule"
service_resource_id = "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT_NAME>"
subresource_target = "blob"
spark_enabled = True
# Add the outbound
ws.managed_network.outbound_rules = [PrivateEndpointDestination(
name=rule_name,
service_resource_id=service_resource_id,
subresource_target=subresource_target,
spark_enabled=spark_enabled)]
# Create the hub
ws = ml_client.workspaces.begin_create(ws).result()
更新现有中心 :
以下示例演示如何为名为 myhub
的现有中心创建托管虚拟网络:
# Get the existing hub
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, "myhub")
ws = ml_client.workspaces.get()
# Basic managed VNet configuration
my_hub.managed_network = ManagedNetwork(isolation_mode=IsolationMode.ALLOW_INTERNET_OUTBOUND)
# Example private endpoint outbound to a blob
rule_name = "myrule"
service_resource_id = "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT_NAME>"
subresource_target = "blob"
spark_enabled = True
# Add the outbound
ws.managed_network.outbound_rules = [PrivateEndpointDestination(
name=rule_name,
service_resource_id=service_resource_id,
subresource_target=subresource_target,
spark_enabled=spark_enabled)]
# Update the hub
ml_client.workspaces.begin_update(ws)
提示
创建计算资源时,会自动预配托管 VNet。 允许自动创建时,创建第一个计算资源可能需要大约 30 分钟 ,因为此过程还需要预配网络。 如果配置了 FQDN 出站规则,则第一个 FQDN 规则会使预配时间增加 10 分钟 左右。
创建新的中心 :
登录到 Azure 门户 ,然后从“创建资源”菜单中选择“Azure AI Foundry”。
选择“+ 新建 Azure AI” 。
在“基本信息”选项卡中,提供必填的信息。
在“网络”选项卡中,选择“已批准出站专用”。
若要添加出站规则 ,请从“网络 ”选项卡中选择“添加用户定义的出站规则 ”。从“出站规则 ”边栏,提供以下信息:
规则名称 :规则的名称。 该名称对于此中心来说必须是唯一的。
目标类型 :专用终结点、服务标记或 FQDN。 服务标记和 FQDN 仅在网络隔离为专用且已批准的出站时可用。
如果目标类型为 专用终结点 ,请提供以下信息:
订阅 :包含要为其添加专用终结点的 Azure 资源的订阅。
资源组 :包含要为其添加专用终结点的 Azure 资源的资源组。
资源类型 :Azure 资源的类型。
资源名称 :Azure 资源的名称。
子资源 :Azure 资源类型的子资源。
提示
中心托管 VNet 不支持为所有 Azure 资源类型创建专用终结点。 请参阅 专用终结点 部分查看受支持资源的列表。
如果目标类型为 服务标记 ,请提供以下信息:
服务标记 :要添加到已批准出站规则的服务标记。
协议 :允许服务标记的协议。
端口范围 :服务标记允许的端口范围。
如果目标类型为 FQDN ,请提供以下信息:
FQDN 目标 :要添加到已批准的出站规则的完全限定域名。
选择“保存 ”以保存规则。 可以继续使用“添加用户定义的出站规则 ”来添加规则。
继续照常创建中心。
更新现有中心 :
登录到 Azure 门户 ,然后选择要为其启用托管虚拟网络隔离的中心。
依次选择“网络”、“已批准出站专用”。
选择页面顶部的“保存 ”,将更改保存到托管虚拟网络。
若要配置仅允许已批准的出站通信的托管虚拟网络,可以使用 --managed-network allow_only_approved_outbound
参数或包含以下条目的 YAML 配置文件:
managed_network:
isolation_mode: allow_only_approved_outbound
还可以定义出站规则以定义已批准的出站通信。 可以创建 service_tag
、fqdn
和 private_endpoint
类型的出站规则。 以下规则演示了如何将专用终结点添加到 Azure Blob 资源,将服务标记添加到 Azure 数据工厂,并将 FQDN 添加到 pypi.org
:
重要
仅当托管 VNet 配置为 allow_only_approved_outbound
时,为服务标记或 FQDN 添加出站这一操作才有效。
如果添加出站规则,则 Microsoft 无法保证数据不会外泄。
managed_network:
isolation_mode: allow_only_approved_outbound
outbound_rules:
- name: added-servicetagrule
destination:
port_ranges: 80, 8080
protocol: TCP
service_tag: DataFactory
type: service_tag
- name: add-fqdnrule
destination: 'pypi.org'
type: fqdn
- name: added-perule
destination:
service_resource_id: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT_NAME>
spark_enabled: true
subresource_target: blob
type: private_endpoint
可以使用 az ml workspace create
或 az ml workspace update
命令配置托管虚拟网络:
创建新的中心 :
以下示例使用 --managed-network allow_only_approved_outbound
参数配置托管虚拟网络:
az ml workspace create --name ws --resource-group rg --kind hub --managed-network allow_only_approved_outbound
以下 YAML 文件定义具有托管虚拟网络的中心:
name: myhub
location: EastUS
managed_network:
isolation_mode: allow_only_approved_outbound
若要使用 YAML 文件创建中心,请使用 --file
参数:
az ml workspace create --file hub.yaml --resource-group rg --name ws --kind hub
更新现有中心
警告
在更新现有工作区以使用托管虚拟网络之前,必须删除工作区的所有计算资源。 这包括计算实例、计算群集和托管联机终结点。
以下示例使用 --managed-network allow_only_approved_outbound
参数为现有中心配置托管虚拟网络:
az ml workspace update --name ws --resource-group rg --kind hub --managed-network allow_only_approved_outbound
以下 YAML 文件为中心定义托管虚拟网络。 它还演示如何将已批准的出站添加到托管虚拟网络。 在此示例中,为两个服务标记都添加了出站规则:
name: myhub_dep
managed_network:
isolation_mode: allow_only_approved_outbound
outbound_rules:
- name: added-servicetagrule
destination:
port_ranges: 80, 8080
protocol: TCP
service_tag: DataFactory
type: service_tag
- name: add-fqdnrule
destination: 'pypi.org'
type: fqdn
- name: added-perule
destination:
service_resource_id: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT_NAME>
spark_enabled: true
subresource_target: blob
type: private_endpoint
若要配置仅允许已批准的出站通信的托管虚拟网络,请使用 ManagedNetwork
类定义具有 IsolationMode.ALLOw_ONLY_APPROVED_OUTBOUND
的网络。 然后,可以使用 ManagedNetwork
对象创建新中心或更新现有中心。 若要定义 出站规则 ,请使用以下类:
目标
类
中心依赖的 Azure 服务
PrivateEndpointDestination
Azure 服务标记
ServiceTagDestination
完全限定的域名 (FQDN)
FqdnDestination
创建新的中心 :
以下示例创建一个名为 myhub
的新中心,其中包含多个出站规则:
myrule
- 为 Azure Blob 存储添加专用终结点。
datafactory
- 添加服务标记规则以与 Azure 数据工厂通信。
重要
仅当托管 VNet 配置为 IsolationMode.ALLOW_ONLY_APPROVED_OUTBOUND
时,为服务标记或 FQDN 添加出站这一操作才有效。
如果添加出站规则,则 Microsoft 无法保证数据不会外泄。
# Basic managed VNet configuration
network = ManagedNetwork(isolation_mode=IsolationMode.ALLOW_ONLY_APPROVED_OUTBOUND)
# Hub configuration
ws = Hub(
name="myhub",
location="eastus",
managed_network=network
)
# Append some rules
ws.managed_network.outbound_rules = []
# Example private endpoint outbound to a blob
rule_name = "myrule"
service_resource_id = "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT_NAME>"
subresource_target = "blob"
spark_enabled = True
ws.managed_network.outbound_rules.append(
PrivateEndpointDestination(
name=rule_name,
service_resource_id=service_resource_id,
subresource_target=subresource_target,
spark_enabled=spark_enabled
)
)
# Example service tag rule
rule_name = "datafactory"
service_tag = "DataFactory"
protocol = "TCP"
port_ranges = "80, 8080-8089"
ws.managed_network.outbound_rules.append(
ServiceTagDestination(
name=rule_name,
service_tag=service_tag,
protocol=protocol,
port_ranges=port_ranges
)
)
# Example FQDN rule
ws.managed_network.outbound_rules.append(
FqdnDestination(
name="fqdnrule",
destination="pypi.org"
)
)
# Create the hub
ws = ml_client.workspaces.begin_create(ws).result()
更新现有中心 :
以下示例演示如何为名为 myhub
的现有 Azure 机器学习中心创建托管虚拟网络。 该示例还为托管虚拟网络添加了多个出站规则:
myrule
- 为 Azure Blob 存储添加专用终结点。
datafactory
- 添加服务标记规则以与 Azure 数据工厂通信。
提示
仅当托管 VNet 配置为 IsolationMode.ALLOW_ONLY_APPROVED_OUTBOUND
时,为服务标记或 FQDN 添加出站这一操作才有效。
# Get the existing hub
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, "myhub")
ws = ml_client.workspaces.get()
# Basic managed VNet configuration
ws.managed_network = ManagedNetwork(isolation_mode=IsolationMode.ALLOW_ONLY_APPROVED_OUTBOUND)
# Append some rules
ws.managed_network.outbound_rules = []
# Example private endpoint outbound to a blob
rule_name = "myrule"
service_resource_id = "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT_NAME>"
subresource_target = "blob"
spark_enabled = True
ws.managed_network.outbound_rules.append(
PrivateEndpointDestination(
name=rule_name,
service_resource_id=service_resource_id,
subresource_target=subresource_target,
spark_enabled=spark_enabled
)
)
# Example service tag rule
rule_name = "datafactory"
service_tag = "DataFactory"
protocol = "TCP"
port_ranges = "80, 8080-8089"
ws.managed_network.outbound_rules.append(
ServiceTagDestination(
name=rule_name,
service_tag=service_tag,
protocol=protocol,
port_ranges=port_ranges
)
)
# Example FQDN rule
ws.managed_network.outbound_rules.append(
FqdnDestination(
name="fqdnrule",
destination="pypi.org"
)
)
# Update the hub
ml_client.workspaces.begin_update(ws)
手动预配托管 VNet
创建计算实例时,会自动预配托管虚拟网络。 依赖于自动预配时,创建第一个计算实例可能需要大约 30 分钟,因为此过程还需要预配网络 。 如果配置了 FQDN 出站规则(仅适用于“仅允许批准的连接”模式),则第一个 FQDN 规则会使预配时间大约增加 10 分钟 。 如果在托管网络中有大量出站规则需要预配,则完成预配可能需要较长的时间。 预配时间增加可能会导致第一个计算实例创建超时。
若要减少等待时间并避免潜在的超时错误,建议手动预配托管网络。 然后等待预配完成后再创建计算实例。
你也可以使用 provision_network_now
标志在中心创建期间预配托管网络。 此标志目前为预览版。
注意
要创建联机部署,必须手动预配托管网络,或先创建一个计算实例,该实例将自动预配托管网络。
在中心创建期间,选择“在创建时主动预配托管网络” 来预配托管网络。 预配了虚拟网络后,就会从网络资源(例如专用终结点)产生费用。 此配置选项仅在工作区创建期间可用,并且目前为预览版。
以下示例演示如何在中心创建期间预配托管虚拟网络。 --provision-network-now
标志目前为预览版。
az ml workspace create -n myworkspace -g my_resource_group --kind hub --managed-network AllowInternetOutbound --provision-network-now
以下示例演示如何预配托管虚拟网络。
az ml workspace provision-network -g my_resource_group -n my_ai_hub_name
若要验证预配是否已完成,请使用以下命令:
az ml workspace show -n my_ai_hub_name -g my_resource_group --query managed_network
以下示例演示如何在中心创建期间预配托管虚拟网络。 --provision-network-now
标志目前为预览版。
az ml workspace create -n myworkspace -g my_resource_group --managed-network AllowInternetOutbound --provision-network-now
以下示例演示如何预配托管虚拟网络:
# Connect to a workspace named "myworkspace"
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace_name="myAIHubName")
provision_network_result = ml_client.workspaces.begin_provision_network(workspace_name=ai_hub_name).result()
若要验证 AI 中心是否已完成预配,请使用 ml_client.workspaces.get()
获取 AI 中心信息。 managed_network
属性包含托管网络的状态。
ws = ml_client.workspaces.get()
print(ws.managed_network.status)
管理出站规则
登录到 Azure 门户 ,然后选择要为其启用托管虚拟网络隔离的中心。
选择“网络”。 可通过“Azure AI 出站访问 ”部分管理出站规则。
若要列出中心的托管虚拟网络出站规则,请使用以下命令:
az ml workspace outbound-rule list --workspace-name myhub --resource-group rg
若要查看托管虚拟网络出站规则的详细信息,请使用以下命令:
az ml workspace outbound-rule show --rule rule-name --workspace-name myhub --resource-group rg
若要从托管虚拟网络中删除出站规则,请使用以下命令:
az ml workspace outbound-rule remove --rule rule-name --workspace-name myhub --resource-group rg
以下示例演示如何管理名为 myhub
的中心的出站规则:
# Connect to the hub
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace_name="myhub")
# Specify the rule name
rule_name = "<some-rule-name>"
# Get a rule by name
rule = ml_client._workspace_outbound_rules.get(resource_group, ws_name, rule_name)
# List rules for a hub
rule_list = ml_client._workspace_outbound_rules.list(resource_group, ws_name)
# Delete a rule from a hub
ml_client._workspace_outbound_rules.begin_remove(resource_group, ws_name, rule_name).result()
所需规则列表
专用终结点 :
当托管虚拟网络的隔离模式为 Allow internet outbound
时,专用终结点出站规则将自动创建为已禁用公用网络访问 的中心和相关资源(密钥保管库、存储帐户、容器注册表、中心)的托管虚拟网络中的所需规则。
当托管虚拟网络的隔离模式为 Allow only approved outbound
时,专用终结点出站规则将自动创建为中心和相关资源(密钥保管库、存储帐户、容器注册表、Azure AI 中心)的托管虚拟网络中的所需规则,无论这些资源的公用网络访问模式如何 。
出站服务标记规则:
AzureActiveDirectory
Azure Machine Learning
BatchNodeManagement.region
AzureResourceManager
AzureFrontDoor.FirstParty
MicrosoftContainerRegistry
AzureMonitor
入站服务标记规则:
特定于方案的出站规则列表
场景:访问公共机器学习包
若要允许安装用于训练和部署的 Python 包,请添加出站 FQDN 规则以允许以下主机名的出站流量:
注意
这不是 Internet 上所有 Python 资源所需的完整主机列表,这只是最常使用的主机列表。 例如,如果需要访问 GitHub 存储库或其他主机,则必须标识并添加该方案所需的主机。
主机名
用途
anaconda.com
*.anaconda.com
用于安装默认包。
*.anaconda.org
用于获取存储库数据。
pypi.org
用于列出默认索引的依赖项(如果有),索引不会被用户设置覆盖。 如果索引被覆盖,则还必须允许 *.pythonhosted.org
。
pytorch.org
*.pytorch.org
由基于 PyTorch 的一些示例使用。
*.tensorflow.org
由基于 Tensorflow 的一些示例使用。
方案:使用 Visual Studio Code
Visual Studio Code 依赖于特定的主机和端口来建立远程连接。
主机
如果计划将 Visual Studio Code 与中心配合使用,请添加出站 FQDN 规则以允许流量流向以下主机:
*.vscode.dev
vscode.blob.core.windows.net
*.gallerycdn.vsassets.io
raw.githubusercontent.com
*.vscode-unpkg.net
*.vscode-cdn.net
*.vscodeexperiments.azureedge.net
default.exp-tas.com
code.visualstudio.com
update.code.visualstudio.com
*.vo.msecnd.net
marketplace.visualstudio.com
pkg-containers.githubusercontent.com
github.com
端口
必须允许网络流量流向端口 8704 至 8710。 VS Code 服务器会在此范围内动态选择第一个可用端口。
方案:使用 HuggingFace 模型
如果计划将 HuggingFace 模型 与中心配合使用,请添加出站 FQDN 规则以允许流量流向以下主机:
docker.io
*.docker.io
*.docker.com
production.cloudflare.docker.com
cnd.auth0.com
cdn-lfs.huggingface.co
应用场景:由 Azure AI 策展
这些模型涉及在运行时动态安装依赖项,并要求出站 FQDN 规则允许流量流向以下主机:
*.anaconda.org *.anaconda.com anaconda.com pypi.org *.pythonhosted.org *.pytorch.org pytorch.org
专用终结点
以下 Azure 服务当前支持专用终结点:
Azure AI Foundry 中心
Azure AI 搜索
Azure AI 服务
Azure API 管理
Azure 容器注册表
Azure Cosmos DB(所有子资源类型)
Azure 数据工厂
Azure Database for MariaDB
Azure Database for MySQL
Azure Database for PostgreSQL 单一服务器
Azure Database for PostgreSQL 灵活服务器
Azure Databricks
Azure 事件中心
Azure Key Vault
Azure 机器学习
Azure 机器学习注册表
Azure Redis 缓存
Azure SQL Server
Azure 存储(所有子资源类型)
创建专用终结点时,需要提供终结点连接到的资源类型 和子资源 。 某些资源有多个类型和子资源。 有关详细信息,请参阅什么是专用终结点 。
为中心依赖项资源(例如 Azure 存储、Azure 容器注册表和 Azure Key Vault)创建专用终结点时,该资源可以位于不同的 Azure 订阅中。 但是,资源必须与中心位于同一租户中。
如果目标资源是前面列出的 Azure 资源,则会自动为连接创建专用终结点。 专用终结点需要有效的目标 ID。 连接的有效目标 ID 可以是父资源的 Azure 资源管理器 ID。 连接的目标中或 metadata.resourceid
中也需要目标 ID。 有关连接的详细信息,请参阅如何在 Azure AI Foundry 门户添加新连接 。
为仅允许已批准的出站选择 Azure 防火墙版本(预览版)
如果 FQDN 出站规则是在处于“仅允许已批准的出站” 模式时创建的,则会部署 Azure 防火墙。 Azure 防火墙的费用将包含在账单中。 默认情况下,会创建“标准”版的 Azure 防火墙 。 (可选)可以选择使用“基本” 版。 可以根据需要更改使用的防火墙版本。 若要确定哪个版本最适合你,请访问选择合适的 Azure 防火墙版本 。
重要
在添加出站 FQDN 规则之前,不会创建防火墙。 有关定价的详细信息,请参阅 Azure 防火墙定价 ,并查看标准版的价格 。
使用以下选项卡了解如何为托管虚拟网络选择防火墙版本。
选择“仅允许已批准的出站”模式后,将显示一个用于选择 Azure 防火墙版本 (SKU) 的选项。 选择“标准” 以使用标准版本,或者选择“基本” 以使用基本版本。 选择“保存”以保存配置 。
若要从 CLI 配置防火墙版本,请使用 YAML 文件并指定 firewall_sku
。 以下示例演示了一个 YAML 文件,该文件将防火墙 SKU 设置为 basic
:
name: test-ws
resource_group: test-rg
location: eastus2
managed_network:
isolation_mode: allow_only_approved_outbound
outbound_rules:
- category: required
destination: 'contoso.com'
name: contosofqdn
type: fqdn
firewall_sku: basic
tags: {}
若要从 Python SDK 配置防火墙版本,请设置 ManagedNetwork
对象的 firewall_sku
属性。 以下示例演示如何将防火墙 SKU 设置为 basic
:
network = ManagedNetwork(isolation_mode=IsolationMode.ALLOW_INTERNET_OUTBOUND,
firewall_sku='basic')
定价
中心托管虚拟网络功能是免费的。 但是,需要为托管虚拟网络使用的以下资源付费:
Azure 专用链接 - 用于保护托管虚拟网络与 Azure 资源之间的通信的专用终结点依赖于 Azure 专用链接。 有关定价详细信息,请参阅 Azure 专用链接定价 。
FQDN 出站规则 - FQDN 出站规则使用 Azure 防火墙实现。 如果使用出站 FQDN 规则,则 Azure 防火墙费用将包含在计费中。 默认情况下会使用标准版本的 Azure 防火墙。 有关选择基本版本的信息,请参阅选择 Azure 防火墙版本 。 Azure 防火墙是按中心预配的。
重要
在添加出站 FQDN 规则之前,不会创建防火墙。 如果不使用 FQDN 规则,则无需支付 Azure 防火墙费用。 有关定价的详细信息,请参阅 Azure 防火墙定价 。
相关内容