分享方式:


使用 Azure Machine Learning 登錄的網路隔離

在本文中,您將了解如何使用 Azure 虛擬網路私人端點來保護 Azure Machine Learning 登錄。

Azure 上的私人端點讓 Azure 服務能透過虛擬網路 (VNet) 內的私人 IP 位址來存取,藉此提供網路隔離。 VNet 可保護 Azure 資源之間的連線,並防止敏感性資格暴露在公用網際網路上。

搭配私人端點使用網路隔離可防止網路流量通過公用網際網路,並將 Azure Machine Learning 登錄服務帶至您的虛擬網路。 使用私人端點時,所有網路流量都會透過 Azure Private Link 發生。

必要條件

保護 Azure Machine Learning 登錄

注意

為了簡單起見,我們將工作區、其相關聯的資源,以及其所屬的虛擬網路稱為安全的工作區組態。 我們將探索如何將 Azure Machine Learning 登錄新增為現有組態的一部分。

下圖顯示基本網路組態,以及 Azure Machine Learning 登錄如何適應。 如果您已經使用 Azure Machine Learning 工作區,且具有安全的工作區組態,其中所有資源都是虛擬網路的一部分,您即可建立從現有虛擬網路到 Azure Machine Learning 登錄的私人端點及其相關聯的資源 (儲存體和 ACR)。

如果您沒有安全的工作區設定,您可以使用在 Azure 入口網站中建立安全的工作區 (英文)、Bicep 範本 (英文) 或 Terraform 範本 (英文) 等文章加以建立。

此圖顯示使用私人端點連線至虛擬網路的登錄,該虛擬網路包含工作區和相關聯的資源。

限制

如果您使用 Azure Machine Learning 登錄搭配網路隔離,則可以在 Azure Machine Learning 工作室中檢視「模型」資產。 您將無法檢視其他類型的資產。 您也無法使用工作室,對 Azure Machine Learning 登錄或其下的資產執行任何作業。 請改用 Azure Machine Learning CLI 或 SDK。

案例:工作區組態很安全且 Azure Machine Learning 登錄是公用的

如果您有安全的工作區組態但使用公用登錄,本節會說明一些案例和必要的網路組態。

從本機檔案建立登錄中的資產

用於在登錄中建立資產的身分識別 (例如,資料科學家的 Microsoft Entra 使用者身分識別) 必須在 Azure 角色型存取控制中被指派 AzureML 登錄使用者擁有者,或參與者角色。 如需詳細資訊,請參閱管理 Azure Machine Learning 的存取一文。

將資產從工作區共用至登錄

注意

目前不支援將元件從 Azure Machine Learning 工作區共用至 Azure Machine Learning 登錄。

由於資料外流保護,如果包含資產的儲存體帳戶已停用公開存取,就無法將安全工作區中的資產分享至公用登錄。 若要能夠將資產從工作區分享到登錄:

  • 移至儲存體帳戶 (連結至工作區) 的 [網路] 區段 (您想要從中允許將資產分享至登錄)
  • 將 [公用網路存取] 設定為 [已從選取的虛擬網路和 IP 位址啟用]
  • 向下捲動並移至 [資源執行個體] 區段 。 選取 [Microsoft.MachineLearningServices/registries] 作為 [資源類型],並將 [執行個體名稱] 設定為您想要從工作區共用至的 Azure Machine Learning 登錄資源名稱。
  • 務必根據您的網路組態檢查其餘的設定。

在工作區中使用登錄中的資產

範例作業:

  • 提交可使用登錄中資產的作業。
  • 在管線中使用登錄中的元件。
  • 在元件中使用登錄中的環境。

將登錄中的資料使用於安全的工作區需要設定對登錄的輸出存取權。

登錄中的模型部署到工作區

若要將登錄中的模型部署到安全的受控線上端點,部署必須設定 egress_public_network_access=disabled。 Azure Machine Learning 會在端點部署期間,將必要的私人端點建立至登錄。 如需詳細資訊,請參閱建立安全的受控線上端點

輸出網路組態用以存取任何 Azure Machine Learning 登錄

服務標籤 通訊協定及連接埠 目的
AzureMachineLearning TCP:443、877、18881
UDP:5831
使用 Azure Machine Learning 服務。
Storage.<region> TCP:443 存取儲存在 Azure 儲存體帳戶中的資料,以取得計算叢集和計算執行個體。 此輸出可用來外流資料。 如需詳細資訊,請參閱 Data 外流保護
MicrosoftContainerRegistry.<region> TCP:443 存取 Microsoft 提供的 Docker 映像。
AzureContainerRegistry.<region> TCP:443 存取環境的 Docker 映像。

案例:工作區設定很安全且 Azure Machine Learning 登錄會使用私人端點連線到虛擬網路

如果您的安全工作區組態包含使用私人端點連線至虛擬網路的 Azure Machine Learning 登錄,本節會說明一些案例和必要的網路設定。

Azure Machine Learning 登錄具有相關聯的儲存體/ACR 服務執行個體。 這些服務執行個體也可以使用私人端點連線到 VNet,以保護組態。 如需詳細資訊,請參閱如何建立私人端點一節。

如何尋找登錄所使用的 Azure 儲存體帳戶和 Azure Container Registry

Azure Machine Learning 登錄所使用的儲存體帳戶和 ACR 會建立在您 Azure 訂用帳戶中的受控資源群組底下。 受控資源群組的名稱會遵循 azureml-rg-<name-of-your-registry>_<GUID> 模式。 GUID 是隨機產生的字串。 例如,如果登錄的名稱為 "contosoreg",則受控資源群組的名稱會是 azureml-rg-contosoreg_<GUID>

在 Azure 入口網站中,您可以搜尋 azureml_rg-<name-of-your-registry> 來尋找此資源群組。 登錄的所有儲存體和 ACR 資源都可以在此資源群組之下取得。

從本機檔案建立登錄中的資產

注意

在相關聯的 ACR 已停用公用存取的私人登錄中,不支援建立環境資產。 因應措施是,您可以在 Azure Machine Learning 工作區中建立環境,並將其分享至 Azure Machine Learning 登錄。

用戶端必須連線到登錄與私人端點連線的 VNet。

安全地連線到您的登錄

若要連線到在 VNet 後方保護的登錄,請使用下列其中一種方法:

  • Azure VPN 閘道 - 透過私人連線將內部部署網路連線到 VNet。 連線是透過公用網際網路所建立。 您可能會使用兩種類型的 VPN 閘道:

    • 點對站:每部用戶端電腦都會使用 VPN 用戶端連線到 VNet。

    • 站對站:VPN 裝置會將 VNet 連線到您的內部部署網路。

  • ExpressRoute - 透過私人連線將內部部署網路連線到雲端。 連線是透過連線提供者所建立。

  • Azure Bastion - 在此案例中,您會在 VNet 內建立 Azure 虛擬機器 (有時稱為跳板機)。 然後,您可以使用 Azure Bastion 連線到 VM。 Bastion 可讓您從本機網頁瀏覽器使用 RDP 或 SSH 工作階段連線到 VM。 然後,您可以使用跳板機作為開發環境。 因為其位於 VNet 內,因此可直接存取登錄。

將資產從工作區共用至登錄

注意

目前不支援將元件從 Azure Machine Learning 工作區共用至 Azure Machine Learning 登錄。

由於資料外流保護,如果包含資產的儲存體帳戶已停用公開存取,就無法將安全工作區中的資產分享至私人登錄。 若要能夠將資產從工作區分享到登錄:

  • 移至儲存體帳戶 (連結至工作區) 的 [網路] 區段 (您想要從中允許將資產分享至登錄)
  • 將 [公用網路存取] 設定為 [已從選取的虛擬網路和 IP 位址啟用]
  • 向下捲動並移至 [資源執行個體] 區段 。 選取 [Microsoft.MachineLearningServices/registries] 作為 [資源類型],並將 [執行個體名稱] 設定為您想要從工作區共用至的 Azure Machine Learning 登錄資源名稱。
  • 務必根據您的網路組態檢查其餘的設定。

在工作區中使用登錄中的資產

範例作業:

  • 提交可使用登錄中資產的作業。
  • 在管線中使用登錄中的元件。
  • 在元件中使用登錄中的環境。

從工作區的 VNet 建立登錄、儲存體和 ACR 的私人端點。 如果您嘗試連線到多個登錄,請為每個登錄和相關聯的儲存體和 ACR 建立私人端點。 如需詳細資訊,請參閱如何建立私人端點一節。

登錄中的模型部署到工作區

若要將登錄中的模型部署到安全的受控線上端點,部署必須設定 egress_public_network_access=disabled。 Azure Machine Learning 會在端點部署期間,將必要的私人端點建立至登錄。 如需詳細資訊,請參閱建立安全的受控線上端點

如何建立私人端點

使用索引標籤來檢視指示,以將私人端點新增至現有登錄,或建立具有私人端點的新登錄

  1. Azure 入口網站中,搜尋 [私人端點],然後選取 [私人端點] 項目以移至 [私人連結中心]

  2. 在 [私人連結中心] 概觀頁面上,選取 [+ 建立]

  3. 提供所要求的資訊。 針對 [區域] 欄位,選取與您的 Azure 虛擬網路相同的區域。 選取 [下一步]。

  4. 從 [資源] 索引標籤,選取 [資源類型] 時,選取 Microsoft.MachineLearningServices/registries。 將 [資源] 欄位設定為您的 Azure Machine Learning 登錄名稱,然後選取 [下一步]

  5. 從 [虛擬網路] 索引標籤,選取 Azure Machine Learning 資源的虛擬網路和子網路。 選取下一步以繼續。

  6. 從 [DNS] 索引標籤,除非您有特定的私人 DNS 整合需求,否則保留預設值。 選取下一步以繼續。

  7. 從 [檢閱 + 建立] 索引標籤,選取 [建立] 以建立私人端點。

  8. 如果您想要將公用網路存取設定為停用,請使用下列命令。 確認儲存體和 ACR 也已停用公用網路存取。

    az ml registry update --set publicNetworkAccess=Disabled --name <name-of-registry>
    

如何尋找登錄所使用的 Azure 儲存體帳戶和 Azure Container Registry

Azure Machine Learning 登錄所使用的儲存體帳戶和 ACR 會建立在您 Azure 訂用帳戶中的受控資源群組底下。 受控資源群組的名稱會遵循 azureml-rg-<name-of-your-registry>_<GUID> 模式。 GUID 是隨機產生的字串。 例如,如果登錄的名稱為 "contosoreg",則受控資源群組的名稱會是 azureml-rg-contosoreg_<GUID>

在 Azure 入口網站中,您可以搜尋 azureml_rg-<name-of-your-registry> 來尋找此資源群組。 登錄的所有儲存體和 ACR 資源都可以在此資源群組之下取得。

如何為 Azure 儲存體帳戶建立私人端點

若要為登錄所使用的儲存體帳戶建立私人端點,請使用下列步驟:

  1. Azure 入口網站中,搜尋 [私人端點],然後選取 [私人端點] 項目以移至 [私人連結中心]
  2. 在 [私人連結中心] 概觀頁面上,選取 [+ 建立]
  3. 提供所要求的資訊。 針對 [區域] 欄位,選取與您的 Azure 虛擬網路相同的區域。 選取 [下一步]。
  4. 從 [資源] 索引標籤,選取 [資源類型] 時,選取 Microsoft.Storage/storageAccounts。 將 [資源] 欄位設定為儲存體帳戶名稱。 將 [子資源] 設定為 [Blob],然後選取 [下一步]
  5. 從 [虛擬網路] 索引標籤,選取 Azure Machine Learning 資源的虛擬網路和子網路。 選取下一步以繼續。
  6. 從 [DNS] 索引標籤,除非您有特定的私人 DNS 整合需求,否則保留預設值。 選取下一步以繼續。
  7. 從 [檢閱 + 建立] 索引標籤,選取 [建立] 以建立私人端點。

資料外洩保護

對於使用者建立的 Azure Machine Learning 登錄,我們建議對登錄、受控儲存體帳戶和受控 ACR 使用私人端點。

針對系統登錄,我們建議使用 /services/Azure/MachineLearning 別名為儲存體帳戶建立服務端點原則。 如需詳細資訊,請參閱設定資料外流防護

如何尋找登錄的完整網域名稱

注意

請確定您的 DNS 能夠解析下列格式的私人登錄 FQDN:<registry-guid>.registry.<region>.privatelink.api.azureml.ms,因為沒有由 Azure DNS 遞迴解析的任何公用資源特定的 FQDN。

下列範例示範如何使用探索 URL 來取得登錄的完整網域名稱 (FQDN)。 呼叫探索 URL 時,您必須在要求標頭中提供 Azure 存取權杖。 下列範例示範如何取得存取權杖並呼叫探索 URL:

提示

探索 URL 的格式為 https://<region>.api.azureml.ms/registrymanagement/v1.0/registries/<registry_name>/discovery,其中 <region> 是您的登錄所在的區域,而 <registry_name> 是您的登錄名稱。 若要呼叫 URL,請提出 GET 要求:

   GET https://<region>.api.azureml.ms/registrymanagement/v1.0/registries/<registry_name>/discovery 
$region = "<region>"
$registryName = "<registry_name>"
$accessToken = (az account get-access-token | ConvertFrom-Json).accessToken 
(Invoke-RestMethod -Method Get `
                   -Uri "https://$region.api.azureml.ms/registrymanagement/v1.0/registries/$registryName/discovery" `
                   -Headers @{ Authorization="Bearer $accessToken" }).registryFqdns
  • REST API

注意

如需使用 Azure REST API 的詳細資訊,請參閱 Azure REST API 參考

  1. 取得 Azure 存取權杖。 您可使用下列 Azure CLI 命令來取得權杖:

    az account get-access-token --query accessToken
    
  2. 使用 Curl 等 REST 用戶端,對探索 URL 提出 GET 要求。 使用在前一個步驟中擷取的存取權杖進行授權。 在下列範例中,以您登錄所在的區域取代 <region>,並以登錄的名稱取代 <registry_name>。 以前一個步驟中擷取的存取權杖取代 <token>

    curl -X GET "https://<region>.api.azureml.ms/registrymanagement/v1.0/registries/<registry_name>/discovery" -H "Authorization: Bearer <token>" -H "Content-Type: application/json"
    

後續步驟

了解如何透過登錄跨工作區共用模型、元件和環境