在此文件中,您將了解如何為您的 Azure Machine Learning 工作區設定私人端點。 如需建立 Azure Machine Learning 的虛擬網路的相關資訊,請參閱虛擬網路隔離和隱私權概觀。
Azure Private Link 可讓您將工作區的連線限制於 Azure 虛擬網路。 您可以建立私人端點,以限制工作區只接受來自虛擬網路的連線。 私人端點是虛擬網路內的一組私人 IP 位址。 然後,您可以將對工作區的存取權限制為只透過私人 IP 位址進行。 私人端點有助於降低資料外流的風險。 若要深入了解私人端點,請參閱 Azure Private Link 一文。
警告
使用私人端點保護工作區並不會自行確保端對端安全性。 您必須保護解決方案的所有個別元件。 例如,如果您針對工作區使用私人端點,但您的 Azure 記憶體帳戶不在 VNet 後方,則工作區與記憶體之間的流量不會使用 VNet 的安全性。
如需保護 Azure Machine Learning 所使用資源的詳細資訊,請參閱下列文章:
先決條件
您必須擁有現有的虛擬網路,才能在其中建立私人端點。
警告
請勿使用 VNet 的 172.17.0.0/16 IP 位址範圍。 這是 Docker 網橋網路所使用的預設子網範圍,如果用於 VNet,則會產生錯誤。 根據您想要連線至虛擬網路的內容,其他範圍也可能會衝突。 例如,如果您打算將您的內部部署網路連線至 VNet,而且您的內部部署網路也會使用 172.16.0.0/16 範圍。 最後,您必須規劃網路基礎結構。
在新增私人端點之前,請先停用私人端點的網路原則。
限制
如果您針對使用私人端點保護的工作區啟用公用存取,並透過公用網際網路使用 Azure Machine Learning 工作室,則某些功能 (例如設計工具) 可能會無法存取您的資料。 當資料儲存在虛擬網路後方保護的服務時,就會發生此問題。 例如,Azure 儲存體帳戶。
如果您是使用 Mozilla Firefox,則在嘗試存取工作區的私人端點時可能會遇到問題。 此問題可能與 Mozilla Firefox 中透過 HTTPS 的 DNS 有關。 建議您使用 Microsoft Edge 或 Google Chrome。
使用私人端點並不會影響 Azure 控制平面 (管理作業),例如刪除工作區或管理計算資源。 例如,建立、更新或刪除計算目標。 這些作業會正常地透過公用網際網路執行。 資料平面作業 (例如使用 Azure Machine Learning 工作室)、API (包括已發佈的管線),或 SDK 都會使用私人端點。
在具有私人端點的工作區中建立計算執行個體或計算叢集時,計算執行個體和計算叢集必須位於與工作區相同的 Azure 區域中。
如果在建立計算資源之後對 Azure Machine Learning 工作區啟用或停用 Private Link,則那些現有的計算資源將不會自動更新以反映新的 Private Link 組態。 為確保連線正常並避免服務中斷,在對工作區的私人連結設定進行任何變更之後,必須重新建立計算資源。
將 Azure Kubernetes Service 叢集連結至具有私人端點的工作區時,該叢集必須位於與工作區相同的區域中。
使用具有多個私人端點的工作區時,其中一個私人端點必須與下列相依性服務位於相同的虛擬網路中:
- 為工作區提供預設儲存體的 Azure 儲存體帳戶
- 工作區的 Azure Key Vault
- 工作區的 Azure Container Registry。
例如,一個虛擬網路 (「服務」) 會包含用於相依性服務和工作區的私人端點。 此設定可讓工作區與服務通訊。 另一個虛擬網路 (「用戶端」) 可能只包含用於工作區的私人端點,而且只能用於用戶端開發電腦和工作區之間的通訊。
建立使用私人端點的工作區
使用下列其中一個方法來建立具有私人端點的工作區。 這兩種方法都需要現有的虛擬網路:
秘訣
如果您想要同時建立工作區、私人端點和虛擬網路,請參閱使用 Azure Resource Manager 範本來建立 Azure Machine Learning 的工作區。
使用適用於機器學習的 Azure CLI 擴充功能 2.0 CLI 時,可使用 YAML 文件來設定工作區。 以下範例示範使用 YAML 設定來建立新工作區:
秘訣
當您使用私人連結時,工作區無法使用 Azure Container Registry 任務計算來構建映像。 工作區會改為預設使用無伺服器計算叢集來建置映像。 此情況只有在儲存體帳戶或容器登錄等工作區相依資源不受任何網路限制 (私人端點) 時才適用。 如果您的工作區相依性受到網路限制,請使用 image_build_compute 屬性來指定用於映像建置的計算叢集。
此設定中的 image_build_compute 屬性會指定要用於建置 Docker 映像環境的 CPU 計算叢集名稱。 您也可以使用 public_network_access 屬性,指定是否應該可透過網際網路存取私人連結工作區。
在此範例中,需要在建置映像之前建立 image_build_compute 所參考的計算資源。
$schema: https://azuremlschemas.azureedge.net/latest/workspace.schema.json
name: mlw-privatelink-prod
location: eastus
display_name: Private Link endpoint workspace-example
description: When using private link, you must set the image_build_compute property to a cluster name to use for Docker image environment building. You can also specify whether the workspace should be accessible over the internet.
image_build_compute: cpu-compute
public_network_access: Disabled
tags:
purpose: demonstration
az ml workspace create \
-g <resource-group-name> \
--file privatelink.yml
建立工作區之後,請使用 Azure 網路 CLI 命令來為工作區建立私人連結端點。
az network private-endpoint create \
--name <private-endpoint-name> \
--vnet-name <vnet-name> \
--subnet <subnet-name> \
--private-connection-resource-id "/subscriptions/<subscription>/resourceGroups/<resource-group-name>/providers/Microsoft.MachineLearningServices/workspaces/<workspace-name>" \
--group-id amlworkspace \
--connection-name workspace -l <location>
若要建立工作區的私人 DNS 區域項目,請使用下列命令:
# Add privatelink.api.azureml.ms
az network private-dns zone create \
-g <resource-group-name> \
--name privatelink.api.azureml.ms
az network private-dns link vnet create \
-g <resource-group-name> \
--zone-name privatelink.api.azureml.ms \
--name <link-name> \
--virtual-network <vnet-name> \
--registration-enabled false
az network private-endpoint dns-zone-group create \
-g <resource-group-name> \
--endpoint-name <private-endpoint-name> \
--name myzonegroup \
--private-dns-zone privatelink.api.azureml.ms \
--zone-name privatelink.api.azureml.ms
# Add privatelink.notebooks.azure.net
az network private-dns zone create \
-g <resource-group-name> \
--name privatelink.notebooks.azure.net
az network private-dns link vnet create \
-g <resource-group-name> \
--zone-name privatelink.notebooks.azure.net \
--name <link-name> \
--virtual-network <vnet-name> \
--registration-enabled false
az network private-endpoint dns-zone-group add \
-g <resource-group-name> \
--endpoint-name <private-endpoint-name> \
--name myzonegroup \
--private-dns-zone privatelink.notebooks.azure.net \
--zone-name privatelink.notebooks.azure.net
將私人端點新增至工作區
使用下列其中一個方法,將私人端點新增至現有的工作區:
警告
如果您有任何與此工作區相關聯的現有計算目標,且它們不在建立私人端點的相同虛擬網路後面,則它們將無法運作。
使用適用於機器學習的 Azure CLI 擴充功能 2.0 CLI 時,請使用 Azure 網路 CLI 命令來為工作區建立私人連結端點。
az network private-endpoint create \
--name <private-endpoint-name> \
--vnet-name <vnet-name> \
--subnet <subnet-name> \
--private-connection-resource-id "/subscriptions/<subscription>/resourceGroups/<resource-group-name>/providers/Microsoft.MachineLearningServices/workspaces/<workspace-name>" \
--group-id amlworkspace \
--connection-name workspace -l <location>
若要建立工作區的私人 DNS 區域項目,請使用下列命令:
# Add privatelink.api.azureml.ms
az network private-dns zone create \
-g <resource-group-name> \
--name 'privatelink.api.azureml.ms'
az network private-dns link vnet create \
-g <resource-group-name> \
--zone-name 'privatelink.api.azureml.ms' \
--name <link-name> \
--virtual-network <vnet-name> \
--registration-enabled false
az network private-endpoint dns-zone-group create \
-g <resource-group-name> \
--endpoint-name <private-endpoint-name> \
--name myzonegroup \
--private-dns-zone 'privatelink.api.azureml.ms' \
--zone-name 'privatelink.api.azureml.ms'
# Add privatelink.notebooks.azure.net
az network private-dns zone create \
-g <resource-group-name> \
--name 'privatelink.notebooks.azure.net'
az network private-dns link vnet create \
-g <resource-group-name> \
--zone-name 'privatelink.notebooks.azure.net' \
--name <link-name> \
--virtual-network <vnet-name> \
--registration-enabled false
az network private-endpoint dns-zone-group add \
-g <resource-group-name> \
--endpoint-name <private-endpoint-name> \
--name myzonegroup \
--private-dns-zone 'privatelink.notebooks.azure.net' \
--zone-name 'privatelink.notebooks.azure.net'
移除私人端點
您可以移除工作區的一個或所有私人端點。 移除私人端點會從該端點相關聯的虛擬網路中移除工作區。 移除私人端點可能會讓工作區無法存取該虛擬網路中的資源,或虛擬網路中的資源無法存取工作區。 例如,如果虛擬網路不允許存取公用網際網路或從公用網際網路存取。
若要移除私人端點,請使用下列資訊:
使用適用於機器學習的 Azure CLI 擴充功能 2.0 CLI 時,請使用下列命令來移除私人端點:
az network private-endpoint delete \
--name <private-endpoint-name> \
--resource-group <resource-group-name> \
啟用公用存取
在某些情況下,您可能想要允許某人透過公用端點 (而不是透過虛擬網路) 連接到您的安全工作區。 或者,您可能想要從虛擬網路中移除工作區,然後重新啟用公用存取。
重要事項
啟用公用存取並不會移除任何存在的私人端點。 私人端點連接到的 VNet 背後元件之間的所有通訊,仍會受到保護。 除了透過任何私人端點的私人存取之外,它也可讓您僅啟用對工作區的公用存取。
警告
當工作區使用私人端點來與其他資源進行通訊時,透過公用端點進行連線:
- 工作室的某些功能將無法存取您的資料。 當資料儲存在 VNet 後方保護的服務時,就會發生此問題。 例如,Azure 儲存體帳戶。 若要解決此問題,請將用戶端裝置的 IP 位址新增至 Azure 儲存體帳戶的防火牆。
- 不支援在計算執行個體上 (包括執行中的筆記本) 使用 Jupyter、JupyterLab、RStudio 或 Posit Workbench (先前稱為 RStudio Workbench)。
若要啟用公用存取,請使用下列步驟:
秘訣
您可以設定兩個可能的屬性:
-
allow_public_access_when_behind_vnet- Python SDK v1 使用 -
public_network_access- CLI 和 Python SDK v2 使用的每個屬性都會覆寫另一個屬性。 例如,設定public_network_access會將任何先前的設定覆寫為allow_public_access_when_behind_vnet。
Microsoft 建議使用 public_network_access 來啟用或停用工作區的公用存取。
使用適用於機器學習的 Azure CLI 延伸模組 2.0 CLI 時,請使用 az ml update 命令來移啟用工作區的 public_network_access:
az ml workspace update \
--set public_network_access=Enabled \
-n <workspace-name> \
-g <resource-group-name>
您也可以使用 YAML 檔案來啟用公用網路存取。 如需詳細資訊,請參閱工作區 YAML 參考。
只從網際網路 IP 範圍啟用公用存取
您可以使用 IP 網路規則,藉由建立 IP 網路規則,允許從特定公用網際網路 IP 位址範圍對工作區和端點進行存取。 每個 Azure Machine Learning 工作區最多可支援 200 個規則。 這些規則可將存取權授與特定的網際網路型服務和內部部署網路,並且封鎖一般網際網路流量。
重要事項
- 在 Azure Machine Learning 工作區中建立具有選定 IP 位址的計算執行個體之前,請確定您的工作區已使用工作區受控虛擬網路設定了網路隔離,或在您自己的虛擬網路中將私人端點新增至您的工作區中。
- 如果僅設定選定的 IP 而不為工作區啟用受控虛擬網路或私人端點,則在佈建計算執行個體時可能會導致失敗。
警告
- 如果您想要允許從特定公用網際網路 IP 位址範圍存取端點,請啟用端點的公用網路存取旗標。
- 您只能使用 IPv4 位址。
- 若要搭配 Azure Machine Learning 受控虛擬網路使用此功能,請參閱 Azure Machine Learning 受控虛擬網路。
使用 az ml workspace network-rule Azure CLI 命令來管理來自 IP 位址或位址範圍的公用存取:
秘訣
所選 IP 位址的組態會儲存在工作區屬性的 network_acls 下:
properties:
# ...
network_acls:
description: "The network ACLS for this workspace, enforced when public_network_access is set to Enabled."
$ref: "3/defintions/networkAcls"
-
列出 IP 網路規則:
az ml workspace network-rule list --resource-group "myresourcegroup" --workspace-name "myWS" --query ipRules -
為單一 IP 位址新增規則:
az ml workspace network-rule add --resource-group "myresourcegroup" --workspace-name "myWS" --ip-address "16.17.18.19" -
為某個 IP 位址範圍新增規則:
az ml workspace network-rule add --resource-group "myresourcegroup" --workspace-name "myWS" --ip-address "16.17.18.0/24" -
為單一 IP 位址移除規則:
az ml workspace network-rule remove --resource-group "myresourcegroup" --workspace-name "myWS" --ip-address "16.17.18.19" -
為某個 IP 位址範圍移除規則:
az ml workspace network-rule remove --resource-group "myresourcegroup" --workspace-name "myWS" --ip-address "16.17.18.0/24"
您也可以使用 Azure Machine Learning Python SDK 中的 Workspace 類別來定義允許輸入存取的 IP 位址:
Workspace(
public_network_access = "Enabled",
network_rule_set = NetworkRuleSet(default_action = "Allow", bypass = "AzureServices", resource_access_rules = None, ip_rules = yourIPAddress,)
IP 網路規則的限制
下列限制適用於 IP 位址範圍:
只有公用網際網路 IP 位址允許使用 IP 網路規則。
IP 規則中不允許保留的 IP 位址範圍,例如以 10、172.16 到 172.31 和 192.168 開頭的私人位址。
允許的網際網路位址範圍必須使用 16.17.18.0/24 格式的 CIDR 標記法,或 16.17.18.19 等個別 IP 位址來提供。
設定儲存體防火牆規則時僅支援 IPv4 位址。
啟用此功能時,您可以使用任何用戶端工具 (例如 Curl) 來測試公用端點,但不支援入口網站中的端點測試工具。
您只能在已建立工作區之後設定工作區的 IP 位址。
如果工作區受控虛擬網路未在工作區上啟用,並從選定 IP 的工作區中啟用,則受控線上端點部署將失敗。 在沒有端對端網路隔離的工作區中訓練計算目標 (包括計算叢集、計算執行個體和無伺服器計算) 將無法與從選定 IP 工作區中啟用的功能同時運作。 對於網路隔離的訓練,前述的計算需要從計算網路建立一個連接到工作區的私人端點,並從選定 IP 的工作區中啟用。
安全地連線到您的工作區
若要連線到在 VNet 後方保護的工作區,請使用下列其中一種方法:
Azure VPN 閘道 - 透過私人連線,將內部部署網路連線至 VNet。 連線會透過公用網際網路來建立。 您可以使用兩種類型的 VPN 閘道:
ExpressRoute - 透過私人連線,將內部部署網路連線至雲端。 連線會使用連線提供者來建立。
Azure Bastion - 在此案例中,您會在 VNet 內建立 Azure 虛擬機器 (有時稱為跳板機)。 然後,您可以使用 Azure Bastion 連線至 VM。 Bastion 可讓您從本機網頁瀏覽器使用 RDP 或 SSH 工作階段連線至 VM。 然後,您可以使用跳板機作為開發環境。 其位於 VNet 內,因此可以直接存取工作區。 如需使用 Jumpbox 的範例,請參閱教學課程:建立安全的工作區。
重要事項
使用 VPN 閘道或 ExpressRoute 時,您將需要規劃在內部部署資源之間與 VNet 中名稱解析的運作方式。 如需詳細資訊,請參閱使用自訂 DNS 伺服器。
如果您在連線到工作區時遇到問題,請參閱為安全工作區連線疑難排解。
多個私人端點
Azure Machine Learning 對工作區支援多個私人端點。 當您想要讓不同環境保持分開時,通常會使用多個私人端點。 以下是使用多個私人端點啟用的一些案例:
不同虛擬網路中的用戶端開發環境。
不同虛擬網路中的 Azure Kubernetes Service (AKS) 叢集。
不同虛擬網路中的其他 Azure 服務。 例如,Azure Synapse 和 Azure Data Factory 可以使用 Microsoft 受控虛擬網路。 無論是哪一種情況,都可以將工作區的私人端點新增至這些服務所使用的受控虛擬網路。 如需使用受控虛擬網路搭配這些服務的詳細資訊,請參閱下列文章:
重要事項
Azure Machine Learning 不支援 Synapse 的數據外洩保護。
重要事項
包含私人端點做為工作區的每個 VNet 也必須能夠存取工作區所使用的 Azure 儲存體帳戶、Azure Key Vault 和 Azure Container Registry。 例如,您可能會每個 VNet 中的服務建立私人端點。
新增多個私人端點會使用的步驟,與將私人端點新增至工作區一節中所述的步驟相同。
案例:隔離式用戶端
如果您想要隔離開發用戶端,使其無法直接存取 Azure Machine Learning 所使用的計算資源,請使用下列步驟:
附註
這些步驟假設您有現有的工作區、Azure 儲存體帳戶、Azure Key Vault 和 Azure Container Registry。 這些服務的每一項在現有 VNet 中都有私人端點。
- 為用戶端建立另一個虛擬網路。 此虛擬網路可能包含作為用戶端的 Azure 虛擬機器,也可能包含內部部署用戶端用來連線到虛擬網路的 VPN 閘道。
- 為您的工作區所使用的 Azure 儲存體帳戶、Azure Key Vault 和 Azure Container Registry 新增私人端點。 這些私人端點應該存在於用戶端虛擬網路中。
- 如果您有工作區使用的另一個儲存體,請為該儲存體新增私人端點。 私人端點應該存在於用戶端虛擬網路中,並啟用私人 DNS 區域整合。
- 將新的私人端點新增至您的工作區。 此私人端點應該存在於用戶端虛擬網路中,並啟用私人 DNS 區域整合。
- 若要讓 Azure Machine Learning 工作室可以存取儲存體帳戶,請參閱在虛擬網路中使用工作室一文。
下圖說明此設定。 工作負載虛擬網路包含工作區針對定型與部署所建立的計算資源。 用戶端虛擬網路包含用戶端或用戶端 ExpressRoute/VPN 連線。 這兩個 VNet 都包含工作區的私人端點、Azure 儲存體帳戶、Azure Key Vault 和 Azure Container Registry。
案例:隔離式 Azure Kubernetes Service
如果您想要建立工作區使用的隔離式 Azure Kubernetes Service,請使用下列步驟:
附註
這些步驟假設您有現有的工作區、Azure 儲存體帳戶、Azure Key Vault 和 Azure Container Registry。 這些服務的每一項在現有 VNet 中都有私人端點。
- 建立 Azure Kubernetes Service 執行個體。 在建立期間,AKS 會建立包含 AKS 叢集的虛擬網路。
- 為您的工作區所使用的 Azure 儲存體帳戶、Azure Key Vault 和 Azure Container Registry 新增私人端點。 這些私人端點應該存在於用戶端虛擬網路中。
- 如果您有工作區使用的其他儲存體,請為該儲存體新增私人端點。 私人端點應該存在於用戶端虛擬網路中,並啟用私人 DNS 區域整合。
- 將新的私人端點新增至您的工作區。 此私人端點應該存在於用戶端虛擬網路中,並啟用私人 DNS 區域整合。
- 將 AKS 叢集連結至 Azure Machine Learning 工作區。 如需詳細資訊,請參閱建立和連結 Azure Kubernetes Service 叢集。
案例:允許從選定 IP 位址存取的受控線上端點
從選定的 IP 位址啟用輸入存取會受到受控線上端點上的輸入設定的影響。 下表顯示了您的工作區和受控線上端點網路組態的可能組態,以及它如何影響這兩種組態。 如需詳細資訊,請參閱受控線上端點的網路隔離。
| 工作區 公用網路存取 |
受控線上端點 公用網路存取 |
工作區是否 遵守選定的 IP? |
線上端點是否 遵守選定的 IP? |
|---|---|---|---|
| 已停用 | 已停用 | 否 (拒絕所有公用流量) | 否 |
| 已停用 | 啟用 | 否 (拒絕所有公用流量) | 不支援 |
| 從選定的 IP 啟用 | 已停用 | 是 | 否 |
| 從選定的 IP 啟用 | 啟用 | 是 | 是 |
附註
如果工作區公用網路存取設定已從選取的IP變更為停用,則受管理的連線點會繼續遵守選取的IP。 如果您不想將選定的 IP 位址套用到您的線上端點,請在 Azure 入口網站中針對工作區選取 [已停用]之前先移除這些位址。 Python SDK 和 Azure CLI 支援在此之前或之後進行此變更。
案例:允許從選定 IP 位址存取的批次端點
批次端點不支援選定 IP 位址的組態。 批次端點上沒有公用網路存取旗標。 如果 Azure Machine Learning 工作區已停用,但啟用了私人連結,則批次端點也會是私人端點。 如果工作區的公用網路存取從停用變更為啟用,則批次端點會保持私人端點的狀態,不會變成公用端點。 如需詳細資訊,請參閱保護批次端點。
