本文內容
我們提供兩個網路隔離層面。 其中一個是存取 Azure AI Foundry 中樞的網路隔離。 另一個是適用於中樞和專案計算資源 (例如計算執行個體、無伺服器和受控線上端點) 的網路隔離。本文件會解釋在下圖中醒目顯示的後者。 您可以使用中樞內建網路隔離來保護計算資源。
您必須設定下列網路隔離設定。
選擇網路隔離模式。 您有兩個選項:允許網際網路輸出模式,或是僅允許核准的輸出模式。
如果您是以僅允許核准的輸出模式使用 Visual Studio Code 整合,請建立使用 Visual Studio Code 一節所述的 FQDN 輸出規則。
如果您是以僅允許核准的輸出模式使用 HuggingFace 模型,請建立使用 HuggingFace 模型 一節所述的 FQDN 輸出規則。
如果您是以僅允許核准的輸出模式使用其中一種開放原始碼模型,請建立由 Azure AI 策展 一節中所述的 FQDN 輸出規則。
網路隔離架構和隔離模式
啟用受控虛擬網路隔離時,即會為中樞建立受控虛擬網路。 您為中樞建立的受控計算資源會自動使用這個受控虛擬網路。 針對中樞使用的 Azure 資源 (例如 Azure 儲存體、Azure Key Vault 和 Azure Container Registry),受控虛擬網路可以使用私人端點。
來自受控虛擬網路的輸出流量有三種不同的設定模式:
輸出模式
描述
案例
允許網際網路輸出
允許來自受控虛擬網路的所有網際網路輸出流量。
您想要不受限制地存取網際網路上的機器學習資源,例如 Python 套件或預先定型的模型。1
僅允許核准的輸出
透過指定服務標籤來允許輸出流量。
* 您想要將資料外洩的風險降到最低,但必須在私人環境中準備所有必要的機器學習成品。 * 您要設定已核准的服務、服務標籤或 FQDN 清單的輸出存取。
停用
輸入和輸出流量不受限制。
您希望允許中樞的公開輸入和輸出。
1 您可以使用輸出規則搭配 [僅允許核准的輸出] 模式,以達到與使用允許網際網路輸出相同的結果。 差異包括:
一律使用私人端點來存取 Azure 資源。
您必須針對每一個允許輸出連線新增規則。
新增 FQDN 輸出規則會增加您的成本 ,因為此規則類型使用 Azure 防火牆。 如果您使用輸出 FQDN 規則,Azure 防火牆的費用會包含在您的計費中。 如需詳細資訊,請參閱定價 。
[僅允許核准的輸出] 的預設規則設計目的是為了將資料外洩的風險降到最低。 您新增的任何輸出規則都可能會增加風險。
受控虛擬網路已預先設定必要的預設規則 。 如果規則設定為私人,則也要針對中樞、中樞預設儲存體、容器登錄和金鑰保存庫的私人端點連線設定這些規則,否則中樞隔離模式會設定為僅允許核准的輸出。 選擇隔離模式之後,您只需要考慮可能需要新增的其他輸出需求。
下圖顯示設定為 [允許網際網路輸出] 的受控虛擬網路:
下圖顯示設定為 [僅允許核准的輸出] 的受控虛擬網路:
注意
在此設定中,中樞使用的儲存體、金鑰保存庫和容器登錄會標幟為私人。 由於它們標幟為私人,因此會使用私人端點與其通訊。
必要條件
遵循本文中的步驟之前,請確定您已滿足下列必要條件:
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 (或相容的) 殼層。 例如,從 Linux 系統或 Windows 子系統 Linux 版 。
本文中的 Azure CLI 範例會使用 ws
來表示中樞的名稱,以及 rg
來表示資源群組的名稱。 使用命令搭配您的 Azure 訂用帳戶時,請視需要變更這些值。
Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。 試用免費或付費版本的 Azure Machine Learning 。
您必須為 Azure 訂用帳戶註冊 Microsoft.Network 資源提供者。 建立受控虛擬網路的私人端點時,中樞會使用此資源提供者。
如需有關註冊資源提供者的詳細資訊,請參閱解決資源提供者註冊的錯誤 。
部署受控網路時所使用的 Azure 身分識別需要下列 Azure 角色型存取控制 (Azure RBAC) 動作來建立私人端點:
Microsoft.MachineLearningServices/workspaces/privateEndpointConnections/read
Microsoft.MachineLearningServices/workspaces/privateEndpointConnections/write
Azure Machine Learning Python SDK v2。 如需 SDK 的詳細資訊,請參閱 安裝適用於 Azure Machine Learning 的 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] 。
在 [基本] 索引標籤上提供必要資訊。
從 [網路] 索引標籤中,選取 [具有網際網路輸出的私人] 。
若要新增「輸出規則」 ,請從 [網路] 索引標籤選取 [新增使用者定義的輸出規則] 。在 [輸出規則] 資訊看板提供下列資訊:
規則名稱 :規則的名稱。 此名稱不可與此中樞內其他名稱重複。
目的地類型 :當網路隔離是網際網路輸出的私人時,私人端點是唯一的選項。 中樞受控虛擬網路不支援為所有 Azure 資源類型建立私人端點。 如需支援的資源清單,請參閱私人端點 一節。
訂用帳戶 :包含您要新增私人端點的 Azure 資源的訂用帳戶。
資源群組 :包含您要新增私人端點的 Azure 資源的資源群組。
資源類型 :Azure 資源的類型。
資源名稱 :Azure 資源的名稱。
子資源 :Azure 資源類型的子資源。
選取儲存 以儲存規則。 您可以繼續使用 [新增使用者定義的輸出規則] 來新增規則。
繼續依據一般程序建立中樞。
更新現有的中樞 :
登入 Azure 入口網站 ,然後選取您想要啟用受控虛擬網路隔離的中樞。
選取 [網路] ,然後選取 [具有網際網路輸出的私人] 。
選取頁面頂端的 [儲存] ,以儲存對受控虛擬網路的變更。
若要設定允許網際網路輸出通訊的受控虛擬網路,您可以使用 --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
若要設定允許網際網路輸出通訊的受控虛擬網路,請使用 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 Data Factory,以及將 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
物件來建立新的中樞,或更新現有的中樞。 若要定義輸出規則 ,請使用下列類別:
Destination
類別
中樞所依賴的 Azure 服務
PrivateEndpointDestination
Azure 服務標籤
ServiceTagDestination
完整網域名稱 (FQDN)
FqdnDestination
建立新的中樞 :
下列範例會建立名為 myhub
的新中樞,其中包含數個輸出規則:
myrule
- 為 Azure Blob 存放區新增私人端點。
datafactory
- 新增服務標籤規則以與 Azure Data Factory 通訊。
重要
只有在受控 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 Machine Learning 中樞建立受控虛擬網路。 此範例也會為受控虛擬網路新增數個輸出規則:
myrule
- 為 Azure Blob 存放區新增私人端點。
datafactory
- 新增服務標籤規則以與 Azure Data Factory 通訊。
提示
只有在受控 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
時,將會從中樞和已停用公用網路存取 的相關聯資源 (Key Vault、儲存體帳戶、Azure Container Registry、中樞) 的受控虛擬網路自動建立私人端點輸出規則作為必要規則。
當受控虛擬網路的隔離模式為 Allow only approved outbound
時,將會從中樞和相關聯資源 (而不論這些資源的網路存取模式為何) (Key Vault、儲存體帳戶、Azure Container Registry、中樞) 的受控虛擬網路自動建立私人端點輸出規則作為必要規則。
輸出 服務標籤規則:
AzureActiveDirectory
Azure Machine Learning
BatchNodeManagement.region
AzureResourceManager
AzureFrontDoor.FirstParty
MicrosoftContainerRegistry
AzureMonitor
輸入 服務標籤規則:
案例特定輸出規則的清單
案例:存取公用機器學習套件
若要允許安裝 Python 套件以進行定型和部署 ,請新增輸出 FQDN 規則以允許流量傳送至下列主機名稱:
注意
這不是網際網路上所有 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 服務:
AI Foundry 中樞
Azure AI 搜尋服務
Azure AI 服務
Azure API 管理
Azure Container Registry
Azure Cosmos DB (所有子資源類型)
Azure Data Factory
適用於 MariaDB 的 Azure 資料庫
適用於 MySQL 的 Azure 資料庫
適用於 PostgreSQL 的 Azure 資料庫單一伺服器
適用於 PostgreSQL 的 Azure 資料庫彈性伺服器
Azure Databricks
Azure 事件中樞
Azure Key Vault
Azure Machine Learning
Azure Machine Learning 登錄
Azure Redis 快取
Azure SQL Server
Azure 儲存體 (所有子資源類型)
當您建立私人端點時,您會提供端點所連線的資源類型 和子資源 。 某些資源有多個類型和子資源。 如需詳細資訊,請參閱什麼是私人端點 。
當您為中樞相依性資源建立私人端點時,例如 Azure 儲存體、Azure Container Registry 和 Azure Key Vault,資源可以位於不同的 Azure 訂用帳戶中。 不過,資源必須位於與中樞相同的租用戶中。
如果目標資源是先前所列的 Azure 資源,系統會自動為連線建立私人端點。 私人端點預期會有有效的目標識別碼。 連線的有效目標識別碼可以是父資源的 Azure Resource Manager 識別碼。 在連線的目標或 metadata.resourceid
中,也會預期有目標識別碼。 如需連線的詳細資訊,請參閱 如何在 Azure AI Foundry 入口網站中新增連線。
針對僅允許的輸出選取 Azure 防火牆 版本 (預覽)
如果在只允許核准的輸出模式中 建立 FQDN 輸出規則,則會部署 Azure 防火牆。 Azure 防火牆 的費用會包含在您的帳單中。 根據預設, 會建立標準 版本的 AzureFirewall。 您可以選擇使用 基本 版本。 您可以視需要變更所使用的防火牆版本。 若要找出最適合您的版本,請瀏覽選擇正確的 Azure 防火牆 版本 。
重要
在您新增輸出 FQDN 規則之前,不會建立防火牆。 如需價格的詳細資訊,請參閱 Azure 防火牆價格 並檢視標準 版本的價格。
使用下列索引標籤來瞭解如何選取受控虛擬網路的防火牆版本。
選取僅允許核准的輸出模式之後,會出現一個選項來選取 Azure 防火牆 版本(SKU)。 選取 [標準 ] 以使用標準版本或 [基本 ] 以使用基本版本。 選取 [ 儲存 ] 以儲存您的設定。
若要從 CLI 設定防火牆版本,請使用 YAML 檔案並指定 firewall_sku
。 下列範例示範將防火牆 SKU 設定為 basic
的 YAML 檔案:
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 設定防火牆版本,請設定 firewall_sku
對象的屬性 ManagedNetwork
。 下列範例示範如何將防火牆 SKU 設定為 basic
:
network = ManagedNetwork(isolation_mode=IsolationMode.ALLOW_INTERNET_OUTBOUND,
firewall_sku='basic')
定價
中樞受控虛擬網路功能無需付費。 不過,您需支付受控虛擬網路所使用的下列資源的費用:
Azure Private Link - 用來保護受控虛擬網路與 Azure 資源之間通訊的私人端點會依賴 Azure Private Link。 如需價格的詳細資訊,請參閱 Azure Private Link 價格 。
FQDN 輸出規則 - FQDN 輸出規則是使用 Azure 防火牆來實作。 如果您使用輸出 FQDN 規則,Azure 防火牆的費用會包含在您的計費中。 預設會使用標準版本的 Azure 防火牆。 如需選取基本版本的資訊,請參閱選取 Azure 防火牆 版本 。 針對各個中樞佈建 Azure 防火牆。
重要
在您新增輸出 FQDN 規則之前,不會建立防火牆。 如果您未使用 FQDN 規則,則不會向您收取 Azure 防火牆的費用。 如需有關定價的詳細資訊,請參閱 Azure 防火牆定價 。
相關內容