本文說明如何管理虛擬機合規性,而不會影響 DevOps 做法。 使用 Azure VM 映射產生器和 Azure 計算資源庫,將系統映像的風險降到最低。
架構
解決方案包含兩個程式:
- 黃金映像發佈程式
- 追蹤虛擬機 (VM) 合規性的程式
下載此架構的 Visio 檔案。
資料流程
黃金映像發佈程式會每月執行,並包含下列步驟:
- 此程式會從 Azure Marketplace 擷取基底映像。
- VM 映射產生器會自定義映像。
- 影像紋身的程式會追蹤影像版本資訊,例如來源和發行日期。
- 自動化測試會驗證映像。
- 如果映射失敗任何測試,它會返回自定義步驟以進行修復。
- 此程式會發佈完成的映像。
- 計算資源庫可讓 DevOps 小組使用映像。
下載此架構的 Visio 檔案。
追蹤 VM 合規性的程式包含下列步驟:
- Azure 原則 將原則定義指派給 VM,並評估 VM 的合規性。
- Azure 原則 將 VM 和其他 Azure 資源的合規性數據發佈至 Azure 原則 儀錶板。
元件
VM 映射產生器 是自定義系統映像的受控服務。 此服務會建置並散發DevOps小組所使用的映像。
計算資源庫 可協助您建構及組織自定義映像。 藉由將映像儲存在存放庫中,此服務會提供對映像的受控存取。 用戶可以在組織內外。
Azure 原則 提供原則定義。 您可以使用這些定義來強制執行貴組織的標準,並大規模評估合規性。 Azure 原則 儀錶板會顯示來自 Azure 原則 評估的結果。 此數據可讓您了解資源的合規性狀態。
Azure 原則的 Azure 自動管理機器設定功能可讓您透過程式代碼動態稽核或指派設定給機器。 這些組態通常包括環境或操作系統設定。
替代項目
您可以使用第三方工具來管理合規性。 但是,使用這種類型的工具,您通常需要在目標 VM 上安裝代理程式。 您可能也必須支付授權費用。
您可以使用 自定義腳本擴充 功能在 VM 上安裝軟體,或在部署後設定 VM。 但每個 VM 或虛擬機擴展集只能有一個自定義腳本擴充功能。 如果您使用自定義腳本擴充功能,則會防止DevOps小組自定義其應用程式。
案例詳細資料
每個企業都有自己的合規性法規和標準。 關於安全性,每個公司都有自己的風險偏好。 安全性標準可能不同於一個組織到另一個組織,以及從一個區域到另一個區域。
在動態調整雲端環境方面,遵循不同的標準比在內部部署系統中更具挑戰性。 當小組使用DevOps做法時,通常較少限制誰可以建立 Azure 資源,例如 VM。 這一事實使合規性挑戰複雜化。
藉由使用 Azure 原則 和角色型訪問控制指派,企業可以在 Azure 資源上強制執行標準。 但是使用 VM 時,這些機制只會影響控制平面或 VM 的路由。 在 VM 上執行的系統映像仍然會造成安全性威脅。 某些公司會防止開發人員存取 VM。 這種方法會損害靈活性,使其難以遵循DevOps做法。
本文提供一個解決方案,可用來管理在 Azure 上執行的 VM 合規性。 除了追蹤合規性之外,解決方案也會將 VM 上執行之系統映像的風險降到最低。 同時,解決方案與 DevOps 做法相容。 核心元件包括 Azure VM 映射產生器、Azure 計算資源庫和 Azure 原則。
潛在使用案例
此解決方案適用於具有完成這些工作的 Azure 登陸區域 的組織:
- 為 DevOps 小組提供黃金映像 。 黃金映像是市集映像的已發佈版本。
- 先測試並驗證映像,再提供給 DevOps 小組使用。
- 追蹤每個 DevOps 小組所使用的映像。
- 在不降低生產力的情況下強制執行公司標準。
- 確保 DevOps 小組使用最新的映像版本。
- 管理寵物伺服器的合規性 ,這些伺服器需要大量維護,以及 可輕鬆更換的養牛伺服器。
方法
下列各節提供解決方案方法的詳細描述。
識別寵物和牛
DevOps 小組會使用稱為寵物和牛的類比來定義服務模型。 若要追蹤 VM 的合規性,請先判斷其為寵物或牛伺服器:
寵物需要注意。 他們不容易分配。 復原寵物伺服器需要投入相當長的時間和財務資源。 例如,執行 SAP 的伺服器可能是寵物。 除了在伺服器上執行的軟體之外,其他考慮也可以判斷服務模型。 如果您有低容錯能力,則實際執行伺服器和近乎即時的系統也可以是寵物。
牛伺服器是相同群組的一部分。 您可以輕易地取代它們。 例如,在虛擬機擴展集中執行的 VM 是牛。 如果集合中有足夠的 VM,您的系統會持續執行,而且您不需要知道每個 VM 的名稱。 測試符合下列條件的環境伺服器提供另一個牛範例:
- 您可以使用自動化程式從頭開始建立伺服器。
- 完成測試之後,您會將伺服器解除委任。
環境可能只包含寵物伺服器,或只包含牛伺服器。 相反地,環境中的一組 VM 可能是寵物。 相同環境中的一組不同 VM 可能是牛。
若要管理合規性:
- 寵物合規性比牛合規性更具挑戰性。 通常只有 DevOps 小組可以追蹤和維護寵物環境和伺服器的合規性。 但本文的解決方案會增加每個寵物狀態的可見度,讓組織中的每個人都更容易追蹤合規性。
- 針對牛環境,請重新整理 VM,並定期從頭重建它們。 這些步驟應足以符合規範。 您可以將此重新整理週期與 DevOps 小組的一般發行頻率一致。
限制影像
不允許DevOps小組使用 Azure Marketplace VM 映像。 只允許計算資源庫發佈的 VM 映像。 這項限制對於確保 VM 合規性至關重要。 您可以使用 Azure 原則 中的自定義原則來強制執行這項限制。 如需範例,請參閱 允許映像發行者。
在此解決方案中,VM 映射產生器應該使用 Azure Marketplace 映像。 請務必使用 Azure Marketplace 中可用的最新映像。 在該映像頂端套用任何自定義專案。 Azure Marketplace 映射會經常重新整理,而且每個映射都有特定的預設設定,以確保您的映像預設安全。
自定義影像
黃金映像是發行至計算資源庫的市集映像版本。 DevOps 小組可使用黃金映像供取用。 發佈映像之前,會進行自定義。 自定義活動對每個企業而言都是獨一無二的。 常見的活動包括:
- 操作系統強化。
- 為第三方軟體部署自定義代理程式。
- 安裝企業證書頒發機構單位 (CA) 跟證書。
您可以使用 VM 映射產生器來自定義映像,方法是調整作業系統設定,以及執行自定義腳本和命令。 VM 映射產生器支援 Windows 和 Linux 映射。 如需自定義映像的詳細資訊,請參閱 azure 虛擬機器 Azure 原則 法規合規性控制。
追蹤圖像紋身
映射紋身是追蹤 VM 使用的所有映像版本設定資訊的程式。 這項資訊在疑難解答期間非常寶貴,可以包括:
- 映射的原始來源,例如發行者的名稱和版本。
- 如有就地升級,您需要的操作系統版本字串。
- 自定義映像的版本。
- 您的發佈日期。
您追蹤的資訊數量和類型取決於您組織的合規性層級。
針對 Windows VM 上的映射紋身,請設定自定義登錄。 將此登錄路徑中的所有必要資訊新增為機碼/值組。 在 Linux VM 上,將影像紋身數據輸入環境變數或檔案。 將檔案放在 /etc/
資料夾中,其中不會與開發人員工作或應用程式發生衝突。 如果您想要使用 Azure 原則 來追蹤紋身數據或報告,請將每個數據片段儲存為唯一的索引鍵/值組。 如需判斷 Marketplace 映射版本的資訊,請參閱 如何尋找 Marketplace 映射版本。
使用自動化測試驗證黃金映像
一般而言,您應該每月重新整理黃金映像,以隨時掌握 Azure Marketplace 映射的最新更新和變更。 針對此目的,請使用反覆測試程式。 作為映像建立程式的一部分,請使用 Azure 管線或其他自動化工作流程進行測試。 設定管線,以在每個月開始之前部署新的 VM 以執行測試。 測試應該先確認已剖析的影像,再發佈映像以供取用。 使用測試自動化解決方案或在 VM 上執行命令或批次,將測試自動化。
常見的測試案例包括:
- 驗證 VM 開機時間。
- 確認映像的任何自定義,例如操作系統組態設定或代理程式部署。
失敗的測試應該會中斷進程。 在解決問題的根本原因之後,重複測試。 如果測試執行時沒有問題,自動化測試程式會減少維持常青狀態的工作。
發佈黃金映像
將計算資源庫上的最終映射發佈為受控映像,或發佈DevOps小組可以使用的虛擬硬碟 (VHD)。 將任何先前的影像標示為過時。 如果您尚未在計算資源庫中設定映像版本的生命週期結束日期,建議您停止最舊的映像。 此決策取決於您公司的原則。
如需當您使用計算資源庫時所套用的限制資訊,請參閱 在 Azure 計算資源庫中儲存和共用映像。
另一個最佳做法是跨不同區域發佈最新的映像。 透過計算資源庫,您可以管理跨不同 Azure 區域的映射生命週期和複寫。
如需計算資源庫的詳細資訊,請參閱 在 Azure 計算資源庫中儲存和共用映像。
重新整理黃金影像
當映像用於應用程式時,很難以最近的合規性變更來更新基礎操作系統映像。 嚴格的商務需求可能會使重新整理基礎 VM 的程式複雜化。 當 VM 對企業至關重要時,重新整理也會很複雜。
由於牛伺服器是可分配的,因此您可以與 DevOps 小組協調,以在計劃性維護期間將這些伺服器重新整理為一般商務活動。
重新整理寵物伺服器更具挑戰性。 停止映像可能會讓應用程式面臨風險。 在向外延展案例中,Azure 找不到個別的映像,導致失敗。
重新整理寵物伺服器時,請考慮下列指導方針:
如需最佳做法,請參閱 Azure 良好架構架構中可靠性要素 的概觀。
若要簡化此程式,請參閱這些檔所討論的原則:
將每個寵物伺服器標記為寵物。 在 Azure 原則 中設定原則,以在重新整理期間將此標籤納入考慮。
改善可見度
一般而言,您應該使用 Azure 原則 來管理任何控制平面合規性活動。 您也可以針對下列專案使用 Azure 原則:
- 追蹤 VM 合規性。
- 安裝 Azure 代理程式。
- 擷取診斷記錄。
- 改善 VM 合規性的可見度。
使用 Azure 原則 的 Azure 自動管理機器組態功能,稽核您在映像自定義期間所做的設定變更。 發生漂移時,Azure 原則 儀錶板會將受影響的 VM 列為不符合規範。 Azure 原則 可以使用影像紋身信息來追蹤何時使用過期的映像或操作系統。
稽核每個應用程式的寵物伺服器。 藉由搭配稽核效果使用 Azure 原則,您可以改善這些伺服器的可見度。 根據公司的風險偏好和內部風險管理程序來調整稽核程式。
每個 DevOps 小組都可以在 Azure 原則 儀錶板中追蹤其應用程式的合規性層級,並採取適當的更正動作。 當您將這些原則指派給管理群組或訂用帳戶時,請提供指派描述導致全公司Wiki的URL。 您也可以使用簡短 URL, 例如 aka.ms/policy-21
。 在Wiki中,列出DevOps小組應採取的步驟,使其VM符合規範。
IT 風險管理和安全人員也可以使用 Azure 原則 儀錶板,根據公司的風險偏好來管理公司風險。
透過使用 Azure 原則 的 Azure Automanage Machine 組態功能搭配補救選項,您可以自動套用更正動作。 但是經常詢問 VM,或在您用於業務關鍵應用程式的 VM 上進行變更可能會降低效能。 請仔細規劃生產工作負載的補救動作。 在所有環境中提供應用程式合規性的DevOps小組擁有權。 這種方法對於寵物伺服器和環境而言非常重要,通常是長期 Azure 元件。
考量
這些考量能實作 Azure Well-Architected Framework 的支柱,其為一組指導原則,可以用來改善工作負載的品質。 如需更多資訊,請參閱 Microsoft Azure 結構完善的架構。
延展性
您可以設定計算資源庫儲存每個映像的複本數目。 較高的複本數目可同時布建多個 VM 時,將節流的風險降到最低。 如需調整和設定適當復本數目的一般指引,請參閱 調整 Azure 計算資源庫。
復原
此解決方案會使用在區域層級自動復原的受控元件。 如需設計復原解決方案的一般指引,請參閱 設計適用於 Azure 的復原應用程式。
成本最佳化
成本最佳化是關於考慮如何減少不必要的費用,並提升營運效率。 如需詳細資訊,請參閱成本最佳化支柱的概觀。
除非您使用 Ansible 或 Terraform 之類的第三方服務,否則這種方法幾乎是免費的。 可能會套用記憶體和輸出成本。 其他潛在費用涉及下列元件:
Azure 原則和Azure 自動管理機器設定是免費的 Azure 資源。 如果您的公司使用混合式方法,Azure Arc 資源會產生額外費用。
在公開預覽期間, VM 映射產生器 會使用具有1個 vCPU和3.5 GB RAM的單一計算實例類型。 數據儲存和傳輸可能會收取費用。
計算資源庫 沒有費用,但下列專案除外:
- 儲存複本的成本。
- 複寫映像的網路輸出費用。
參與者
本文由 Microsoft 維護。 原始投稿人如下。
主要作者:
- 尤努斯·埃姆雷·阿爾波森 |計劃架構師
若要查看非公開的 LinkedIn 設定檔,請登入 LinkedIn。
下一步
- Azure 登陸區域
- 使用 Azure 原則 來控制和稽核您的資源
- Azure VM 映射產生器
- Azure Compute Gallery
- Azure 原則 和原則儀錶板
- Azure Automanage Machine 組態