管理虛擬機器合規性

Azure 原則

本文說明如何在不中斷 DevOps 實務的前提下管理虛擬機(VM)合規。 使用 Azure VM 映射產生器和 Azure 計算資源庫,將系統映像的風險降到最低。 解決方案包含金牌影像發布流程與虛擬機合規追蹤流程。

Architecture

這張圖展示了該解決方案如何管理 Azure 的 Microsoft Marketplace 映像檔。

下載此架構的 Visio 檔案

數據流

以下章節將描述此解中的兩個過程。

金像出版社

下列資料流程對應至上一個圖表:

  1. 每個月,黃金映像檔發佈流程會從 Microsoft Marketplace 擷取一張基礎映像檔。 金色圖片是市集圖片的已發佈版本。

  2. VM 映射產生器會自定義映像。

  3. 影像刺青過程會追蹤影像版本資訊,如來源和發佈日期。

  4. 自動化測試會驗證映像。

  5. 如果映射失敗任何測試,它會返回自定義步驟以進行修復。

  6. 此程式會發佈完成的映像。

  7. 計算圖庫提供映像給 DevOps 團隊。

VM 合規追蹤

圖示顯示解決方案如何透過指派政策定義、評估機器,並在儀表板中顯示資料來管理合規。

下載此架構的 Visio 檔案

下列資料流程對應至上一個圖表:

  1. VM 合規追蹤流程使用 Azure Policy 指派政策定義給虛擬機並評估其合規性。

  2. Azure 原則 將 VM 和其他 Azure 資源的合規性數據發佈至 Azure 原則 儀錶板。

Components

  • VM 映射產生器 是自定義系統映像的受控服務。 它建立 DevOps 團隊使用的映像檔。 在此架構中,VM Image Builder 每月擷取 Marketplace 的基礎影像,套用強化變更,並安裝代理程式。 這個過程中的形象建構就是黃金影像。

  • Compute Gallery 是 Azure 的一項服務,用於儲存和整理自訂虛擬機映像檔。 它集中管理映像,並控制內部團隊及你授權的外部租戶的存取權限。 在此架構中,Compute Gallery 儲存了 DevOps 團隊必須使用的黃金影像。 Azure 政策強制 DevOps 團隊只能從此圖庫中的映像檔配置虛擬機。

  • Azure Policy 是一項提供政策定義的 Azure 治理服務。 您可以利用這些定義來執行組織的標準,並大規模評估合規性。 Azure Policy 儀表板會顯示 Azure Policy 評估結果,並隨時告知資源的合規狀態。 在此架構中,Azure Policy 會為虛擬機指派政策定義,評估其合規性,並將結果發佈至 Azure Policy 儀表板,並限制 DevOps 團隊只能使用運算庫映像檔。

  • Azure Policy 的 Azure 機器設定功能提供一種動態審計或透過程式碼指派機器設定的方式。 配置通常包含環境或作業系統設定。 在此架構中,Azure 機器組態會稽核映像自訂所建立的設定,並在設定漂移發生時,於 Azure Policy 儀表板中標記虛擬機為不合規。

Alternatives

  • 你可以使用非 Microsoft 的工具來管理合規。 通常你需要在目標虛擬機上安裝代理程式,可能還要支付授權費用。

  • 你可以使用 自訂腳本擴充功能 在虛擬機上安裝軟體,或在部署後設定虛擬機。 每個虛擬機或虛擬機擴充套件僅支援一個自訂腳本擴充功能。

案例詳細資料

合規法規、安全標準及可接受的風險水準因組織與地區而異。

在動態擴展的雲端環境中,不同標準可能比本地系統更難遵守。 當團隊使用 DevOps 實務時,通常對誰能建立像虛擬機這樣的 Azure 資源的限制較少。 這種彈性使合規工作變得複雜。

Azure Policy 與基於角色的存取控制(RBAC)任務能協助企業對 Azure 資源執行標準。 但對於虛擬機,這些控制只適用於控制平面或虛擬機的路由。 在虛擬機上執行的系統映像檔構成安全威脅。 有些公司阻止開發者存取虛擬機,這降低了敏捷性,也讓執行 DevOps 實務變得困難。

此解決方案使用 VM Image Builder、Compute Gallery 與 Azure Policy 來管理 Azure 上的虛擬機合規性。 它追蹤合規性,降低執行於虛擬機上的系統映像檔風險,並支援 DevOps 實務。

潛在的使用情境

如果您的組織使用虛擬機且需要以下事項,請使用此解決方案:

  • 為 DevOps 團隊提供優質映像。

  • 在將映像檔提供給 DevOps 團隊之前,請先測試並驗證。

  • 追蹤每個 DevOps 團隊使用的映像檔。

  • 在不損失生產力的情況下執行公司標準。

  • 確保 DevOps 團隊使用最新的映像檔版本。

  • 管理寵物 伺服器的合規管理,這些伺服器維護密集,而牛隻 伺服器則容易更換。

Approach

下列各節提供解決方案方法的詳細描述。

識別寵物和牛

DevOps 團隊 會用寵物和牛 群的比喻來定義服務模式。 要追蹤虛擬機的合規情況,首先要判斷它是寵物伺服器還是牛群伺服器:

  • 寵物伺服器需要大量關注,且不容易被替換。 恢復寵物伺服器需要相當多的時間和財務資源。 例如,執行 SAP 的伺服器可能是寵物。 除了伺服器上的軟體外,其他考量也可能決定服務模式。 當容錯度低時,即時及近即時系統中的生產伺服器也可能成為寵物。

  • 牛隻服務員屬於同一組,且容易更換。 例如,在虛擬機縮放集中執行的虛擬機是牛群。 測試環境伺服器是牛隻的另一個例子,當它們符合以下條件時:

    • 您可以使用自動化程式從頭開始建立伺服器。
    • 測試結束後,伺服器就要停用。

一個環境可能只包含寵物伺服器,或只有牛群伺服器。 相反地,環境中的一組 VM 可能是寵物。 相同環境中的一組不同 VM 可能是牛。

寵物與牛隻的合規考量有所不同:

  • 寵物合規性比牛合規性更具挑戰性。 通常只有 DevOps 小組可以追蹤和維護寵物環境和伺服器的合規性。 此方案提升了每隻寵物狀態的可見度,讓組織內的每個人都能追蹤合規狀況。

  • 針對牛群環境,請定期刷新虛擬機並從頭重建,以維持合規性。 您可以將此更新週期與 DevOps 團隊的常規發行節奏一致。

限制影像

不要讓 DevOps 團隊使用 Marketplace 虛擬機映像檔。 只允許計算資源庫發佈的 VM 映像。 此限制對虛擬機合規至關重要。 您可以使用 Azure 原則 中的自定義原則來強制執行這項限制。 如需範例,請參閱 允許映像發行者

作為解決方案的一部分,VM Image Builder 應該使用 Marketplace 映像檔。 使用市場中最新的可用圖片非常重要。 把自訂設定套用在那張圖片上。 市集上的圖片會經常更新,並包含預設配置,使圖片自動具備安全性。

自訂圖片

黃金映像檔是市場映像檔的客製化版本,發佈到 Compute Gallery 供 DevOps 團隊使用。 自定義活動對每個企業而言都是獨一無二的。 常見的活動包括:

  • 作業系統強化

  • 非 Microsoft 軟體的自訂代理程式部署

  • 企業憑證授權中心(CA)根憑證的安裝

你可以使用 VM Image Builder 來調整作業系統設定並執行自訂腳本和指令來自訂映像檔。 VM 映射產生器支援 Windows 和 Linux 映射。 欲了解更多資訊,請參閱 Azure Policy 關於 Azure 虛擬機的法規遵循控制

Important

Azure 虛擬網路預設是缺乏外接連線的私有子網。 如果你的虛擬機映像建構器建置需要外出網路存取,例如下載更新,你必須明確設定你指定的子網路外接。

透過使用 Trusted Launch 強化影像

除了應用程式層級的自訂外,黃金映像應該建立起從開機到執行階段的硬體基礎信任鏈。 Trusted Launch 為第二代虛擬機提供了這樣的基礎。 配置金色影像,並具備以下可信發射功能:

  • 安全啟動: 確保只有簽署且受信任的作業系統載入器、核心與驅動程式在啟動時執行。 這種做法可以防止 bootkit 和 rootkit 的攻擊。

  • 虛擬可信平台模組(vTPM): 模擬虛擬機內部的硬體可信平台模組(TPM),並提供加密金鑰、憑證及開機測量的安全儲存。 vTPM 支援像是 BitLocker 磁碟加密和密碼學訪客證明等情境。

  • 開機完整性監控: 測量整個開機鏈,並將遙測數據呈現給 Microsoft Defender for Cloud。

Note

並非所有虛擬機大小和作業系統映像都支援可信啟動。 在 影像驗證階段驗證相容性。

追蹤圖像紋身

影像標記是追蹤虛擬機器所使用的所有影像版本資訊的過程。 這項資訊在疑難解答期間非常寶貴,可以包括:

  • 圖片的原始來源,例如出版商的名稱和版本。

  • 作業系統版本字串用於原地升級。

  • 您自定義影像的版本。

  • 您的發佈日期。

您追蹤的資訊數量和類型取決於您組織的合規性層級。

針對 Windows VM 上的映射紋身,請設定自定義登錄。 將所有必要資訊以鍵值對形式新增到此登錄路徑中。 在 Linux 虛擬機上,將影像刺青資料輸入環境變數或檔案。 把檔案 /etc/ 放在不會與開發者工作或應用程式衝突的資料夾裡。 若要使用 Azure Policy 追蹤或報告刺青資料,請將每段資料儲存為獨特的鍵值對。 更多資訊請參閱 「尋找市集圖片版本」。

為金色影像產生軟體材料清單

影像刺青會記錄影像的元資料,如來源、版本及發佈日期。 軟體材料清單(SBOM)補充刺青,記錄圖像內的內容,如作業系統套件、代理程式、函式庫和補丁。 這些庫存支援漏洞應變、合規稽核及供應鏈透明度。

金色影像的SBOM在以下方面有幫助:

  • 更快的常見漏洞與暴露(CVE)回應: 當揭露嚴重漏洞時,SBOM 會識別包含受影響元件的黃金映像版本。

  • 法規遵循: 法規法規與標準通常要求軟體產物必須設置SBOM。 VM 映像檔是軟體供應鏈的一部分。

  • 審計可追溯性: 當你將影像刺青與 SBOM 結合時,稽核人員能完整了解虛擬機執行哪張影像,以及該影像在建置時包含哪些軟體元件。

在映像建置時產生 SBOM

在自訂後、驗證前,立即將 SBOM 產生作為虛擬機映像建構器流程中的一個步驟。

使用開源的 Microsoft SBOM 工具 ,以 SPDX 格式產生 SBOM。 該工具列舉已安裝的作業系統套件、代理程式及相依性。 在自訂映像上執行此工具,作為虛擬機影像建構器的自訂步驟,或是作為後續自訂腳本在你的管線中執行。 對產生的 SBOM 進行加密簽署以確保其完整性。

將 SBOM 與影像一同儲存。 將 SBOM 上傳到 Azure Storage 帳號或與 Compute Gallery 映像版本連結的產物儲存庫。 使用一致的命名規則,將每個 SBOM 檔案對應到其映像定義、版本及建置日期。 至少在映像檔版本仍在使用的期間,保持 SBOM 的可用性。

透過自動化測試驗證黃金影像

一般來說,你應該每月更新黃金圖片,以保持市場圖片的最新更新與變更。 針對此目的,請使用反覆測試程式。 作為映像建立程式的一部分,請使用 Azure 管線或其他自動化工作流程進行測試。 設定流程,部署新的虛擬機,在每個月初前執行測試。 測試應該在你發佈圖片供消費前確認已準備好的影像。 透過使用測試自動化解決方案,或在虛擬機上執行指令或批次處理來自動化測試。

常見的測試案例包括:

  • 驗證虛擬機的開機時間。

  • 確認映像檔的客製化設定,例如作業系統設定或代理程式部署。

失敗的測試應該會中斷進程。 在解決問題根源後再重複測試。 如果測試順利進行,自動化測試流程就能減少維持常青狀態所需的努力。

發佈黃金映像

將最終映像檔發佈在 Compute Gallery 中,作為管理映像檔,供 DevOps 團隊使用。 將早期影像標記為過時。 如果你還沒在 Compute Gallery 設定圖片版本的終止日期,請考慮根據公司政策停止使用最舊的圖片。

Note

Compute Gallery 的 軟刪除功能(預覽) 提供 7 天的恢復視窗,讓誤刪的圖片得以恢復。 考慮在您的相簿啟用軟刪除功能,以防止圖片意外遺失。

欲了解更多使用計算圖庫時適用的限制資訊,請參閱「 儲存與分享圖片於 Compute Gallery」。

在不同地區發布最新影像是一個良好的做法。 你可以使用 Compute Gallery 管理映像檔在不同 Azure 區域的生命週期與複製。

重新整理黃金影像

當應用程式使用映像時,底層作業系統映像可能難以因近期的合規變更而更新。 嚴格的商務需求可能會使更新基礎虛擬機的過程變得複雜。 對於業務關鍵的虛擬機來說,刷新也很複雜。

牛伺服器是可替換的,因此你可以與 DevOps 團隊協調,在計畫性維護時段中定期刷新它們以進行常規維護。

寵物伺服器刷新難度更高。 停止映像可能會讓應用程式面臨風險。 在擴展時,Azure 找不到相應的映像檔,導致失敗。

在更新寵物伺服器時,請考慮以下指引:

Note

VM Image Builder 支援當你的建置管線符合特定條件時自動建立映像檔。 在 VM Image Builder 設定觸發器,每月自動刷新圖片。 欲了解更多資訊,請參閱 「啟用使用 VM Image Builder 觸發器自動建立映像」。

緊急修補關鍵漏洞

每月的黃金映像更新頻率適合例行更新,但關鍵的安全漏洞與 CVE 需要在下一個預定週期前採取行動。 建立一個獨立於每月頻率並按需觸發的帶外(OOB)緊急補丁流程。 訂閱 Azure Service Health 與 Microsoft Security Response Center 的通知,以接收影響你基礎映像的 CVE 警示。

當關鍵的 CVE 影響已發佈的黃金映像時,應立即採取行動,防止新虛擬機配置該有漏洞版本。 首先,將受影響的映像版本標記為排除在 Azure 用戶或自動化請求最新版本時所選擇的映像版本之外。 在 Compute Gallery 中,將 excludeFromLatest 屬性設為 true 於每一個受影響的映像版本。 此變更後,自動化及用戶請求最新可用版本時,將不再收到有漏洞版本。 使用 Azure Policy 指派描述連結到一個 runbook 或內部 wiki,裡面列出了 CVE、受影響的映像版本以及所需的修復措施。

觸發 OOB 映像構建

使用與每月金版映像相同的 VM Image Builder 流程,但按需觸發:

  1. 安裝安全修補程式。 將關鍵修正加入映像自訂步驟,例如作業系統更新、設定變更或腳本來修復特定漏洞。

  2. 執行自動化測試套件。 不要跳過驗證。 每月週期中執行的測試也應該用於緊急版本建置。

  3. 發佈修補過的映像檔。 將新的影像版本發佈到 Compute Gallery,並複製到所有需要的區域。 受影響的版本會被排除在最新版本選擇之外,因此已修補的版本自動成為新部署使用的版本。

  4. 更新刺青圖像。 在映像標記中記錄更新的 OOB 性質,並包含 CVE 識別碼、補丁日期,以及一個旗標,以區分它與每月例行發佈。 這些數據支持合規稽核。

Important

OOB 補丁用於配合每月的更新節奏,但不會取代它。 持續每月定期更新以捕捉累積更新,並嚴格使用緊急處理程序處理需要立即行動的漏洞。

提升能見度

一般來說,你應該使用 Azure Policy 來管理控制平面的合規活動。 你也可以使用 Azure Policy 執行以下任務:

  • 追蹤虛擬機合規情況。

  • 安裝 Azure 代理程式。 使用 Azure Monitor 代理 來監控。

  • 擷取診斷日誌。

  • 提升虛擬機合規的可視性。

使用 Azure 機器設定來審核你在映像自訂過程中所做的設定變更。 當漂移發生時,Azure Policy 儀表板會將受影響的虛擬機列為不合規。 Azure Policy 可以利用影像打標資訊來追蹤您何時使用過期的映像或操作系統。

稽核每個應用程式的寵物伺服器。 你可以透過使用 Azure 政策來提升這些伺服器的可視性,這些政策具有 審計效果。 根據公司可接受的風險程度及內部風險管理流程,調整稽核流程。

每個 DevOps 小組都可以在 Azure 原則 儀錶板中追蹤其應用程式的合規性層級,並採取適當的更正動作。 當您將這些政策指派給管理團隊或訂閱時,請在指派說明中包含全公司關於該政策的文件網址。 你的文件應該列出 DevOps 團隊應該遵循的步驟,以使他們的虛擬機符合規範。

IT 風險管理人員與資安人員也可利用 Azure Policy 儀表板,根據公司可接受的風險等級管理公司風險。

Azure 機器配置帶有修復選項,會自動套用修正措施。 但頻繁查詢或修改你用於商業關鍵應用程式的虛擬機,可能會影響效能。 請仔細規劃生產工作負載的補救動作。 指派一個 DevOps 團隊負責所有環境中的應用程式合規責任。 這種方法適用於寵物伺服器和環境,這些通常是長期的 Azure 元件。

黃金形象衛生的最佳實踐

良好的映像建置流程能避免導致安全事件、配置漂移及操作摩擦的常見錯誤。 在自訂和維護金色圖片時,請遵循以下指引:

  • 永遠不要把秘密藏在圖片裡。 不要在圖片中嵌入 API 金鑰、連線字串、密碼、憑證的私鑰或權杖。 當你在映像檔中嵌入秘密時,你會將它們暴露給所有使用該映像檔的虛擬機,以及所有擁有 Compute Gallery 讀取權限的人。 相反地,可以在執行時使用受管理身份Azure Key Vault 取回秘密。

  • 偏好外部設定而非硬編碼值。 外部化可能在不同環境間或下一次映像檔建置前變動的設定,例如端點、特徵旗標、區域設定或日誌層級。 預留映像自訂功能,適用於所有部署中靜態且通用的設定。

  • 盡量減少軟體負擔。 只安裝每個映像使用者都需要的元件。 在配置後,透過擴充或組態管理,部署針對單一使用情境或工作負載的額外工具。 較小的佔用空間減少攻擊面及需要修補的元件數量。

  • 從映像中排除應用程式程式碼與部署產物。 黃金映像應提供安全且符合規範的作業系統基礎。 透過持續整合與持續交付(CI/CD)管線,分別部署應用程式碼。 這種分離使影像生命週期與應用程式生命週期保持獨立。

  • 使用確定性且可重複的建置腳本。 在你的自訂腳本中釘選套件版本。 避免使用 apt-get upgradeyum update 這類會在不同建置日產生不同圖像的指令。

Considerations

這些考量實現了 Azure Well-Architected 框架的支柱,這是一套指導原則,用以提升工作負載的品質。 如需詳細資訊,請參閱 Well-Architected Framework

Reliability

可靠性有助於確保您的應用程式可以符合您對客戶的承諾。 如需詳細資訊,請參閱 可靠性的設計檢閱檢查清單。

此解決方案會使用在區域層級自動復原的受控元件。 欲了解更多資訊,請參閱 Azure 設計韌性應用

你可以設定 Compute Gallery 儲存的每張影像的副本數量。 副本數量越多,能降低同時配置多台虛擬機時的限速風險。 更多資訊請參閱 計算庫縮放

成本優化

成本優化著重於減少不必要的費用,並提升營運效率的方式。 如需詳細資訊,請參閱 成本優化的設計檢閱檢查清單。

如果你只使用 Microsoft 服務,可以避免像 Ansible 或 Terraform 這類非 Microsoft 工具的額外成本。 然而,Azure 收費仍可能適用於儲存、出口、映像建立、複寫及混合資源。 其他潛在費用涉及下列元件:

  • Azure Policy 和 Azure 機器配置 對 Azure 資源免費。 如果你們公司採用混合方式,Azure Arc 資源會額外收費。

  • VM Image Builder 使用具有 1 個 vCPU 和 3.5 GB RAM 的單一運算執行個體類型。 數據儲存和傳輸可能會收取費用。

  • Compute Gallery 僅對複本儲存及與影像複製相關的網路出口收費。

Contributors

本文由 Microsoft 維護。 以下貢獻者撰寫了這篇文章。

主要作者:

若要查看非公開的 LinkedIn 個人檔案,請登入 LinkedIn。

後續步驟