瞭解 Azure 機器組態

警告

這篇文章參考 CentOS,這是接近生命週期結束 (EOL) 狀態的 Linux 發行版本。 請據以考慮您的使用方式和規劃。 如需詳細資訊,請參閱 CentOS 生命週期結束指引

Azure 原則 的機器組態功能提供原生功能,以稽核或設定操作系統設定為在 Azure 和混合式中執行之機器的程式代碼已啟用 Arc 的電腦。 您可以直接使用每部計算機的功能,或使用 Azure 原則 大規模協調此功能。

Azure 中的設定資源是設計為 延伸模組資源。 您可以將每個組態想像成機器的額外一組屬性。 組態可包含如下的設定:

  • 作業系統設定
  • 應用程式設定或目前狀態
  • 環境設定

組態與原則定義不同。 計算機組態會使用 Azure 原則,以動態方式將設定指派給計算機。 您也可以手動將設定指派給機器,或使用其他 Azure 服務,例如 Automanage

下表提供每個案例的範例。

類型 描述 範例本文
設定管理 您想要完整表示伺服器,做為原始檔控制中的程序代碼。 部署應包含伺服器的屬性(大小、網路、記憶體)和作業系統和應用程式設定。 「這部電腦應該是設定為裝載我的網站的網頁伺服器。」
合規性 您想要稽核或部署設定至範圍中的所有機器,不論是以被動方式部署到現有計算機,或主動部署到新計算機。 「所有機器都應該使用 TLS 1.2。 稽核現有的機器,以便大規模地以受控方式釋放所需的變更。 針對新計算機,請在部署時強制執行設定。」

您可以從 [來賓指派] 頁面中的組態檢視每個設定結果。 如果協調設定的 Azure 原則 指派,您可以在 [合規性詳細數據] 頁面上選取 [上次評估的資源] 連結

請參閱此文件的逐步解說影片 (英文)。 (即將推出更新)

啟用電腦設定

若要管理環境中機器的狀態,包括 Azure 中的機器和已啟用 Arc 的伺服器,請檢閱下列詳細數據。

資源提供者

您必須先註冊Microsoft.GuestConfiguration資源提供者,才能使用 Azure 原則 的計算機設定功能。 如果計算機設定原則的指派是透過入口網站完成,或訂用帳戶已在 適用於雲端的 Microsoft Defender 中註冊,則會自動註冊資源提供者。 您可以透過 入口網站Azure PowerShellAzure CLI 手動註冊。

部署 Azure 虛擬機的需求

若要管理機器內的設定,則會啟用虛擬機器擴充功能,且該機器必須具有系統管理的身分識別。 延伸模組會下載適用的計算機組態指派和對應的相依性。 身分識別可用來在電腦讀取和寫入計算機組態服務時驗證計算機。 啟用 Arc 的伺服器不需要此擴充功能,因為其包含在連結 Arc 的機器代理程式中。

重要

管理 Azure 虛擬機需要機器組態延伸模組和受控識別。

若要大規模部署延伸模組,請指派原則計劃 Deploy prerequisites to enable Guest Configuration policies on virtual machines 至管理群組、訂用帳戶或資源群組,其中包含您計劃管理的機器。

如果您想要將擴充功能和受控識別部署到單一計算機,請參閱使用 Azure 入口網站 在 VM 上設定 Azure 資源的受控識別。

若要使用套用設定的計算機組態套件,則需要 Azure VM 客體設定擴充功能 1.26.24 版或更新版本。

延伸模組上設定的限制

若要限制擴充功能不會影響計算機內執行的應用程式,不允許機器設定代理程式超過 5% 的 CPU。 內建和自定義定義都有這項限制。 Arc 連線 ed Machine 代理程式中的電腦組態服務也是如此。

驗證工具

計算機組態代理程式會在機器內使用本機工具來執行工作。

下表顯示每個支援的作業系統上所使用的本機工具清單。 針對內建內容,計算機設定會自動處理載入這些工具。

作業系統 驗證工具 注意
Windows PowerShell Desired 狀態設定 v2 側載至僅供 Azure 原則使用的資料夾。 不會與 Windows PowerShell DSC 衝突。 PowerShell 不會新增至系統路徑。
Linux PowerShell Desired 狀態設定 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 中可用的舊版操作系統。 下表顯示 Azure 映像上支援的作業系統清單。 文字 .x 是代表新版 Linux 發行版的符號。

發行者 名稱 版本
阿爾瑪 AlmaLinux 9
Amazon Linux 2
Canonical Ubuntu Server 14.04 - 22.x
Credativ Debian 8 - 10.x
Microsoft CBL-Mariner 1 - 2
Microsoft Windows 用戶端 Windows 10
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 Linux 9
SUSE SLES 12 SP3-SP5, 15.x

* 不支援 Red Hat CoreOS。

只要機器設定原則定義是上表的其中一個操作系統,就支援自定義虛擬機映像。

網路需求

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 中的網路不允許輸出流量,請使用 網路安全組 規則設定例外狀況。 服務標記AzureArcInfrastructureStorage 可用來參考客體設定和 儲存體 服務,而不是手動維護 Azure 數據中心的 IP 範圍清單。 這兩個標籤都是必要的,因為 Azure 儲存體 裝載電腦設定內容套件。

虛擬機可以使用 私人連結 來與機器組態服務通訊。 套用具有名稱和 EnablePrivateNetworkGC 值的 TRUE 標籤,以啟用這項功能。 標籤可以在電腦設定原則定義套用至電腦之前或之後套用。

重要

若要透過自定義套件的私人鏈接進行通訊,必須將封裝位置的連結新增至允許的URL清單。

流量會使用 Azure 虛擬公用 IP 位址路由,以使用 Azure 平台資源建立安全且已驗證的通道。

透過 Azure 外部的公用端點進行通訊

位於內部部署或其他雲端中的伺服器可以透過電腦設定來管理,方法是將其連線至 Azure Arc

針對已啟用 Azure Arc 的伺服器,允許使用下列模式的流量:

  • 連接埠︰只需要 TCP 443,即可存取輸出網際網路
  • 全域 URL:*.guestconfiguration.azure.com

如需 Azure 連線 Ed Machine Agent 針對核心 Azure Arc 和電腦設定案例所需的所有網路端點完整清單,請參閱已啟用 Azure Arc 的伺服器網路需求

當您搭配已啟用 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 Server 上停用本機驗證方法
/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 管理群組

當效果為 AuditIfNotExistsDeployIfNotExists時,類別中的 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,且支援是最佳努力。

計算機設定範例

下列位置提供電腦設定內建原則範例:

下一步