適用於企業安全性的 Azure 機器學習 最佳做法
本文說明規劃或管理安全 Azure 機器學習 部署的安全性最佳做法。 最佳做法來自 Microsoft 和 Azure 機器學習 的客戶體驗。 每個指導方針都會說明這種做法及其理由。 本文也提供操作說明和參考文件的連結。
建議的網路安全性架構 (受控網路)
建議的機器學習網路安全性架構是 受控虛擬網路。 Azure 機器學習 受控虛擬網路可保護工作區、相關聯的 Azure 資源,以及所有受控計算資源。 其可藉由預先設定必要的輸出,並在網路內自動建立受控資源,來簡化網路安全性的設定和管理。 您可以使用私人端點來允許 Azure 服務存取網路,也可以選擇性地定義輸出規則,以允許網路存取因特網。
受控虛擬網路有兩種模式可供設定:
允許因特網輸出 - 此模式允許與因特網上的資源進行輸出通訊,例如公用 PyPi 或 Anaconda 套件存放庫。
只允許核准的輸出 - 此模式只允許工作區運作所需的最小輸出通訊。 建議將此模式用於必須與因特網隔離的工作區。 或者,只有透過服務端點、服務標籤或完整功能變數名稱,才允許輸出存取特定資源。
如需詳細資訊,請參閱 受控虛擬網路隔離。
建議的網路安全性架構 (Azure 虛擬網絡)
如果您因為業務需求而無法使用受控虛擬網路,您可以使用具有下列子網的 Azure 虛擬網路:
- 定 型包含用於定型的計算資源,例如機器學習計算實例或計算叢集。
- 評分 包含用於評分的計算資源,例如 Azure Kubernetes Service (AKS)。
- 防火牆包含允許來自公用因特網的流量的防火牆,例如 Azure 防火牆。
虛擬網路也包含 機器學習工作區的私人端點 和下列相依服務:
- Azure 儲存體帳戶
- Azure Key Vault
- Azure Container Registry
來自虛擬網路的輸出通訊必須能夠連線到下列 Microsoft 服務:
- 機器學習服務
- Microsoft Entra ID
- Azure Container Registry,以及 Microsoft 維護的特定登錄
- Azure Front Door
- Azure Resource Manager
- Azure 儲存體
遠端用戶端會使用 Azure ExpressRoute 或虛擬專用網 (VPN) 連線來連線到虛擬網路。
虛擬網路和私人端點設計
設計 Azure 虛擬網絡、子網和私人端點時,請考慮下列需求:
一般而言,為訓練和評分建立個別的子網,並針對所有私人端點使用定型子網。
針對IP尋址,計算實例各需要一個私人IP。 計算叢集需要每個節點一個私人IP。 AKS 叢集需要許多私人IP位址,如規劃 AKS 叢集的IP位址中所述。 至少 AKS 的個別子網有助於防止 IP 位址耗盡。
定型和評分子網中的計算資源必須存取記憶體帳戶、金鑰保存庫和容器登錄。 建立記憶體帳戶、金鑰保存庫和容器登錄的私人端點。
機器學習工作區預設記憶體需要兩個私人端點,一個用於 Azure Blob 儲存體,另一個用於 Azure 檔案 儲存體。
如果您使用 Azure Machine Learning 工作室,工作區和記憶體私人端點應該位於相同的虛擬網路中。
如果您有多個工作區,請使用每個工作區的虛擬網路,在工作區之間建立明確的網路界限。
使用私人IP位址
私人IP位址會將您的 Azure 資源暴露在因特網上的可能性降到最低。 機器學習會使用許多 Azure 資源,而機器學習工作區私人端點不足以供端對端私人 IP 使用。 下表顯示機器學習服務使用的主要資源,以及如何為資源啟用私人IP。 計算實例和計算叢集是唯一沒有私人IP功能的資源。
資源 | 私人IP解決方案 | 文件 |
---|---|---|
工作區 | 私人端點 | 設定 Azure Machine Learning 工作區的私人端點 |
登錄 | 私人端點 | 使用 Azure 機器學習 登錄的網路隔離 |
相關聯的資源 | ||
儲存體 | 私人端點 | 使用服務端點保護 Azure 儲存體 帳戶 |
Key Vault | 私人端點 | 保護 Azure 金鑰保存庫 |
Container Registry | 私人端點 | 啟用 Azure Container Registry |
訓練資源 | ||
計算執行個體 | 私人IP(無公用IP) | 保護訓練環境 |
計算叢集 | 私人IP(無公用IP) | 保護訓練環境 |
裝載資源 | ||
受控線上端點 | 私人端點 | 使用受控在線端點的網路隔離 |
線上端點 (Kubernetes) | 私人端點 | 保護 Azure Kubernetes Service 在線端點 |
Batch 端點 | 私人 IP (繼承自計算叢集) | 批次端點中的網路隔離 |
控制虛擬網路輸入和輸出流量
使用防火牆或 Azure 網路安全組 (NSG) 來控制虛擬網路輸入和輸出流量。 如需輸入和輸出需求的詳細資訊,請參閱 設定輸入和輸出網路流量。 如需元件之間流量的詳細資訊,請參閱 安全工作區中的網路流量流程。
確定工作區的存取權
若要確保您的私人端點可以存取機器學習工作區,請執行下列步驟:
請確定您可以使用 VPN 連線、ExpressRoute 或跳板虛擬機 (VM) 搭配 Azure Bastion 存取權來存取虛擬網路。 公用用戶無法使用私人端點存取機器學習工作區,因為它只能從您的虛擬網路存取。 如需詳細資訊,請參閱 使用虛擬網路保護您的工作區。
請確定您可以使用私人IP位址解析工作區完整功能變數名稱 (FQDN)。 如果您使用自己的功能變數名稱系統 (DNS) 伺服器或 集中式 DNS 基礎結構,則必須設定 DNS 轉寄站。 如需詳細資訊,請參閱如何搭配使用工作區與自訂 DNS 伺服器。
工作區存取管理
定義機器學習身分識別和訪問控制控件時,您可以將定義 Azure 資源的存取權與管理數據資產存取權的控件分開。 根據您的使用案例,請考慮使用自助式、以數據為主或以專案為中心的身分識別和存取管理。
自助式模式
在自助模式中,數據科學家可以建立和管理工作區。 此模式最適合需要彈性嘗試不同組態的概念證明情況。 缺點是數據科學家需要專業知識才能布建 Azure 資源。 當需要嚴格控制、資源使用、稽核追蹤和數據存取時,此方法就不太合適。
定義 Azure 原則,以設定資源布建和使用方式的保護措施,例如允許的叢集大小和 VM 類型。
建立資源群組來存放工作區,並將資源群組中的參與者角色授與數據科學家。
數據科學家現在可以建立工作區,並以自助方式在資源群組中建立資源關聯。
若要存取數據記憶體,請建立使用者指派的受控識別,並在記憶體上授與身分識別讀取存取角色。
當數據科學家建立計算資源時,他們可以將受控識別指派給計算實例,以取得數據存取權。
如需最佳做法,請參閱 雲端規模分析的驗證。
以數據為中心的模式
在以數據為中心的模式中,工作區屬於可能處理多個專案的單一數據科學家。 這種方法的優點是數據科學家可以跨專案重複使用程式代碼或定型管線。 只要工作區受限於單一使用者,數據存取就可以在稽核記憶體記錄時追蹤回該使用者。
缺點是數據存取不會依每個項目進行分割或限制,而且任何新增至工作區的使用者都可以存取相同的資產。
建立工作區。
建立已啟用系統指派受控識別的計算資源。
當數據科學家需要存取指定項目的數據時,請將數據讀取許可權授與計算受控識別。
將計算受控識別存取權授與其他必要資源,例如具有自定義 Docker 映像的容器登錄進行定型。
此外,在數據上授與工作區的受控識別讀取許可權角色,以啟用數據預覽。
授與數據科學家對工作區的存取權。
數據科學家現在可以建立數據存放區來存取專案所需的數據,並提交使用數據的定型執行。
您可以選擇性地建立 Microsoft Entra 安全組,並授與其讀取數據的存取權,然後將受控識別新增至安全組。 這種方法可減少資源的直接角色指派數目,以避免達到角色指派的訂用帳戶限制。
以專案為中心的模式
以專案為中心的模式會針對特定專案建立機器學習工作區,而許多數據科學家會在相同的工作區內共同作業。 數據存取僅限於特定專案,讓方法非常適合用於處理敏感數據。 此外,從專案中新增或移除數據科學家很簡單。
這種方法的缺點是,跨專案共用資產可能會很困難。 在稽核期間,也很難追蹤特定用戶的數據存取權。
建立工作區
識別專案所需的數據記憶體實例、建立使用者指派的受控識別,並將記憶體的讀取許可權授與身分識別。
選擇性地將工作區的受控識別存取權授與數據記憶體,以允許數據預覽。 您可以針對不適合預覽的敏感數據省略此存取權。
建立記憶體資源的無認證數據存放區。
在工作區內建立計算資源,並將受控識別指派給計算資源。
將計算受控識別存取權授與其他必要資源,例如具有自定義 Docker 映像的容器登錄進行定型。
授與處理專案的數據科學家在工作區上的角色。
藉由使用 Azure 角色型存取控制 (RBAC),您可以限制資料科學家建立具有不同受控識別的新資料存放區或新的計算資源。 這種做法可防止存取非專案專屬的數據。
或者,若要簡化專案成員資格管理,您可以為項目成員建立 Microsoft Entra 安全組,並將工作區的存取權授與群組。
具有認證傳遞的 Azure Data Lake 儲存體
您可以使用 Microsoft Entra 使用者身分識別,從機器學習工作室進行互動式記憶體存取。 已啟用階層命名空間的 Data Lake 儲存體,可讓您加強儲存和共同作業的數據資產組織。 透過 Data Lake 儲存體 階層命名空間,您可以將不同的使用者存取控制清單 (ACL) 型存取權授與不同的資料夾和檔案,以分割資料存取權。 例如,您只能將機密數據的存取權子集授與使用者。
RBAC 和自定義角色
Azure RBAC 可協助您管理可存取機器學習資源的人員,以及設定誰可以執行作業。 例如,您可能只想要將工作區系統管理員角色授與特定用戶來管理計算資源。
存取範圍在環境之間可能會有所不同。 在生產環境中,您可能想要限制使用者更新推斷端點的能力。 相反地,您可以將該許可權授與授權的服務主體。
機器學習有數個預設角色:擁有者、參與者、讀者和數據科學家。 您也可以建立自己的自定義角色,例如建立反映組織結構的許可權。 如需詳細資訊,請參閱管理 Azure 機器學習 工作區的存取權。
一段時間后,小組的組成可能會變更。 如果您為每個小組角色和工作區建立 Microsoft Entra 群組,您可以將 Azure RBAC 角色指派給 Microsoft Entra 群組,並個別管理資源存取和使用者群組。
用戶主體和服務主體可以是相同 Microsoft Entra 群組的一部分。 例如,當您建立 Azure Data Factory 用來觸發機器學習管線的使用者指派受控識別時,您可能會在 ML 管線執行程式 Microsoft Entra 群組中包含受控識別。
中央 Docker 映像管理
Azure 機器學習 提供策展的 Docker 映射,可供您用於定型和部署。 不過,您的企業合規性需求可能會要求使用公司所管理的私人存放庫映像。 機器學習有兩種方式可使用中央存放庫:
使用來自中央存放庫的映像作為基底映像。 機器學習環境管理會安裝套件,並建立執行定型或推斷程式代碼的 Python 環境。 使用此方法,您可以輕鬆地更新套件相依性,而不需要修改基底映射。
使用依目前方式使用的映像,而不需使用機器學習環境管理。 這個方法提供您更高程度的控制,但也要求您仔細建構 Python 環境做為映像的一部分。 您需要符合執行程序代碼所需的所有相依性,而且任何新的相依性都需要重建映像。
如需詳細資訊,請參閱 管理環境。
資料加密
待用機器學習數據有兩個數據源:
您的記憶體具有所有數據,包括定型和定型的模型數據,但元數據除外。 您必須負責記憶體加密。
Azure Cosmos DB 包含您的元數據,包括實驗名稱和實驗提交日期和時間等執行歷程記錄資訊。 在大部分的工作區中,Azure Cosmos DB 位於 Microsoft 訂用帳戶中,並由 Microsoft 管理的密鑰加密。
如果您想要使用自己的金鑰來加密元資料,您可以使用客戶管理的金鑰工作區。 缺點是您必須在訂用帳戶中擁有 Azure Cosmos DB,並支付其成本。 如需詳細資訊,請參閱使用 Azure 機器學習 進行數據加密。
如需 Azure 機器學習 如何加密傳輸中資料的資訊,請參閱傳輸中的加密。
監視
當您部署機器學習資源時,請設定記錄和稽核控件以取得可檢視性。 觀察數據的動機可能會因查看數據的人員而有所不同。 案例包括:
機器學習從業者或作業小組想要 監視機器學習管線健康情況。 這些觀察者必須瞭解排程執行中的問題,或數據品質或預期的定型效能問題。 您可以建置 Azure 儀錶板來監視 Azure 機器學習 數據,或建立事件驅動工作流程。
容量管理員、機器學習從業者或作業小組可能會想要 建立儀錶板 來 觀察計算和配額使用率。 若要使用多個 Azure 機器學習 工作區來管理部署,請考慮建立中央儀錶板以瞭解配額使用率。 配額是在訂用帳戶層級上管理,因此整個環境檢視對於推動優化很重要。
IT 和作業小組可以設定 診斷記錄 ,以 稽核工作區中的資源存取和改變事件 。
請考慮建立儀錶板, 以監視機器學習和相依資源的整體基礎結構健康情況 ,例如記憶體。 例如,結合 Azure 儲存體 計量與管線執行數據,可協助您將基礎結構優化,以提升效能或發現問題的根本原因。
Azure 會自動收集及儲存平臺計量和活動記錄。 您可以使用診斷設定將數據路由傳送至其他位置。 將診斷記錄設定為集中式Log Analytics工作區,以便跨數個工作區實例的可觀察性。 使用 Azure 原則 自動設定新機器學習工作區的記錄到此中央 Log Analytics 工作區。
Azure 原則
您可以透過 Azure 原則 強制執行和稽核工作區上的安全性功能使用方式。 建議包括:
- 強制執行自定義管理的金鑰加密。
- 強制執行 Azure Private Link 和私人端點。
- 強制執行私人 DNS 區域。
- 停用非 Azure AD 驗證,例如安全殼層 (SSH)。
如需詳細資訊,請參閱 Azure 機器學習 的內建原則定義。
您也可以使用自定義原則定義,以彈性的方式控管工作區安全性。
計算叢集和實例
下列考慮和建議適用於機器學習計算叢集和實例。
磁碟加密
計算實例或計算叢集節點的操作系統 (OS) 磁碟會儲存在 Azure 儲存體,並使用 Microsoft 管理的金鑰加密。 每個節點也有本機暫存磁碟。 如果工作區是以 參數建立,則暫存磁碟也會使用 hbi_workspace = True
Microsoft 管理的密鑰加密。 如需詳細資訊,請參閱使用 Azure 機器學習 進行數據加密。
受控識別
計算叢集支援使用受控識別向 Azure 資源進行驗證。 針對叢集使用受控識別可讓資源進行驗證,而不需要在您的程式代碼中公開認證。 如需詳細資訊,請參閱建立 Azure 機器學習 計算叢集。
安裝腳本
您可以使用安裝文稿,在建立時自動化計算實例的自定義和設定。 身為系統管理員,您可以撰寫自定義腳本,以在工作區中建立所有計算實例時使用。 您可以使用 Azure 原則 來強制使用安裝腳本來建立每個計算實例。 如需詳細資訊,請參閱建立和管理 Azure 機器學習 計算實例。
代表建立
如果您不想讓數據科學家布建計算資源,您可以代表他們建立計算實例,並將其指派給數據科學家。 如需詳細資訊,請參閱建立和管理 Azure 機器學習 計算實例。
已啟用私人端點的工作區
使用計算實例搭配已啟用私人端點的工作區。 計算實例會拒絕虛擬網路外部的所有公用存取。 此設定也會防止封包篩選。
Azure 原則 支援
使用 Azure 虛擬網路時,您可以使用 Azure 原則 來確保每個計算叢集或實例都是在虛擬網路中建立,並指定預設的虛擬網路和子網。 使用 受控虛擬網路時不需要此原則,因為計算資源會自動在受控虛擬網路中建立。
您也可以使用原則來停用非 Azure AD 驗證,例如 SSH。
下一步
深入了解機器學習安全性設定:
開始使用機器學習範本型部署:
深入瞭解部署機器學習的架構考慮文章:
瞭解小組結構、環境或區域限制如何影響工作區設定。
瞭解如何跨小組和使用者管理計算成本和預算。
了解機器學習DevOps(MLOps),其使用人員、程式和技術的組合來提供強固、可靠且自動化的機器學習解決方案。