使用安全工作區時的網路流量
當您將 Azure Machine Learning 工作區和相關資源放在 Azure 虛擬網路時,其會改變資源之間的網路流量。 如果沒有虛擬網路,網路流量會透過公用網際網路或在 Azure 資料中心內流動。 在引進虛擬網路之後,您可能也想要強化網路安全性。 例如,您可能想要封鎖虛擬網路與公用網際網路之間的輸入和輸出通訊。 不過,Azure Machine Learning 需要存取公用網際網路上的某些資源。 例如,其使用 Azure Resource Manager 進行部署和管理作業。
本文列出進出公用網際網路的必要出入流量。 它也會說明在下列情況中,您的用戶端開發環境與安全 Azure Machine Learning 工作區之間的網路流量流動情況:
使用 Azure Machine Learning 工作室來處理:
- 您的工作區
- AutoML
- 設計工具
- 資料集和資料存放區
Azure Machine Learning 工作室是網頁型 UI,可在網頁瀏覽器中部分執行。 其可呼叫 Azure 服務來執行工作,例如定型模型、使用設計工具或檢視資料集。 其中一些呼叫會使用不同於您在使用 Azure Machine Learning SDK、Azure CLI、REST API 或 Visual Studio Code 時的通訊流程。
使用 Azure Machine Learning 工作室、Azure Machine Learning SDK、Azure CLI 或 REST API 來處理:
- 計算執行個體和叢集
- Azure Kubernetes Service (AKS)
- Azure Machine Learning 管理的 Docker 映像
如果此處有未列出的案例或工作,不論是否有安全的工作區,其運作方式都相同。
假設
本文假設以下設定:
- Azure Machine Learning 工作區使用私人端點來與虛擬網路進行通訊。
- 工作區使用的 Azure 儲存體帳戶、金鑰保存庫和容器登錄也會使用私人端點來與虛擬網路進行通訊。
- 用戶端工作站會使用 VPN 閘道或 Azure ExpressRoute 來存取虛擬網路。
輸入和輸出需求
案例 | 必要輸入 | 必要輸出 | 其他設定 |
---|---|---|---|
從工作室存取工作區 | 不適用 |
|
您可能需要使用自訂 DNS 伺服器。 如需詳細資訊,請參閱使用您的工作區搭配自訂 DNS 伺服器。 |
從工作室使用 AutoML、設計工具、資料集和資料存放區 | 不適用 | 不適用 |
|
使用計算執行個體和計算叢集 |
|
|
如果您使用防火牆,請建立使用者定義的路由。 如需詳細資訊,請參閱設定輸入和輸出網路流量。 |
使用 Azure Kubernetes Service | 不適用 | 如需 AKS 輸出組態的資訊,請參閱保護 Azure Kubernetes Service 推斷環境。 | |
使用 Azure Machine Learning 管理的 Docker 映像 | 不適用 | Microsoft 成品登錄 | 如果工作區的容器登錄位於虛擬網路後方,請將工作區設定為使用計算叢集來建立映像。 如需詳細資訊,請參閱使用虛擬網路保護 Azure Machine Learning 工作區。 |
儲存體帳戶的目的
Azure Machine Learning 使用多個儲存體帳戶。 每個都會儲存不同資料,而且有不同用途:
您的儲存體:Azure 訂用帳戶中的儲存體帳戶可儲存您的資料和成品,例如模型、定型資料、定型記錄和 Python 指令碼。 例如,您訂用帳戶中的工作區預設儲存體帳戶。 Azure Machine Learning 會計算執行個體,而且計算叢集會透過連接埠 445 (SMB) 和 443 (HTTPS)來存取此儲存體中的檔案與 Blob 資料。
使用計算執行個體或計算叢集時,您的儲存體帳戶會透過 SMB 通訊協定掛接為檔案共用。 計算執行個體和叢集會使用此檔案共用來儲存模型、Jupyter 筆記本和資料集等項目。 計算執行個體和叢集會在存取儲存體帳戶時使用私人端點。
Microsoft 儲存體:Azure Machine Learning 計算執行個體和計算叢集依賴 Azure Batch。 其會存取位於 Microsoft 訂用帳戶的儲存體。 此儲存體僅供管理計算執行個體或叢集使用。 您的所有資料都不會儲存在這裡。 計算執行個體和計算叢集會使用連接埠 443 (HTTPS) 來存取此儲存體的 Blob、資料表和佇列資料。
Machine Learning 會在 Azure Cosmos DB 執行個體中儲存中繼資料。 根據預設,這個執行個體裝載於 Microsoft 訂用帳戶並由 Microsoft 管理。 您可以選擇性地使用 Azure 訂用帳戶中的 Azure Cosmos DB 執行個體。 如需詳細資訊,請參閱<使用 Azure Machine Learning 進行資料加密> (機器翻譯)。
案例:從工作室存取工作區
注意
本節中的資訊僅適用於使用 Azure Machine Learning 工作室中的工作區。 如果您使用 Azure Machine Learning SDK、REST API、Azure CLI 或 Visual Studio Code,本節中的資訊對您不適用。
從工作室存取您的工作區時,網路流量流程如下所示:
- 若要向資源進行驗證,組態會使用 Microsoft Entra ID。
- 針對管理和部署作業,組態會使用 Azure Resource Manager。
- 針對 Azure Machine Learning 特有的工作,組態會使用 Azure Machine Learning 服務。
- 若要存取 Azure Machine Learning 工作室,組態會使用 Azure Front Door。
- 對於大部分的儲存體作業,流量會流經您工作區預設儲存體的私人端點。 本文的使用 AutoML、設計工具、資料集和資料存放區一節討論例外狀況。
- 您也需要設定可讓您解析虛擬網路內資源名稱的 DNS 解決方案。 如需詳細資訊,請參閱使用您的工作區搭配自訂 DNS 伺服器。
案例:從工作室使用 AutoML、設計工具、資料集和資料存放區
Azure Machine Learning 工作室的下列功能會使用資料分析:
- 資料集:從工作室探索資料集。
- 設計工具:視覺化模組輸出資料。
- AutoML:檢視資料預覽或設定檔,然後選擇目標資料行。
- 標籤:使用標籤來準備機器學習專案的資料。
資料分析取決於 Azure Machine Learning 受控服務存取您工作區的預設 Azure 儲存體帳戶的能力。 受控服務不存在於虛擬網路中,因此其無法直接存取虛擬網路中的儲存體帳戶。 相反地,工作區會使用服務主體來存取儲存體。
提示
您可以在建立工作區時,提供服務主體。 如果不這麼做,系統會為您建立一個服務主體,而且名稱會與您的工作區相同。
若要允許存取儲存體帳戶,請將儲存體帳戶設為允許您工作區的資源執行個體,或選取 [允許受信任服務清單上的 Azure 服務存取此儲存體帳戶]。 此設定可讓受控服務透過 Azure 資料中心網路存取儲存體。
接下來,請將工作區的服務主體新增至儲存體帳戶私人端點的讀取者角色。 Azure 會使用此角色來驗證工作區和儲存體子網路資訊。 如果相同,Azure 會允許存取。 最後,服務主體也需要 Blob 資料參與者存取儲存體帳戶。
如需詳細資訊,請參閱使用虛擬網路保護 Azure Machine Learning 工作區的「保護 Azure 儲存體帳戶」一節。
案例:使用計算執行個體和計算叢集
Azure Machine Learning 計算執行個體和計算叢集是 Microsoft 託管的受控服務。 並且以 Azure Batch 服務為基礎。 雖然這些服務存在於 Microsoft 受控環境中,但也會插入您的虛擬網路。
當您建立計算執行個體或計算叢集時,也會在您的虛擬網路中建立下列資源:
具有必要輸出規則的網路安全性群組。 這些規則允許來自 Azure Machine Learning (連接埠 44224 上的 TCP) 和 Azure Batch (連接埠 29876-29877 的 TCP) 的傳入存取。
重要
如果您使用防火牆來封鎖網際網路存取虛擬網路,您必須設定防火牆以允許此流量。 例如,透過 Azure 防火牆,您可以建立使用者定義的路由。 如需詳細資訊,請參閱設定輸入和輸出網路流量。
具有公用 IP 位址的負載平衡器。
也允許對下列服務標籤進行輸出存取。 對於每個標籤,region
將取代為計算執行個體或叢集的 Azure 區域:
Storage.region
:此輸出存取用於連線至 Azure Batch 受控虛擬網路內的 Azure 儲存體帳戶。Keyvault.region
:此輸出存取用於連線至 Azure Batch 受控虛擬網路內的 Azure Key Vault 帳戶。
從計算執行個體或叢集的資料存取會透過虛擬網路的儲存體帳戶私人端點進行。
如果您在計算執行個體上使用 Visual Studio Code,則必須允許其他輸出流量。 如需詳細資訊,請參閱設定輸入和輸出網路流量。
案例:使用線上端點
您可為受控線上端點分別設定輸入和輸出通訊的安全性。
輸入通訊
您可使用端點上的 public_network_access
旗標,協助保護與線上端點評分 URL 的輸入通訊。 將旗標設定為 disabled
可確保線上端點只會透過 Azure Machine Learning 工作區的私人端點從用戶端的虛擬網路接收流量。
Azure Machine Learning 工作區的 public_network_access
旗標也會控管線上端點的可見度。 如果此旗標為 disabled
,則評分端點只能從包含工作區私人端點的虛擬網路存取。 如果此旗標為 enabled
,則可以從虛擬網路和公用網路存取評分端點。
輸出通訊
您可使用 Azure Machine Learning 工作區的受控虛擬網路隔離,協助保護來自工作區層級部署的輸出通訊。 使用此設定會導致 Azure Machine Learning 為工作區建立受控虛擬網路。 工作區的受控虛擬網路中的任何部署都可以使用虛擬網路的私人端點進行輸出通訊。
用於保護輸出通訊的舊版網路隔離方法藉由停用部署的 egress_public_network_access
旗標來運作。 強烈建議您改用工作區受控虛擬網路來協助保護部署的輸出通訊。 不同於舊版方法,當您使用工作區受控虛擬網路搭配您的部署時,不會再套用部署的 egress_public_network_access
旗標。 相反地,您為工作區的受控虛擬網路所設定的規則會控制輸出通訊。
案例:使用 Azure Kubernetes Service
如需 Azure Kubernetes Service 所需輸出組態的資訊,請參閱使用虛擬網路保護 Azure Machine Learning 推斷環境。
注意
Azure Kubernetes Service 負載平衡器與 Azure Machine Learning 建立的負載平衡器不同。 如果您想要將模型裝載為僅可在虛擬網路上使用的安全應用程式,請使用 Azure Machine Learning 建立的內部負載平衡器。 如果您想要允許公用存取,請使用 Azure Machine Learning 建立的公用負載平衡器。
如果您的模型需要額外的輸入或輸出連線,例如外部資料來源,請使用網路安全性群組或防火牆來允許流量。
案例:使用 Azure Machine Learning 管理的 Docker 映像
Azure Machine Learning 提供可用於定型模型或執行推斷的 Docker 映像。 這些映像裝載在 Microsoft 成品登錄上。
如果您提供自己的 Docker 映像 (例如,您在容器登錄上提供的映像),則不需要與成品登錄進行輸出通訊。
提示
如果您的容器登錄在虛擬網路中受到保護,Azure Machine Learning 就無法使用它來建置 Docker 映像。 相反地,您必須指定 Azure Machine Learning 計算叢集來建立映像。 如需詳細資訊,請參閱使用虛擬網路保護 Azure Machine Learning 工作區。
下一步
既然您已了解網路流量如何在安全的設定中流動,請參閱虛擬網錄隔離和隱私權概觀一文,深入了解如何保護虛擬網路中的 Azure Machine Learning。
如需最佳做法的詳細資訊,請參閱企業安全性的 Azure Machine Learning 最佳做法 (機器翻譯) 文章。