来宾配置扩展概述

来宾配置扩展是一个 Azure 策略组件,它在虚拟机内执行审核和配置操作。 在安装扩展之前,适用于 Linux 和 Windows 的安全基线定义等策略无法检查计算机中的设置。

先决条件

对于要向来宾配置服务进行身份验证的计算机,必须有系统分配的托管标识。 如果已设置以下属性,则符合虚拟机上的标识要求。

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

操作系统

对来宾配置扩展的支持与记录的端到端解决方案的操作系统支持相同。

Internet 连接

通过来宾配置扩展安装的代理必须能够访问来宾配置分配列出的内容包,并向来宾配置服务报告状态。 计算机可以使用 TCP 端口 443 上的出站 HTTPS 进行连接,或者使用专用网络提供的连接。 若要了解有关专用网络的详细信息,请参阅以下文章:

如何安装扩展?

必须将扩展的实例名称设置为“AzurePolicyforWindows”或“AzurePolicyforLinux”,因为上面引用的策略需要这些特定字符串。

默认情况下,所有部署都会更新到最新版本。 除非另外指定,否则属性 autoUpgradeMinorVersion 的值默认为“true”。 发布新版本的扩展时,无需担心更新代码。

Azure Policy

要大规模部署最新版本的扩展(包括身份要求),请指定 Azure Policy:

部署先决条件以在虚拟机上启用来宾配置策略

Azure CLI

部署适用于 Linux 的扩展:

az vm extension set  --publisher Microsoft.GuestConfiguration --name ConfigurationforLinux --extension-instance-name AzurePolicyforLinux --resource-group myResourceGroup --vm-name myVM

部署适用于 Windows 的扩展:

az vm extension set  --publisher Microsoft.GuestConfiguration --name ConfigurationforWindows --extension-instance-name AzurePolicyforWindows --resource-group myResourceGroup --vm-name myVM

PowerShell

部署适用于 Linux 的扩展:

Set-AzVMExtension -Publisher 'Microsoft.GuestConfiguration' -Type 'ConfigurationforLinux' -Name 'AzurePolicyforLinux' -TypeHandlerVersion 1.0 -ResourceGroupName 'myResourceGroup' -Location 'myLocation' -VMName 'myVM' -EnableAutomaticUpgrade $true

部署适用于 Windows 的扩展:

Set-AzVMExtension -Publisher 'Microsoft.GuestConfiguration' -Type 'ConfigurationforWindows' -Name 'AzurePolicyforWindows' -TypeHandlerVersion 1.0 -ResourceGroupName 'myResourceGroup' -Location 'myLocation' -VMName 'myVM' 

Resource Manager 模板

部署适用于 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"
}

设置

不需要在扩展上包含任何设置或受保护的设置属性。 代理会从来宾配置分配资源中检索所有此类信息。 例如,ConfigurationUriModeConfigurationSetting 属性分别按配置进行托管,而不是在 VM 扩展上托管。

后续步骤