了解 Azure 機器設定
警告
本文參考 CentOS,這是處於終止服務 (EOL) 狀態的 Linux 發行版。 請據此考慮您的使用方式和規劃。 如需詳細資訊,請參閱 CentOS 生命週期結束指導。
Azure 原則的機器設定功能提供原生功能,可將作業系統設定當作程式碼來稽核或設定,這適用於在 Azure 中執行的機器,也適用於混合式已啟用 Arc 的機器。 您可以直接根據機器使用功能,或使用 Azure 原則大規模協調此功能。
Azure 中的設定資源旨在作為延伸模組資源。 您可以將每項設定視為機器額外的一組屬性。 組態可包含如下的設定:
- 作業系統設定
- 應用程式設定或目前狀態
- 環境設定
組態與原則定義不同。 機器設定會使用 Azure 原則,以動態方式將設定指派給機器。 您也可以手動將設定指派給機器,或使用 Automanage 等其他 Azure 服務。
下表提供了各種情節的範例。
類型 | 描述 | 範例故事 |
---|---|---|
設定管理 | 您想要在原始檔控制中,以程式碼來完整呈現伺服器。 部署應該包含伺服器的屬性 (大小、網路、儲存體) 和作業系統及應用程式設定。 | 「這部電腦應該是要裝載我網站的 Web 伺服器。」 |
合規性 | 您想要稽核設定或將其部署至範圍中的所有機器,方法是以回應方式部署到現有機器,或在部署機新機器時主動部署至其中。 | 「所有機器都應該使用 TLS 1.2。 稽核現有的機器,以便可在需要變更時以受控方式大規模發行該變更。 針對新機器,在部署時強制執行設定。」 |
您可以從客體指派頁面中的設定檢視每個設定結果。 如果已協調設定的 Azure 原則指派,您可以在 [合規性詳細資料] 頁面上選取 [上次評估的資源] 連結。
自定義原則的強制模式
為了在強制執行和監視伺服器設定、應用程式和工作負載方面提供更大的彈性,計算機設定會為每個原則指派提供三個主要強制模式,如下表所述。
模式 | 描述 |
---|---|
Audit | 僅報告計算機的狀態 |
套用和監視 | 套用至計算機的設定,然後監視變更 |
套用和自動更正 | 套用至計算機的組態,並在漂移時恢復一致性 |
請參閱此文件的逐步解說影片 (英文)。 (更新即將推出)
啟用機器設定
若要管理環境中各機器的狀態 (包括 Azure 中的機器和已啟用 Arc 的伺服器),請檢閱下列詳細資料。
資源提供者
您必須先註冊 Microsoft.GuestConfiguration
資源提供者,才能使用 Azure 原則的機器設定功能。 如果機器設定原則的指派是透過入口網站完成,或訂用帳戶是在適用於雲端的 Microsoft Defender 中註冊,系統會自動註冊資源提供者。 您可以透過入口網站、Azure PowerShell 或 Azure CLI手動註冊。
Azure 虛擬機器的部署需求
若要管理機器內的設定,則會啟用虛擬機器擴充功能,且該機器必須具有系統管理的身分識別。 延伸模組會下載適用的機器設定指派和對應的相依性。 身分識別會在機器讀取和寫入至機器設定服務時,用來驗證機器。 啟用 Arc 的伺服器不需要此擴充功能,因為其包含在連結 Arc 的機器代理程式中。
重要
需要有機器設定延伸模組和受控識別,才能管理 Azure 虛擬機器。
如果要在所有機器間大規模部署擴充功能,請指派原則解決方案 Deploy prerequisites to enable Guest Configuration policies on virtual machines
可管理群組、訂用帳戶或資源群組 (其中包含您計畫要管理的機器)。
如果您偏好將延伸模組和受控識別部署至單一機器,請參閱使用 Azure 入口網站在 VM 上設定 Azure 資源的受控識別。
若要使用套用設定的機器設定套件,則需要 Azure VM 客體設定延伸模組 1.26.24 版或更新版本。
重要
建立受控識別或指派具有「來賓設定資源參與者」角色的原則,是需要適當 Azure RBAC 許可權才能執行的動作。 若要深入瞭解 Azure 原則 和 Azure RBAC,請參閱 Azure 原則 中的角色型訪問控制。
擴充模組上設定的限制
若要限制延伸模組不會影響在機器內執行的應用程式,機器設定代理程式佔用不得超過 5% 的 CPU。 內建和自訂定義都有這項限制。 Arc Connected Machine 代理程式中的機器設定服務也是如此。
驗證工具
在機器內,機器設定代理程式會使用本機工具來執行工作。
下表顯示每個支援的作業系統上所使用的本機工具清單。 針對內建的內容,機器設定會自動處理這些工具的載入作業。
作業系統 | 驗證工具 | 注意 |
---|---|---|
Windows | PowerShell Desired State Configuration v2 | 側載至僅供 Azure 原則使用的資料夾。 不會與 Windows PowerShell DSC 發生衝突。 PowerShell 不會新增至系統路徑。 |
Linux | PowerShell Desired State Configuration v3 | 側載至僅供 Azure 原則使用的資料夾。 PowerShell 不會新增至系統路徑。 |
Linux | Chef InSpec | 在預設位置中安裝 Chef InSpec 2.2.61 版,並將其新增至系統路徑。 其也會安裝 InSpec 的相依性,包括 Ruby 和 Python。 |
驗證頻率
機器設定代理程式每隔 5 分鐘會檢查是否有新的客體指派,或是否有客體指派變更過。 一旦收到來賓指派,系統便會每隔 15 分鐘重新檢查一次該組態的設定。 如果指派了多個設定,系統會循序評估每個設定。 長時間執行的設定會影響所有設定的間隔,因為先前的設定未完成前,下一個設定將無法執行。
稽核完成時,系統會將結果傳送給機器設定服務。 發生原則評估觸發程序時,系統會將機器的狀態寫入到機器設定資源提供者。 此更新會導致 Azure 原則評估 Azure Resource Manager 屬性。 隨選 Azure 原則評估會從機器設定資源提供者中擷取最新的值。 不過,該評估不會在機器內觸發新的活動。 狀態接著會寫入 Azure Resource Graph。
支援的用戶端類型
機器設定原則的定義包含在新版本中。 如果客體設定用戶端不相容,系統會排除 Azure Marketplace 中提供的舊版作業系統。 此外,其個別發行者在存留期外支援的Linux伺服器版本會從支援矩陣中排除。
下表顯示 Azure 映像檔可支援的作業系統清單。 .x
文字是一種符號,代表 Linux 發行版本的新次要版本。
發行者 | 名稱 | 版本 |
---|---|---|
Alma | AlmaLinux | 9 |
Amazon | Linux | 2 |
Canonical | Ubuntu Server | 16.04 - 22.x |
Credativ | Debian | 10.x - 12.x |
Microsoft | CBL-Mariner | 1 - 2 |
Microsoft | Windows 用戶端 | Windows 10、11 |
Microsoft | Windows Server | 2012 - 2022 |
Oracle | Oracle-Linux | 7.x - 8.x |
OpenLogic | CentOS | 7.3 - 8.x |
Red Hat | Red Hat Enterprise Linux* | 7.4 - 9.x |
Rocky | Rocky Linux | 8 |
SUSE | SLES | 12 SP5、15.x |
*不支援 Red Hat CoreOS。
機器設定原則定義支援自訂虛擬機器映像,只要這些映像是上表所列的其中一個作業系統即可。 機器設定不支援 VMSS 統一,但支援 VMSS Flex。
網路需求
Azure 虛擬機器可以使用其本機虛擬網路介面卡 (vNIC) 或 Azure Private Link,與機器設定服務進行通訊。
已啟用 Azure Arc 的機器會使用內部部署網路基礎結構,連線到 Azure 服務並報告合規性狀態。
下列是 Azure 和已啟用 Azure Arc 的虛擬機器與 Azure 中機器設定資源提供者進行通訊所需的 Azure 儲存體端點清單:
oaasguestconfigac2s1.blob.core.windows.net
oaasguestconfigacs1.blob.core.windows.net
oaasguestconfigaes1.blob.core.windows.net
oaasguestconfigases1.blob.core.windows.net
oaasguestconfigbrses1.blob.core.windows.net
oaasguestconfigbrss1.blob.core.windows.net
oaasguestconfigccs1.blob.core.windows.net
oaasguestconfigces1.blob.core.windows.net
oaasguestconfigcids1.blob.core.windows.net
oaasguestconfigcuss1.blob.core.windows.net
oaasguestconfigeaps1.blob.core.windows.net
oaasguestconfigeas1.blob.core.windows.net
oaasguestconfigeus2s1.blob.core.windows.net
oaasguestconfigeuss1.blob.core.windows.net
oaasguestconfigfcs1.blob.core.windows.net
oaasguestconfigfss1.blob.core.windows.net
oaasguestconfiggewcs1.blob.core.windows.net
oaasguestconfiggns1.blob.core.windows.net
oaasguestconfiggwcs1.blob.core.windows.net
oaasguestconfigjiws1.blob.core.windows.net
oaasguestconfigjpes1.blob.core.windows.net
oaasguestconfigjpws1.blob.core.windows.net
oaasguestconfigkcs1.blob.core.windows.net
oaasguestconfigkss1.blob.core.windows.net
oaasguestconfigncuss1.blob.core.windows.net
oaasguestconfignes1.blob.core.windows.net
oaasguestconfignres1.blob.core.windows.net
oaasguestconfignrws1.blob.core.windows.net
oaasguestconfigqacs1.blob.core.windows.net
oaasguestconfigsans1.blob.core.windows.net
oaasguestconfigscuss1.blob.core.windows.net
oaasguestconfigseas1.blob.core.windows.net
oaasguestconfigsecs1.blob.core.windows.net
oaasguestconfigsfns1.blob.core.windows.net
oaasguestconfigsfws1.blob.core.windows.net
oaasguestconfigsids1.blob.core.windows.net
oaasguestconfigstzns1.blob.core.windows.net
oaasguestconfigswcs1.blob.core.windows.net
oaasguestconfigswns1.blob.core.windows.net
oaasguestconfigswss1.blob.core.windows.net
oaasguestconfigswws1.blob.core.windows.net
oaasguestconfiguaecs1.blob.core.windows.net
oaasguestconfiguaens1.blob.core.windows.net
oaasguestconfigukss1.blob.core.windows.net
oaasguestconfigukws1.blob.core.windows.net
oaasguestconfigwcuss1.blob.core.windows.net
oaasguestconfigwes1.blob.core.windows.net
oaasguestconfigwids1.blob.core.windows.net
oaasguestconfigwus2s1.blob.core.windows.net
oaasguestconfigwus3s1.blob.core.windows.net
oaasguestconfigwuss1.blob.core.windows.net
透過 Azure 中的虛擬網路進行通訊
若要與 Azure 中的機器設定資源提供者通訊,機器需要在連接埠 443
上對 Azure 資料中心進行對外存取。 如果 Azure 中的網路不允許輸出流量,請使用網路安全性群組規則來設定例外狀況。 服務標籤AzureArcInfrastructure
和 Storage
可以用來參考客體設定和儲存體服務,而不是手動維護 Azure 資料中心的 IP 範圍清單。 這兩個標籤都是必要的,因為 Azure 儲存體會裝載機器設定內容套件。
透過 Azure 中的私人連結進行通訊
虛擬機器可以使用私人連結與機器設定服務進行通訊。
套用名稱為 EnablePrivateNetworkGC
且值為 TRUE
的標籤,以啟用此功能。 可以在機器設定原則定義套用到機器之前或之後套用標籤。
重要
若要透過自訂套件的私人連結進行通訊,必須將套件位置的連結新增至允許的 URL 清單。
流量會使用 Azure 虛擬公用 IP 位址 來路由傳送,可利用 Azure 平台資源建立安全且經驗證的通道。
透過 Azure 外部的公用端點進行通訊
位於內部部署或其他雲端中的伺服器可以使用機器設定進行管理,方法是將這些伺服器連線到 Azure Arc。
針對已啟用 Azure Arc 的伺服器,使用以下模式允許流量:
- 連接埠︰只需要 TCP 443,即可存取輸出網際網路
- 全域 URL:
*.guestconfiguration.azure.com
針對核心 Azure Arc 和機器設定案例,如需 Azure Connected Machine Agent 所需的所有網路端點完整清單,請參閱已啟用 Azure Arc 的伺服器網路需求。
透過 Azure 外部的私人連結進行通訊
當您使用私人連結搭配已啟用 Arc 的伺服器時,內建原則套件會自動透過私人連結下載。 您不需要在已啟用 Arc 的伺服器上設定任何標籤,即可啟用此功能。
將原則指派給 Azure 外部的機器
機器設定可用的稽核原則包括 Microsoft.HybridCompute/machines 資源類型。 系統會自動包含任何上線至已啟用 Azure Arc 的伺服器且在原則指派範圍內的機器。
受控識別需求
方案 Deploy prerequisites to enable guest configuration policies on virtual machines
中的原則定義會啟用系統指派的受控識別 (如果不存在)。 解決方案中有兩種原則定義可管理身分識別的建立。 原則定義中的 if
條件會根據 Azure 中機器資源的目前狀態,確保正確的行為。
重要
除了現有的使用者指派身分識別之外 (若有),這些條件還會在目標資源上建立系統指派的受控識別。 除非現有應用程式在要求中指定使用者指派的身分識別,否則機器預設會改用系統指派的身分識別。 深入瞭解
如果機器目前沒有任何受控識別,有效原則為:新增系統指派的受控識別,以在沒有身分識別的虛擬機器上啟用客體設定指派
如果機器目前有使用者指派的身分識別,有效原則為:新增系統指派的受控識別,以在具有使用者指派身分識別的 VM 上啟用客體設定指派
可用性
設計高可用性解決方案的客戶應該考量虛擬機器的備援規劃需求,因為客體指派是 Azure 中機器資源的擴充功能。 當客體指派資源佈建至配對的 Azure 區域時,如果配對中至少有一個區域可供使用,您就可以檢視客體指派報告。 當 Azure 區域未配對且變成無法使用時,您無法存取客體指派的報告。 還原區域後,您可以再次存取報告。
最佳做法是針對高可用性應用程式,將具有相同參數的相同原則定義指派給解決方案中的所有機器。 這特別適用於下列情況:虛擬機器佈建在負載平衡器解決方案後方的可用性設定組中。 跨越所有機器的單一原則指派具有最少的系統管理負荷。
對於受到 Azure Site Recovery 保護的機器,請確定主要和次要站台中的機器位於相同定義的 Azure 原則指派範圍內。 針對這兩個站台使用相同的參數值。
資料落地
機器設定會儲存和處理客戶資料。 客戶資料預設會複寫至配對區域。對於新加坡、巴西南部和東亞地區,所有客戶資料都會在該地區儲存和處理。
針對機器設定進行疑難排解
如需針對機器設定進行疑難排解的詳細資訊,請參閱 Azure 原則疑難排解。
多重指派
目前,只有一些內建機器設定原則定義支援多個指派。 不過,如果您已使用最新版本的 GuestConfiguration PowerShell 模組,建立機器設定套件和原則,則所有自訂原則預設支援多個指派。
下列是支援多個指派的內建機器設定原則定義清單:
識別碼 | DisplayName |
---|---|
/providers/Microsoft.Authorization/policyDefinitions/5fe81c49-16b6-4870-9cee-45d13bf902ce | Windows 伺服器上應停用本機驗證方法 |
/providers/Microsoft.Authorization/policyDefinitions/fad40cac-a972-4db0-b204-f1b15cced89a | Linux 電腦上應停用本機驗證方法 |
/providers/Microsoft.Authorization/policyDefinitions/f40c7c00-b4e3-4068-a315-5fe81347a904 | [預覽]:在虛擬機器上新增使用者指派的受控身分識別,以啟用客體設定指派 |
/providers/Microsoft.Authorization/policyDefinitions/63594bb8-43bb-4bf0-bbf8-c67e5c28cb65 | [預覽]:Linux 電腦應符合 Azure 計算的 STIG 合規性需求 |
/providers/Microsoft.Authorization/policyDefinitions/50c52fc9-cb21-4d99-9031-d6a0c613361c | [預覽]:Windows 電腦應符合 Azure 計算的 STIG 合規性需求 |
/providers/Microsoft.Authorization/policyDefinitions/e79ffbda-ff85-465d-ab8e-7e58a557660f | [預覽]:已安裝 OMI 的 Linux 電腦應有 1.6.8-1 版或更新版本 |
/providers/Microsoft.Authorization/policyDefinitions/934345e1-4dfb-4c70-90d7-41990dc9608b | 稽核其受信任的根中未包含所指定憑證的 Windows 電腦 |
/providers/Microsoft.Authorization/policyDefinitions/08a2f2d2-94b2-4a7b-aa3b-bb3f523ee6fd | 稽核 DSC 設定不合規範的 Windows 電腦 |
/providers/Microsoft.Authorization/policyDefinitions/c648fbbb-591c-4acd-b465-ce9b176ca173 | 稽核沒有所指定 Windows PowerShell 執行原則的 Windows 電腦 |
/providers/Microsoft.Authorization/policyDefinitions/3e4e2bd5-15a2-4628-b3e1-58977e9793f3 | 稽核未安裝所指定 Windows PowerShell 模組的 Windows 電腦 |
/providers/Microsoft.Authorization/policyDefinitions/58c460e9-7573-4bb2-9676-339c2f2486bb | 稽核未啟用 Windows 序列主控台的 Windows 電腦 |
/providers/Microsoft.Authorization/policyDefinitions/e6ebf138-3d71-4935-a13b-9c7fdddd94df | 稽核未安裝所指定服務且「正在執行」的 Windows 電腦 |
/providers/Microsoft.Authorization/policyDefinitions/c633f6a2-7f8b-4d9e-9456-02f0f04f5505 | 稽核未設定為所指定時區的 Windows 電腦 |
注意
請定期檢查此頁面,以取得內建機器設定原則定義 (支援多個指派) 清單的變更。
指派給 Azure 管理群組
在效果為 AuditIfNotExists
或 DeployIfNotExists
時,可將 Guest Configuration
類別中的 Azure 原則定義指派給管理群組。
用戶端記錄檔
機器設定延伸模組會將記錄檔寫入到下列位置:
Windows
- Azure VM:
C:\ProgramData\GuestConfig\gc_agent_logs\gc_agent.log
- 已啟用 Arc 的伺服器:
C:\ProgramData\GuestConfig\arc_policy_logs\gc_agent.log
Linux
- Azure VM:
/var/lib/GuestConfig/gc_agent_logs/gc_agent.log
- 已啟用 Arc 的伺服器:
/var/lib/GuestConfig/arc_policy_logs/gc_agent.log
在遠端收集記錄
對機器設定的設定或模組進行疑難排解的第一步,應該是依照如何測試機器設定套件成品中的步驟使用 Cmdlet。 如果不成功,則收集用戶端記錄有助於診斷問題。
Windows
使用 Azure VM 執行命令從記錄檔中擷取資訊,下列範例 PowerShell 指令碼可能有所幫助。
$linesToIncludeBeforeMatch = 0
$linesToIncludeAfterMatch = 10
$params = @{
Path = 'C:\ProgramData\GuestConfig\gc_agent_logs\gc_agent.log'
Pattern = @(
'DSCEngine'
'DSCManagedEngine'
)
CaseSensitive = $true
Context = @(
$linesToIncludeBeforeMatch
$linesToIncludeAfterMatch
)
}
Select-String @params | Select-Object -Last 10
Linux
使用 Azure VM 執行命令從記錄檔中擷取資訊,下列範例 Bash 指令碼可能有所幫助。
LINES_TO_INCLUDE_BEFORE_MATCH=0
LINES_TO_INCLUDE_AFTER_MATCH=10
LOGPATH=/var/lib/GuestConfig/gc_agent_logs/gc_agent.log
egrep -B $LINES_TO_INCLUDE_BEFORE_MATCH -A $LINES_TO_INCLUDE_AFTER_MATCH 'DSCEngine|DSCManagedEngine' $LOGPATH | tail
代理程式檔案
機器設定代理程式會將內容套件下載到機器,並擷取內容。 若要確認已下載並儲存的內容,請檢視下列清單中的資料夾位置。
- Windows:
C:\ProgramData\guestconfig\configuration
- Linux:
/var/lib/GuestConfig/Configuration
開放原始碼 nxtools 模組功能
已發行新的開放原始碼 nxtools 模組,以協助 PowerShell 使用者更輕易地管理 Linux 系統。
此模組有助於管理常見的工作,例如:
- 管理使用者與群組
- 執行檔案系統作業
- 管理服務
- 執行封存作業
- 管理套件
此模組包括適用於 Linux 的類別型 DSC 資源和內建機器設定套件。
若要提供有關此功能的意見反應,請在文件上提出問題。 我們目前「不」接受此專案的 PR,但我們會盡力提供支援。
機器設定範例
機器設定內建原則範例可在下列位置取得:
下一步
- 設定自訂的機器設定套件開發環境。
- 針對機器設定建立套件成品。
- 從您的開發環境測試套件成品。
- 使用 GuestConfiguration 模組建立 Azure 原則定義,為環境進行大規模的管理。
- 使用 Azure 入口網站指派您的自訂原則定義。
- 了解如何檢視機器設定的合規性詳細資料原則指派。