Azure 原則來賓設定目前稱為 Azure Automanage 機器設定 深入了解近期重新命名的 Microsoft 組態管理服務。

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

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

  • 作業系統設定
  • 應用程式設定或目前狀態
  • 設定與原則定義有所區別。 電腦設定會使用Azure 原則,以動態方式將設定指派給電腦。 您也可以 手動 將設定指派給機器,或使用 Automanage 等其他 Azure 服務。

    下表提供了各種情節的範例。

    Description 您想要在原始檔控制中,以程式碼來完整呈現伺服器。 部署應該包含伺服器的屬性 (大小、網路、儲存體) 和作業系統及應用程式設定。 「這部電腦應該是要裝載我網站的 Web 伺服器。」 您想要稽核或部署設定至範圍中的所有機器,不論是回應現有機器,或是在部署新電腦時主動部署到新電腦。 「所有機器都應該使用 TLS 1.2。 稽核現有的機器,以便大規模釋放所需的變更。 針對新電腦,請在部署時強制執行設定。」

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

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

    啟用機器設定

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

    資源提供者

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

    Azure 虛擬機器的部署需求

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

    需要有機器設定延伸模組和受控識別,才能管理 Azure 虛擬機器。

    如果要在所有機器間大規模部署擴充功能,請指派原則解決方案 Virtual machines' Guest Configuration extension should be deployed with system-assigned managed identity 可管理群組、訂用帳戶或資源群組 (其中包含您計畫要管理的機器)。

    如果您想要將延伸模組和受控識別部署到單一機器,請遵循各機器上的指引:

  • Azure 原則客體設定擴充功能概觀
  • 使用 Azure 入口網站在虛擬機器上設定 Azure 資源的受控識別
  • 若要使用套用設定的機器設定套件,則需要 Azure VM 客體設定擴充功能 1.29.24 版或更新版本。

    擴充模組上設定的限制

    若要限制延伸模組不會影響在機器內執行的應用程式,機器設定代理程式佔用不得超過 5% 的 CPU。 內建和自訂定義都有這項限制。 Arc Connected Machine 代理程式中的機器設定服務也是如此。

    在機器內,機器設定代理程式會使用本機工具來執行工作。

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

    Windows PowerShell Desired State Configuration v3 側載至僅供 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 中提供的舊版作業系統。 下表顯示 Azure 映像檔可支援的作業系統清單。 文字 .x 是符號,用來代表新的 Linux 發行版本次要版本。

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

    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 儲存體會裝載電腦設定內容套件。

    虛擬機器可以使用 私人連結 與機器設定服務進行通訊。 套用名稱為 EnablePrivateNetworkGC 且值為 TRUE 的標籤,以啟用此功能。 可以在機器設定原則定義套用到機器之前或之後套用標籤。

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

    流量會使用 Azure 虛擬公用 IP 位址 來路由傳送,可利用 Azure 平台資源建立安全且經驗證的通道。

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

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

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

  • 連接埠︰只需要 TCP 443,即可存取輸出網際網路
  • 全域 URL: *.guestconfiguration.azure.com
  • 如需 Azure 連線機器代理程式針對核心 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-9c7fddddd94df 稽核未安裝及「執行」指定服務的 Windows 電腦 /providers/Microsoft.Authorization/policyDefinitions/c633f6a2-7f8b-4d9e-9456-02f0f04f5505 稽核未設定為指定時區的 Windows 電腦

    指派給 Azure 管理群組

    當效果為 AuditIfNotExists DeployIfNotExists 時,Azure 原則類別 Guest Configuration 中的定義可以指派給管理群組。

    用戶端記錄檔

    機器設定延伸模組會將記錄檔寫入到下列位置:

    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,且支援是最佳努力。

    機器設定範例

    機器設定內建原則範例可在下列位置取得:

  • 內建原則定義 - 來賓設定
  • 內建計畫 - 來賓設定
  • Azure 原則範例 GitHub 存放庫
  • 範例 DSC 資源模組
  • 設定自訂的機器設定套件開發環境
  • 針對機器設定建立套件成品
  • 從您的開發環境測試套件成品
  • 使用GuestConfiguration模組來建立Azure 原則定義,以大規模管理您的環境。
  • 使用 Azure 入口網站指派您的自訂原則定義
  • 了解如何檢視機器設定的合規性詳細資料原則指派。
  •