僅適用於:
Foundry(經典)入口。 這篇文章無法在新的 Foundry 入口網站中提供。
了解更多關於新入口網站的資訊。
註
本文中的連結可能會開啟新版 Microsoft Foundry 文件的內容,而非您目前正在瀏覽的 Foundry(經典版)文件。
樞紐專案的網路隔離分為兩部分:存取 Microsoft Foundry 樞紐,以及隔離樞紐與專案中的運算資源(如運算實例、無伺服器及受管理線上端點)。 本文將介紹後者。 圖解會突顯它。 利用集線器內建的網路隔離功能來保護您的運算資源。
請設定以下網路隔離設定:
先決條件
在開始之前,請確保你具備以下先決條件:
一個 Azure 訂閱。 如果你沒有 Azure 訂閱,請在開始前先建立一個免費帳號。
請註冊 Microsoft.Network 資源提供者以取得您的Azure訂閱。 樞紐利用此提供者建立受管理虛擬網路的私有端點。
關於註冊資源提供者的資訊,請參閱 「解決資源提供者註冊錯誤」。
使用包含以下 Azure 角色基礎存取控制(Azure RBAC)動作的 Azure 身份,建立受管理虛擬網路的私有端點:
Microsoft.MachineLearningServices/workspaces/privateEndpointConnections/read
Microsoft.MachineLearningServices/workspaces/privateEndpointConnections/write
一個 Azure 訂閱。 如果你沒有 Azure 訂閱,請在開始前先建立一個免費帳號。
Microsoft。Network 資源提供者必須註冊您的 Azure 訂閱。 中樞在建立受管理虛擬網路的私有端點時,會使用此資源提供者。
關於註冊資源提供者的資訊,請參閱 「解決資源提供者註冊錯誤」。
使用包含以下 Azure 角色基礎存取控制(Azure RBAC)動作的 Azure 身份,建立受管理虛擬網路的私有端點:
- Microsoft.MachineLearningServices/workspaces/privateEndpointConnections/read
- Microsoft.MachineLearningServices/workspaces/privateEndpointConnections/write
安裝 Azure CLI 以及 Azure CLI 的 ml 擴充功能。 更多資訊請參閱安裝、設定與使用 CLI (v2)
一個與 Bash 相容的 shell,用於執行本文中 CLI 範例。 例如,使用 Linux 系統或 Windows 子系統 Linux 版。
本文Azure CLI範例使用 ws 作為集線器名稱,rg 作為資源群組名稱。 在執行 Azure 訂閱指令時,請根據需要更改這些值。
一個 Azure 訂閱。 如果你沒有 Azure 訂閱,請在開始前先建立一個免費帳號。 可以試試 免費或付費版本。
Microsoft。Network 資源提供者必須註冊您的 Azure 訂閱。 中樞在建立受管理虛擬網路的私有端點時,會使用此資源提供者。
關於註冊資源提供者的資訊,請參閱 「解決資源提供者註冊錯誤」。
部署管理網路時使用的Azure身份,需要以下Azure角色基礎存取控制(Azure RBAC)動作來建立私有端點:
- Microsoft.MachineLearningServices/workspaces/privateEndpointConnections/read
- Microsoft.MachineLearningServices/workspaces/privateEndpointConnections/write
Azure Machine Learning Python SDK v2。 欲了解更多 SDK 資訊,請參閱 安裝 Python SDK v2 for Azure Machine Learning。
本文範例假設你的程式碼從以下 Python 程式碼開始。 它匯入建立有管理虛擬網路的集線器所需的類別,為你的Azure訂閱和資源群組設定變數,並建立 ml_client。 以下範例中,請將佔位文字 <SUBSCRIPTION_ID> 和 <RESOURCE_GROUP> 替換為你自己的值:
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)
提示
Foundry 會延後建立受管理的虛擬網路,直到你建立運算資源或開始手動配置。 自動建立時,建立第一個運算資源大約需要 30 分鐘 ,因為它同時負責網路配置。
建立一個新樞紐:
登入 Azure 入口網站,並從 Create a resource 選單中選擇 Foundry。
選取 + 新 Azure AI。
請在基礎標籤中輸入所需資訊。
在 網路 標籤中,選擇 私人與網路外撥。
要新增出站規則,請從網路標籤中選擇新增使用者定義的出站規則。從出站規則側邊欄輸入以下資訊:
-
規則名稱:規則名稱。 這個名稱必須是這個樞紐獨一無二的。
-
目的地類型:當網路隔離為私有且網際網路外接時,唯一的選擇是私有端點。 中樞管理的虛擬網路不支援為所有 Azure 資源類型建立私有端點。 有關支援資源清單,請參閱 私有端點 章節。
-
訂閱:包含 Azure 資源的訂閱,您希望為其新增私有端點。
-
Resource Group:包含你想新增私有端點的Azure資源的資源群組。
-
Resource Type:Azure資源的類型。
-
Resource name:Azure資源的名稱。
-
子資源:Azure資源類型的子資源。
選擇 儲存。 要新增更多規則,請選擇 「新增使用者自訂的出站規則」。
繼續建立樞紐。
更新現有的樞紐:
登入 Azure 入口網站,選擇中樞啟用受管理虛擬網路隔離。
選取網路>私人且允許對外網際網路連線。
在頁面頂端選擇 「儲存 」,將變更套用到受管理的虛擬網路。
要配置允許網際網路外接的受管虛擬網路,請使用 --managed-network allow_internet_outbound 參數或包含以下項目的 YAML 設定檔:
managed_network:
isolation_mode: allow_internet_outbound
將出站規則定義給樞紐所依賴的其他Azure服務。 這些規則定義了私有端點,使Azure資源能與受管理的虛擬網路安全通訊。 以下規則說明如何在 Azure Blob 儲存體 帳號中新增私人端點。 以下範例中,將佔位文字 <SUBSCRIPTION_ID>、<RESOURCE_GROUP> 和 <STORAGE_ACCOUNT_NAME> 替換為你自己的值。
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 createaz 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 範例定義了集線器受管理的虛擬網路。 它也會顯示如何為集線器使用的資源新增私有端點連線。 在這個例子中,它新增了一個私人端點給 Azure Blob 儲存體 帳號。 以下範例中,將佔位文字<SUBSCRIPTION_ID>、<RESOURCE_GROUP>、<STORAGE_ACCOUNT_NAME>替換為您自訂的值:
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 儲存體 帳號新增一個私人端點。 以下範例中,將佔位文字 <SUBSCRIPTION_ID>、<RESOURCE_GROUP>、<STORAGE_ACCOUNT_NAME> 換為你自己的值:
from azure.ai.ml.entities import ManagedNetwork, IsolationMode, Hub, PrivateEndpointDestination
# 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 to Azure Blob Storage
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 rule
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的現有中樞建立受管理的虛擬網路:
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml.entities import ManagedNetwork, IsolationMode, PrivateEndpointDestination
# Get the existing hub
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, "myhub")
ws = ml_client.workspaces.get(name="myhub")
# Basic managed VNet configuration
ws.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 rule
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)
參考資料
提示
Azure 在建立運算資源時會自動設定受管理的 VNet。 如果你允許自動建立,第一個運算資源大約需要 30 分鐘建立,因為網路也需要設定。 如果你設定 FQDN 的外站規則,第一個 FQDN 規則會讓設定時間增加大約 10 分鐘。
建立一個新樞紐:
登入 Azure 入口網站,然後從「建立資源」選單中選擇 Foundry。
選取 + 新 Azure AI。
請在 基礎 標籤中提供所需資訊。
從 網路 標籤中,選擇 「私密」並「核准外撥」。
要新增出站規則,請從網路標籤中選擇新增使用者定義的出站規則。從出站規則側欄提供以下資訊:
-
規則名稱:規則名稱。 這個名稱必須是這個樞紐獨一無二的。
-
目的地類型:私有端點、服務標籤或 FQDN。 服務標籤與 FQDN 僅在網路隔離設定為「私人且已核准的出站連線」時可用。
若目的裝置類型為 私有端點,請輸入以下資訊:
-
訂用帳戶:包含您要為其新增私人端點之 Azure 資源的訂用帳戶。
-
Resource Group:包含你想新增私有端點的Azure資源的資源群組。
-
Resource Type:Azure資源的類型。
-
Resource name:Azure資源的名稱。
提示
中樞的管理 VNet 並不支援所有 Azure 資源類型的私有端點。 有關支援資源清單,請參閱 私有端點 章節。
若目的地類型為 服務標籤,請輸入以下資訊:
-
服務標籤:用於加入已核准的外部傳出規則的服務標籤。
-
協定:允許服務標籤的協定。
-
埠範圍:埠範圍以允許服務標籤。
若目的類型為 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 的服務標籤,以及一個用於 pypi.org 的 FQDN。 以下範例中,將佔位文字 <SUBSCRIPTION_ID>、 <RESOURCE_GROUP>、 <STORAGE_ACCOUNT_NAME> 替換為你的值。
重要
- 只有當受控虛擬網路設定為
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 createaz 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 檔案定義了 hub 的受管理虛擬網路,並說明如何新增核准的出站規則。 在此範例中,新增了服務標籤、FQDN 及私有端點的出站規則:
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 物件建立新的 hub 或更新現有的 hub。 要定義 出站規則,請使用以下類別:
| 目的地 |
級別 |
|
Azure 集線器所依賴的服務 |
PrivateEndpointDestination |
|
Azure 服務標籤 |
ServiceTagDestination |
|
完全合格網域名稱(FQDN) |
FqdnDestination |
建立一個新樞紐:
以下範例建立一個名為 myhub的新樞紐,並有幾個出站規則:
-
myrule - 新增一個私有端點用於 Azure Blob 儲存。
-
datafactory - 新增服務標籤規則以與Azure Data Factory通訊。
重要
- 只有在將受控 VNet 設定至
IsolationMode.ALLOW_ONLY_APPROVED_OUTBOUND 時,才會新增服務標籤或 FQDN 的輸出規則。
- 如果你加入外發規則,Microsoft 無法保證能防止資料外洩。
from azure.ai.ml.entities import ManagedNetwork, IsolationMode, Hub, PrivateEndpointDestination, ServiceTagDestination, FqdnDestination
# 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的現有集線器配置受管理的虛擬網路。 它還新增了幾條出站規則:
-
myrule - 新增一個私有端點用於 Azure Blob 儲存。
-
datafactory - 新增服務標籤規則以與Azure Data Factory通訊。
提示
只有在您設定受管理的 VNet 使用 IsolationMode.ALLOW_ONLY_APPROVED_OUTBOUND 時,才能新增針對服務標籤或 FQDN 的出站規則。
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml.entities import ManagedNetwork, IsolationMode, PrivateEndpointDestination, ServiceTagDestination, FqdnDestination
# 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 該旗標來設定受管理網路。
註
要將模型部署到受管理的運算,你必須手動配置受管理網路,或先建立一個運算實例。 建立計算實例會自動配置受管理網路。
在建立工作區時,主動選擇 「配置管理網路 」以設定受管理網路。 虛擬網路建立後,網路資源(如私有端點)的計費才會開始。 此選項僅在工作區建立時提供。
以下範例展示了如何在建立集線器時配置受管理的虛擬網路。
az ml workspace create -n my_ai_hub_name -g my_resource_group --kind hub --managed-network AllowInternetOutbound --provision-network-now true
以下範例說明如何配置受管理的虛擬網路。
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
參考資料
使用 SDK 來配置一個受管理的虛擬網路,然後檢查其狀態。
from azure.identity import DefaultAzureCredential
from azure.ai.ml import MLClient
subscription_id = "00000000-0000-0000-0000-000000000000"
resource_group = "my_resource_group"
workspace_name = "my_ai_hub_name"
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace_name=workspace_name)
# Start provisioning the managed network for the workspace.
provision_result = ml_client.workspaces.begin_provision_network(workspace_name=workspace_name).result()
# Check the managed network status.
ws = ml_client.workspaces.get(name=workspace_name)
print(ws.managed_network.status)
參考資料
管理外撥規則
- 登入 Azure 入口網站,選擇你想啟用受管虛擬網路隔離的集線器。
- 選擇 「網路」模式。
Foundry 傳出存取區段可讓您管理傳出規則。
在接下來的指令中,將佔位文字 <workspace-name>、 <resource-group>、 <rule-name> 替換成你的值。 要列出樞紐的受管理虛擬網路出站規則,請執行:
az ml workspace outbound-rule list --workspace-name <workspace-name> --resource-group <resource-group>
要查看受管理的虛擬網路出站規則的詳細內容,請執行:
az ml workspace outbound-rule show --rule <rule-name> --workspace-name <workspace-name> --resource-group <resource-group>
要從受管理的虛擬網路中移除出站規則,請執行:
az ml workspace outbound-rule remove --rule <rule-name> --workspace-name <workspace-name> --resource-group <resource-group>
參考資料
以下範例說明如何管理名為 myhub. 的樞紐的外發規則。 在範例中,將佔位文字 <some-rule-name> 替換成你的規則名稱:
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
# Connect to the hub
ws_name = "myhub"
ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group, workspace_name=ws_name)
# 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()
參考資料
網路隔離架構與隔離模式
當你啟用受管虛擬網路隔離時,你就是為集線器建立一個受管理的虛擬網路。 你為中樞建立的受管理運算資源會自動使用這個受管理的虛擬網路。 受控虛擬網路可以為您的中樞所使用的 Azure 資源 (例如 Azure 儲存體、Azure Key Vault 和 Azure Container Registry) 使用私人端點。
為受管理的虛擬網路選擇三種出站模式之一:
| 出站模式 |
描述 |
劇本 |
| 允許網際網路輸出 |
允許所有來自受管理虛擬網路的對外網際網路流量。 |
你想要的是網路上對機器學習資源的無限制存取,例如Python套件或預訓練模型。1 |
| 只允許核准的外撥通話 |
使用服務標籤來允許外撥流量。 |
* 你想降低資料外洩的風險,但需要在私人環境中準備所有必要的機器學習產物。 * 您想設定對已核准的服務清單、服務標籤或完全合格網域名稱(FQDN)的外撥存取權限。 |
| 失能 |
進出流量不受限制。 |
您希望中樞具有公用的入站與出站連線。 |
1 你可以使用「 允許只允許核准的出站 模式」的出站規則,達到與 允許網際網路出站相同的效果。 兩者的差異如下:
- 一定要用私有端點來存取 Azure 資源。
- 您必須為每個需要允許的出站連線新增規則。
- 新增完全合格的網域名稱(FQDN)外發規則會增加成本,因為這種規則類型使用 Azure 防火牆。 如果你使用 FQDN 的出站規則,Azure 防火牆 的費用會包含在你的帳單中。 更多資訊請參閱定價。
-
預設的「只允許核准外發」規則是為了降低資料外洩的風險。 你加入的任何外發規則都可能增加風險。
受管理的虛擬網路已預先設定為 所需的預設規則。 當資源設為私有或隔離模式只允許核准出站時,樞紐也會配置私有端點連線到你的樞紐、預設儲存帳號、容器登錄檔和金鑰庫。 選擇隔離模式後,加入您需要的其他出站規則。
下圖顯示了一個受管理的虛擬網路,配置為 允許網際網路外撥:
下圖顯示一個受控虛擬網路設定為僅允許已核准的出站連線:
註
在此配置中,樞紐使用的儲存、金鑰庫與容器登錄檔皆設為私人。 由於它們是私密的,集線器使用私有端點來存取它們。
註
若要從公開的 Foundry 中樞存取私人儲存帳號,請在你的儲存帳號虛擬網路內使用 Foundry。 從虛擬網路內存取 Foundry 可確保你能執行如上傳檔案至私人儲存帳號等操作。 私人儲存帳號與 Foundry 樞紐的網路設定無關。 請參見 配置Azure 儲存體防火牆與虛擬網路。
必修規則列表
提示
這些規則會自動加入受管理的虛擬網路(VNet)。
私人端點:
- 當你將受管理的虛擬網路的隔離模式設為
Allow internet outbound 時,Foundry 會自動從受管理的虛擬網路建立必要的私有端點出站規則,適用於中樞及公共網路存取已關閉的相關資源(如 Azure Key Vault、儲存帳號、Azure Container Registry 和中樞)。
- 當你將受管理虛擬網路的隔離模式設為
Allow only approved outbound,Foundry 會自動從受管理虛擬網路為集線器及相關資源建立必要的私有端點出站規則,無論這些資源(Azure Key Vault、儲存帳號、Azure Container Registry 和集線器)的公共網路存取設定如何。
Foundry 需要一組服務標籤來實現私有網路。 不要更換所需的服務標籤。 下表說明每個必需的服務標籤及其在 Foundry 中的用途。
| 服務標籤規則 |
入站或出站 |
目的 |
AzureMachineLearning |
輸入 |
建立、更新及刪除 Foundry 的運算實例與叢集。 |
AzureMachineLearning |
外向 |
使用 Azure Machine Learning 服務。 筆記型電腦中的 Python IntelliSense 使用 18881 埠。 建立、更新及刪除 Azure Machine Learning 運算實例需使用 port 5831。 |
AzureActiveDirectory |
出發 |
使用 Microsoft Entra ID 進行認證。 |
BatchNodeManagement.region |
外送 |
與 Azure Batch 後端溝通,以支持 Foundry 計算實例和叢集的運作。 |
AzureResourceManager |
出發 |
使用 Foundry、Azure CLI 及 Microsoft Foundry SDK 建立 Azure 資源。 |
AzureFrontDoor.FirstParty |
輸出 |
存取由 Microsoft 提供的 Docker 映像檔。 |
MicrosoftContainerRegistry |
出發 |
存取由 Microsoft 提供的 Docker 映像檔。 設定 Foundry 路由器以支援 Azure Kubernetes Service。 |
AzureMonitor |
出發 |
將日誌和指標傳送到 Azure 監視器。 只有在你沒有為工作區安裝 Azure 監視器 時才需要。 此外,這個出站規則也會記錄支援事件的資訊。 |
VirtualNetwork |
輸出 |
當虛擬網路中存在私有端點或對等虛擬網路時,這是必要的。 |
特定情境出站規則列表
情境:存取公開機器學習套件
若要安裝用於訓練與部署的 Python 套件,請新增出站 FQDN 規則,允許流量流向以下主機名稱:
註
本列表涵蓋網路上常見的 Python 資源主機。 如果你需要存取 GitHub 倉庫或其他主機,請識別並新增適合你情境的主機。
|
主持人名稱 |
目的 |
anaconda.com
*.anaconda.com |
用來安裝預設套件。 |
*.anaconda.org |
以前用來取得 Repo 資料。 |
pypi.org |
如果使用者設定沒有覆蓋它,將從預設索引列出相依關係。 覆蓋索引時,也允許使用 *.pythonhosted.org。 |
pytorch.org
*.pytorch.org |
部分基於 PyTorch 的範例使用。 |
*.tensorflow.org |
部分以 TensorFlow 為基礎的範例會使用。 |
情境:使用 Visual Studio Code
Visual Studio Code 依賴特定的主機和埠來建立遠端連線。
主機
利用這些主機安裝 Visual Studio Code 套件,並建立與專案計算實例的遠端連線。
註
此清單未包含網路上所有 Visual Studio Code 資源所需的主機。 例如,如果你需要存取 GitHub 倉庫或其他主機,必須識別並新增該情境所需的主機。 完整主機名稱列表請參閱Visual Studio Code<>中的Network Connections。
|
主持人名稱 |
目的 |
*.vscode.dev
*.vscode-unpkg.net
*.vscode-cdn.net
*.vscodeexperiments.azureedge.net
default.exp-tas.com |
必須存取 VS Code for the Web(vscode.dev)。 |
code.visualstudio.com |
必須下載並安裝 VS Code 桌面應用程式。 VS Code 網頁版不需要這個主機。 |
update.code.visualstudio.com
*.vo.msecnd.net |
在設定腳本時,將 VS Code Server 元件下載到運算實例。 |
marketplace.visualstudio.com
vscode.blob.core.windows.net
*.gallerycdn.vsassets.io |
下載並安裝 VS Code 擴充功能是必須的。 這些主機使遠端連線能夠連接到運算節點。 欲了解更多資訊,請參閱 VS Code 中開始使用 Foundry 專案。 |
vscode.download.prss.microsoft.com |
作為 Visual Studio Code 的下載CDN。 |
埠口
允許網路流量流向 8704 至 8710 埠。 VS Code 伺服器會選擇此範圍內第一個可用的埠口。
情境:使用擁抱臉模型
若要在中樞中使用 Hugging Face 模型,請新增出站 FQDN 規則,以允許流量通往以下主機:
docker.io
*.docker.io
*.docker.com
production.cloudflare.docker.com
cdn.auth0.com
huggingface.co
cas-bridge.xethub.hf.co
cdn-lfs.huggingface.co
情境:Azure 直接販售的型號
這些模型會在執行時安裝依賴項。 新增出站 FQDN 規則以允許流量發送至以下主機:
*.anaconda.org
*.anaconda.com
anaconda.com
pypi.org
*.pythonhosted.org
*.pytorch.org
pytorch.org
私有端點
Azure 服務目前支援以下服務的私有端點:
- 鑄造中心
- Azure AI 搜尋服務
- 鑄造工具
- Azure API 管理
- 僅支援不含 VNet 注入的 Classic 層級,以及具備虛擬網路整合的標準 V2 層。 欲了解更多關於 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 registries
- Azure Cache for Redis
- Azure SQL Server
- Azure 儲存體 (所有子資源類型)
- 應用洞察(透過 PrivateLinkScopes)
當你建立私有端點時,你會指定該端點所連接的 資源類型 和 子資源 。 有些資源有多種類型和子資源。 欲了解更多資訊,請參閱 什麼是私有端點。
當你為中樞依賴資源建立私有端點,例如 Azure 儲存體、Azure Container Registry 和 Azure Key Vault,資源可以放在不同的 Azure 訂閱中。 然而,該資源必須與中樞位於相同的租用戶中。
如果你選擇前面列出的 Azure 資源作為目標資源,服務會自動為該連線建立一個私人端點。 請提供一個有效的目標 ID,供私人端點使用。 對於連線,目標 ID 可以是父資源的 Azure Resource Manager ID。 將目標 ID 包含在連線的目標中,或在 metadata.resourceid中。 關於連線的更多資訊,請參見 如何在 Foundry 入口新增連線。
私有端點的核准
要在受管虛擬網路中使用 Foundry 建立私有端點連線,工作區管理身份(系統指派或使用者指派)與建立私有端點的使用者身份必須具備核准目標資源私有端點連線的權限。 過去,Foundry 服務透過自動分配角色來授予此權限。 由於自動角色指派的安全疑慮,自 2025 年 4 月 30 日起,服務停止此自動授權邏輯。 指派 Azure AI 企業網路連線審核者角色或自訂角色,並賦予目標資源類型的私有端點連線權限,並將此角色授予 Foundry 樞紐的管理身份,讓 Foundry 核准目標Azure資源的私有端點連線。
以下是 Azure AI 企業網路連線審核者角色涵蓋的私有端點目標資源類型清單:
- Azure 應用程式閘道
- Azure 監視器
- Azure AI 搜尋服務
- Azure 事件中樞
- Azure SQL Database
- Azure 儲存體
- Azure Machine Learning workspace
- Azure Machine Learning registry
- 鑄造廠
- Azure Key Vault
- Azure Cosmos DB
- 適用於 MySQL 的 Azure 資料庫
- 適用於 PostgreSQL 的 Azure 資料庫
- 鑄造工具
- Azure Cache for Redis
- Azure Container Registry
- Azure API 管理
若要為 Azure AI 企業網路連線核准者角色未涵蓋的目標資源類型,例如 Azure Data Factory、Azure Databricks 和 Azure 函式應用程式,建立私人端點輸出規則,請使用自訂、範圍縮小的角色 (此角色僅由核准目標資源類型上私人端點連線的必要動作定義)。
要為預設工作區資源建立私有端點出站規則,工作區建立會透過角色指派授予所需權限,因此你不需要額外操作。
選取一個 Azure 防火牆 版本,只允許核准的出站
在僅允許核准的傳出模式中新增傳出 FQDN 規則時,Azure 防火牆就會部署。 Azure 防火牆 費用會加到你的帳單上。 預設情況下,會建立一個Standard版本的Azure 防火牆。 或者選擇 基本 版。 隨時可以更改防火牆版本。 想了解哪個版本符合你的需求,請前往 選擇正確的Azure 防火牆版本。
使用這些分頁了解如何選擇你受管理虛擬網路的防火牆版本。
在選取僅允許已核准的出站連線模式後,會出現選取 Azure 防火牆版本 (SKU) 的選項。 選擇標準或基礎。 選擇 儲存。
要用 Azure CLI 設定防火牆版本,請使用 YAML 檔案並指定 firewall_sku。 以下範例將防火牆 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 設定防火牆版本,請設定 firewall_sku 物件的 ManagedNetwork 屬性。 以下範例將防火牆 SKU 設定為 basic:
from azure.ai.ml.entities import ManagedNetwork, IsolationMode
network = ManagedNetwork(isolation_mode=IsolationMode.ALLOW_ONLY_APPROVED_OUTBOUND,
firewall_sku='basic')
參考資料
定價
中樞管理的虛擬網路功能是免費的,但你要付費購買管理虛擬網路所使用的以下資源:
Azure Private Link - 保護受管理虛擬網路與 Azure 資源通訊的私有端點使用 Azure Private Link。 關於價格,請參見Azure Private Link價格。
FQDN 出站規則 - Azure 防火牆 會強制執行這些規則。 如果你使用外撥 FQDN 規則,Azure 防火牆 的費用會出現在你的帳單上。 預設使用標準版的 Azure 防火牆。 要選擇基本版本,請參見 選擇Azure 防火牆版本。 Azure 防火牆 是配置在每個樞紐的。
重要
Azure 防火牆 只有在你新增一個出站 FQDN 規則後才會被建立。 如果你不使用 FQDN 規則,Azure 防火牆 就不會被收費。 關於價格,請參見Azure 防火牆價格。
限制
- Foundry 支援運算資源的受管虛擬網路隔離。 Foundry 不支援自帶虛擬網路來進行運算隔離。 此情境與從本地網路存取 Foundry 所需的 Azure 虛擬網路 不同。
- 啟用受管虛擬網路隔離後,就無法關閉它。
- 受管理的虛擬網路使用私有端點連接私有資源。 你不能在同一個 Azure 資源上使用私有端點和服務端點,就像儲存帳號一樣。 所有情境都使用私有端點。
- 當你刪除 Foundry 時,服務會刪除受管理的虛擬網路。
- 在僅允許核准外發資料的情況下,Foundry 能自動啟用資料外洩保護。 如果你加入其他外發規則,比如 FQDN,Microsoft 無法保證資料外洩到這些目的地時能有保護。
- FQDN 的出站規則會增加管理虛擬網路的成本,因為它們使用 Azure 防火牆。 更多資訊請參閱定價。
- FQDN 出站規則僅支援埠 80 和 443。
- 要停用運算實例的公共 IP 位址,請在集線器中新增一個私有端點。
- 對於受管理網路中的運算實例,請執行
az ml compute connect-ssh 以 SSH 連接。
- 如果你的管理網路設定為 只允許核准的外撥,你就無法使用 FQDN 規則來存取Azure 儲存體帳號。 改用私人端點吧。
相關內容