Azure Machine Learning 的弱點管理

弱點管理牽涉到偵測、評估、緩和和報告任何存在於組織系統和軟體中的安全性弱點。 弱點管理是您與 Microsoft 之間的共同責任。

本文討論這些責任,並概述 Azure Machine Learning 所提供的弱點管理控制項。 您會了解如何使用最新的安全性更新,讓您的服務執行個體和應用程式保持在最新狀態,以及如何將攻擊者的機會降到最低。

Microsoft 管理的 VM 映像

Azure Machine Learning 管理 Azure Machine Learning 計算執行個體、Azure Machine Learning 計算叢集和資料科學虛擬機器的主機 OS 虛擬機器 (VM) 映像。 更新頻率為每月更新,包含下列詳細資料:

  • 針對每個新的 VM 映像版本,最新的更新會源自 OS 的原始發行者。 使用最新的更新有助於確保您取得所有適用的作業系統相關修補檔。 針對 Azure Machine Learning,發行者是所有 Ubuntu 映像的標準。 這些映像用於 Azure Machine Learning 計算執行個體、計算叢集和資料科學虛擬機器。

  • VM 映像會每月更新。

  • 除了原始發行者所套用的修補檔之外,Azure Machine Learning 會在更新提供時更新系統套件。

  • Azure Machine Learning 會檢查並驗證可能需要升級的任何機器學習套件。 在大多數情況下,新的 VM 映像會包含最新的套件版本。

  • 所有 VM 映像都是以定期執行弱點掃描的安全訂閱為基礎。 Azure Machine Learning 會標示任何未解決的弱點,並在下一個版本中加以修正。

  • 大部分映像的間隔頻率為每月。 針對計算執行個體,映像發行與預先安裝在環境中的 Azure Machine Learning SDK 發行日程一致。

除了一般發行日程之外,如果弱點浮現出來,Azure Machine Learning 也會套用 Hotfix。 Microsoft 會在 72 小時內為 Azure Machine Learning 計算叢集推出 Hotfix,在一週內為計算執行個體推出 Hotfix。

注意

主機作業系統不是您在定型或部署模型時為環境指定的作業系統版本。 環境會在 Docker 內執行。 Docker 會在主機作業系統上執行。

Microsoft 管理的容器映像

由 Azure Machine Learning 維護的基礎 Docker 映像會頻繁取得安全性修補檔,以解決新發現的弱點。

Azure Machine Learning 每隔兩周發行支援映像的更新,以解決弱點。 做為承諾,我們的目標是在最新版的支援映像中,找不到超過 30 天的弱點。

修補過的映像會以新的不可變標記和更新的 :latest 標記發行。 使用 :latest 標記或釘選到特定映像版本,可能是針對機器學習作業的安全性與環境重現性取捨。

管理環境和容器映像

重現性是軟體開發和機器學習實驗的重要層面。 Azure Machine Learning 環境元件的主要焦點,在於保證使用者的程式碼執行所在環境的重現性。 為了確保任何機器學習作業的重現性,會將先前的預先建立映像提取至計算節點,而不需要執行重新具體化。

雖然 Azure Machine Learning 會在每個版本中修補基礎映像,但是否使用最新映像,可能會在重現性與弱點管理之間進行取捨。 您必須負責選擇用於作業或模型部署的環境版本。

根據預設,當您建置環境時,相依性會分層在 Azure Machine Learning 所提供的基礎映像上。 使用 Azure Machine Learning 中的環境時,您也可以使用自己的基礎映像。 當您在 Microsoft 提供的映像上安裝更多相依性,或帶入您自己的基礎映像之後,弱點管理就會成為您的責任。

與 Azure Machine Learning 工作區相關聯的是 Azure Container Registry 執行個體,其可作為容器映像的快取。 任何具體化的映像會推送至容器登錄。 如果針對對應環境觸發實驗或部署,工作區就會使用它。

Azure Machine Learning 不會從容器登錄中刪除任何映像。 您必須負責評估一段時間的映像需求。 如要監視及維護環境的檢查,您可以使用適用於容器登錄的 Microsoft Defender 來協助掃描映像是否有弱點。 若要根據 Microsoft Defender 的觸發程序自動執行您的程序,請參閱自動化補救回應

使用私人套件存放庫

Azure Machine Learning 會使用 Conda 和 Pip 來安裝 Python 套件。 根據預設,Azure Machine Learning 會從公用存放庫下載套件。 如果您的組織只要求您從 Azure DevOps 摘要等私人存放庫尋找套件,您可以覆寫 Conda 和 Pip 設定,作為基礎映像以及計算執行個體環境設定的一部分。

下列範例設定示範如何移除預設通道,並新增您自己的私人 Conda 和 Pip 摘要。 請考慮使用計算執行個體設定指令碼進行自動化。

RUN conda config --set offline false \
&& conda config --remove channels defaults || true \
&& conda config --add channels https://my.private.conda.feed/conda/feed \
&& conda config --add repodata_fns <repodata_file_on_your_server>.json

# Configure Pip private indexes and ensure that the client trusts your host
RUN pip config set global.index https://my.private.pypi.feed/repository/myfeed/pypi/ \
&&  pip config set global.index-url https://my.private.pypi.feed/repository/myfeed/simple/

# In case your feed host isn't secured through SSL
RUN  pip config set global.trusted-host http://my.private.pypi.feed/

若要了解如何在 Azure Machine Learning 中指定您自己的基礎映像,請參閱從 Docker 建置內容建立環境。 如需設定 Conda 環境的詳細資訊,請參閱 Conda 網站上的手動建立環境檔案

計算主機上的弱點管理

Azure Machine Learning 中的受控計算節點會使用 Microsoft 受控 OS VM 映像。 當您佈建節點時,會提取最新的更新 VM 映像。 此行為適用於計算執行個體、計算叢集、無伺服器計算 (預覽) 和受控推斷計算選項。

雖然 OS VM 映像會定期修補,但 Azure Machine Learning 不會在使用時主動掃描計算節點是否有弱點。 針對額外的保護層,請考慮計算的網路隔離。

確保您的環境處於最新狀態,且計算節點使用最新的 OS 版本,是您與 Microsoft 之間的共同責任。 並非處於閒置狀態的節點無法更新為最新的 VM 映像。 每個計算類型的考量稍有不同,如下列各節所列。

計算執行個體

計算執行個體會在佈建時取得最新的 VM 映像。 Microsoft 會每個月發行新的 VM 映像。 部署計算執行個體之後,不會主動更新。 您可以查詢執行個體的作業系統版本。 若要讓軟體更新和安全性修補檔保持最新狀態,您可以使用下列其中一個方法:

  • 重新建立計算執行個體以取得最新 OS 映像 (建議)。

    如果您使用此方法,儲存在執行個體 OS 和暫存磁碟上的資料和自訂項目 (例如已安裝的套件) 都將會遺失。

    當您重新建立執行個體時:

    如需映像版本的詳細資訊,請參閱 Azure Machine Learning 計算執行個體映像發行備註

  • 定期更新 OS 和 Python 套件。

    • 使用 Linux 套件管理工具,以最新版本更新套件清單:

      sudo apt-get update
      
    • 使用 Linux 套件管理工具,以將套件升級到最新版本。 使用此方法時可能會發生套件衝突。

      sudo apt-get upgrade
      
    • 使用 Python 套件管理工具來升級套件並檢查更新:

      pip list --outdated
      

您可以在計算執行個體上安裝並執行額外的掃描軟體,以掃描安全性問題:

  • 使用 Trivy 來探索 OS 和 Python 套件層級弱點。
  • 使用 ClamAV 來探索惡意程式碼。 預先安裝在計算執行個體上。

目前不支援適用於伺服器的 Microsoft Defender 代理程式安裝。

請考慮使用自訂指令碼進行自動化。 如需結合 Trivy 和 ClamAV 的範例安裝指令碼,請參閱計算執行個體範例安裝指令碼

計算叢集

計算叢集會自動將節點升級為最新的 VM 映像。 如果您以 min nodes = 0 設定叢集,則會在所有作業都完成且叢集縮減為零個節點時,自動將節點升級為最新的 VM 映像版本。

在下列情況下,叢集節點不會縮小,因此無法取得最新的 VM 映像:

  • 叢集最小節點計數可設定為大於零的值。
  • 作業會在您的叢集上持續排程。

您必須負責縮小非閒置叢集節點,以取得最新的 OS VM 映像更新。 Azure Machine Learning 不會停止計算節點上任何正在執行的工作負載發出 VM 更新。 請暫時將節點的最小值變更為零,並允許叢集減少為零個節點。

受控線上端點

受控線上端點會自動接收包含弱點修正程式的 OS 主機映像更新。 映像的更新頻率至少為一個月一次。

該版本發行之後,計算節點就會自動升級為最新的 VM 映像版本。 您不需要採取任何動作。

客戶自控 Kubernetes 叢集

Kubernetes 計算可讓您設定 Kubernetes 叢集,以在 Azure Machine Learning 中定型、執行、推斷及管理模型。

由於您是使用 Kubenetes 來管理環境,因此作業系統 VM 弱點和容器映像弱點的管理都是您的責任。

Azure Machine Learning 經常會將新版本的 Azure Machine Learning 延伸模組容器映像發佈在 Microsoft 成品登錄中。 Microsoft 必須負責確保新映像版本不受弱點影響。 每個版本都會修正弱點。

當您的叢集在不中斷的情況下執行作業時,執行中的作業可能會執行過期的容器映像版本。 將 amlarc 延伸模組升級至執行中的叢集之後,新提交的作業就會開始使用最新的映像版本。 將 amlarc 延伸模組升級為最新版本時,請視需要從叢集中清除舊的容器映像版本。

若要觀察您的 Azure Arc 叢集是否正在執行最新版本的 amlarc,請使用 Azure 入口網站。 在類型 Kubernetes - Azure Arc 的 Azure Arc 資源下,移至「延伸模組」以尋找 amlarc 延伸模組的版本。

AutoML 與設計工具環境

針對以程式碼為基礎的定型體驗,您可控制使用的 Azure Machine Learning 環境。 使用 AutoML 和設計工具時,環境會封裝為服務的一部分。 這些類型的作業可在您設定的計算上執行,以允許額外的控制項,例如網路隔離。

AutoML 作業會在 Azure Machine Learning 基礎 docker 映像上層環境中執行。

設計工具作業會劃分至元件。 每個元件都有自己的環境,可在 Azure Machine Learning 基礎 docker 映像上分層。 如需元件的詳細資訊,請參閱元件參考

下一步