共用方式為


Azure 機器設定延伸模組

機器設定延伸模組會在虛擬機器 (VM) 內執行稽核與設定作業。

若要檢查 VM 內部的原則,例如適用於 LinuxWindows 的 Azure 計算安全性基準定義,必須安裝機器設定延伸模組。

必要條件

若要讓您的 VM 能夠向機器設定服務進行驗證,該 VM 必須具有系統指派的受控識別。 您可以藉由設定 "type": "SystemAssigned" 屬性,以滿足 VM 的身分識別需求:

"identity": {
   "type": "SystemAssigned"
}

作業系統

機器設定延伸模組的作業系統支援與端對端解決方案的作業系統支援 (部分機器翻譯) 記錄相同。

網際網路連線能力

機器設定延伸模組所安裝的代理程式必須能夠連線至來賓設定指派所列出的內容套件,並向機器設定服務回報狀態。 VM 可以使用透過 TCP 連接埠 443 的輸出 HTTPS 或透過專用網提供的連線來連線。

若要深入了解私人網路,請參閱下列文章:

安裝延伸模組

您可以直接從 Azure CLI 或 PowerShell 安裝及部署機器設定延伸模組。 部署範本也適用於 Azure Resource Manager (ARM)、Bicep 及 Terraform。 如需部署範本詳細資料,請參閱 Microsoft.GuestConfiguration guestConfigurationAssignments

注意

在下列部署範例中,將 <placeholder> 參數值取代為您設定的特定值。

部署考量

在安裝及部署機器設定延伸模組之前,請先檢閱下列考量事項。

  • 執行個體名稱。 當您安裝機器設定延伸模組時,延伸模組的執行個體名稱必須設定為 AzurePolicyforWindowsAzurePolicyforLinux。 稍早所述的安全性基準定義原則需要這些特定的字串。

  • 版本。 根據預設,所有的部署都會更新為最新版本。 除非另有指定,否則 autoUpgradeMinorVersion 屬性值預設為 true。 此功能有助於緩解在發行新版機器設定延伸模組時更新程式碼的顧慮。

  • 自動升級。 機器設定延伸模組支援 enableAutomaticUpgrade 屬性。 當此屬性設定為 true 時,Azure 會在未來有新版本可供使用時,自動升級至最新版本的擴充功能。 如需詳細資訊,請參閱 Azure 中的 VM 和虛擬機器擴展集自動延伸模組升級

  • Azure 原則。 若要大規模部署最新版本的機器設定延伸模組,包括身分識別需求,請遵循建立原則指派,以識別不相容資源中的步驟。 使用 Azure 原則建立下列指派:

  • 其他屬性。 您不需要在機器設定延伸模組中包含任何設定或受保護的設定屬性。 代理程式會從 Azure REST API 客體設定指派資源擷取此類別的資訊。 例如, ConfigurationUriModeConfigurationSetting 屬性都是每個設定管理的,而不是在 VM 延伸模組上。

Azure CLI

若要部署適用於 Linux 的擴充功能:

az vm extension set  --publisher Microsoft.GuestConfiguration --name ConfigurationForLinux --extension-instance-name AzurePolicyforLinux --resource-group <myResourceGroup> --vm-name <myVM> --enable-auto-upgrade true

若要部署適用於 Windows 的擴充功能:

az vm extension set  --publisher Microsoft.GuestConfiguration --name ConfigurationforWindows --extension-instance-name AzurePolicyforWindows --resource-group <myResourceGroup> --vm-name <myVM> --enable-auto-upgrade true

PowerShell

若要部署適用於 Linux 的擴充功能:

Set-AzVMExtension -Publisher 'Microsoft.GuestConfiguration' -ExtensionType 'ConfigurationForLinux' -Name 'AzurePolicyforLinux' -TypeHandlerVersion 1.0 -ResourceGroupName '<myResourceGroup>' -Location '<myLocation>' -VMName '<myVM>' -EnableAutomaticUpgrade $true

若要部署適用於 Windows 的擴充功能:

Set-AzVMExtension -Publisher 'Microsoft.GuestConfiguration' -ExtensionType 'ConfigurationforWindows' -Name 'AzurePolicyforWindows' -TypeHandlerVersion 1.0 -ResourceGroupName '<myResourceGroup>' -Location '<myLocation>' -VMName '<myVM>' -EnableAutomaticUpgrade $true

ARM 範本

若要部署適用於 Linux 的擴充功能:

{
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "name": "[concat(parameters('VMName'), '/AzurePolicyforLinux')]",
  "apiVersion": "2020-12-01",
  "location": "[parameters('location')]",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', parameters('VMName'))]"
  ],
  "properties": {
    "publisher": "Microsoft.GuestConfiguration",
    "type": "ConfigurationForLinux",
    "typeHandlerVersion": "1.0",
    "autoUpgradeMinorVersion": true,
    "enableAutomaticUpgrade": true, 
    "settings": {},
    "protectedSettings": {}
  }
}

若要部署適用於 Windows 的擴充功能:

{
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "name": "[concat(parameters('VMName'), '/AzurePolicyforWindows')]",
  "apiVersion": "2020-12-01",
  "location": "[parameters('location')]",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', parameters('VMName'))]"
  ],
  "properties": {
    "publisher": "Microsoft.GuestConfiguration",
    "type": "ConfigurationforWindows",
    "typeHandlerVersion": "1.0",
    "autoUpgradeMinorVersion": true,
    "enableAutomaticUpgrade": true, 
    "settings": {},
    "protectedSettings": {}
  }
}

Bicep 範本

若要部署適用於 Linux 的擴充功能:

resource virtualMachine 'Microsoft.Compute/virtualMachines@2021-03-01' existing = {
  name: 'VMName'
}
resource windowsVMGuestConfigExtension 'Microsoft.Compute/virtualMachines/extensions@2020-12-01' = {
  parent: virtualMachine
  name: 'AzurePolicyforLinux'
  location: resourceGroup().location
  properties: {
    publisher: 'Microsoft.GuestConfiguration'
    type: 'ConfigurationForLinux'
    typeHandlerVersion: '1.0'
    autoUpgradeMinorVersion: true
    enableAutomaticUpgrade: true
    settings: {}
    protectedSettings: {}
  }
}

若要部署適用於 Windows 的擴充功能:

resource virtualMachine 'Microsoft.Compute/virtualMachines@2021-03-01' existing = {
  name: 'VMName'
}
resource windowsVMGuestConfigExtension 'Microsoft.Compute/virtualMachines/extensions@2020-12-01' = {
  parent: virtualMachine
  name: 'AzurePolicyforWindows'
  location: resourceGroup().location
  properties: {
    publisher: 'Microsoft.GuestConfiguration'
    type: 'ConfigurationforWindows'
    typeHandlerVersion: '1.0'
    autoUpgradeMinorVersion: true
    enableAutomaticUpgrade: true
    settings: {}
    protectedSettings: {}
  }
}

Terraform 範本

若要部署適用於 Linux 的擴充功能:

resource "azurerm_virtual_machine_extension" "gc" {
  name                       = "AzurePolicyforLinux"
  virtual_machine_id         = "<myVMID>"
  publisher                  = "Microsoft.GuestConfiguration"
  type                       = "ConfigurationForLinux"
  type_handler_version       = "1.0"
  auto_upgrade_minor_version = "true"
}

若要部署適用於 Windows 的擴充功能:

resource "azurerm_virtual_machine_extension" "gc" {
  name                       = "AzurePolicyforWindows"
  virtual_machine_id         = "<myVMID>"
  publisher                  = "Microsoft.GuestConfiguration"
  type                       = "ConfigurationforWindows"
  type_handler_version       = "1.0"
  auto_upgrade_minor_version = "true"
}

錯誤訊息

下表列出啟用客體設定延伸模組的相關可能錯誤訊息。

錯誤碼 描述
NoComplianceReport VM 尚未回報合規性資料。
GCExtensionMissing 遺失機器設定 (來賓設定) 延伸模組。
ManagedIdentityMissing 遺失受控識別。
UserIdentityMissing 缺少使用者指派的身分識別。
GCExtensionManagedIdentityMissing 遺失機器設定 (來賓設定) 延伸模組和受控識別。
GCExtensionUserIdentityMissing 遺失機器設定 (來賓設定) 延伸模組和使用者指派的身分識別。
GCExtensionIdentityMissing 遺失機器設定 (來賓設定) 延伸模組、受控識別和使用者指派的身分識別。

下一步