Información general de la extensión Guest Configuration

La extensión Guest Configuration es un componente de Azure Policy que realiza operaciones de auditoría y configuración dentro de las máquinas virtuales. Las directivas, como las definiciones de línea de base de seguridad para Linux y Windows, no pueden comprobar la configuración dentro de las máquinas hasta que se instale la extensión.

Requisitos previos

Para que la máquina se autentique en el servicio de configuración de invitado, esta debe tener una identidad administrada asignada por el sistema. El requisito de la identidad en una máquina virtual se cumple si se establece la propiedad siguiente.

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

Sistemas operativos

La compatibilidad con la extensión Guest Configuration es la misma que con el sistema operativo documentado para la solución de un extremo a otro.

Conectividad de Internet

El agente instalado por la extensión Guest Configuration debe poder acceder a los paquetes de contenido que enumeran las asignaciones de Guest Configuration y notificar el estado al servicio de configuración de invitado. La máquina puede conectarse mediante HTTPS saliente a través del puerto TCP 443 o mediante una conexión a través de redes privadas. Para obtener más información sobre las redes privadas, consulte los artículos siguientes:

¿Cómo puedo instalar la extensión?

El nombre de instancia de la extensión debe establecerse en "AzurePolicyforWindows" o "AzurePolicyforLinux", ya que las directivas a las que se hace referencia anteriormente requieren estas cadenas específicas.

De forma predeterminada, todas las implementaciones se actualizan a la última versión. El valor predeterminado de la propiedad autoUpgradeMinorVersion es "true", a menos que se especifique lo contrario. No es necesario preocuparse por actualizar el código cuando se publiquen nuevas versiones de la extensión.

Actualización automática

La extensión de configuración de invitado admite la propiedad enableAutomaticUpgrade. Cuando esta propiedad se establece en true, Azure se actualizará automáticamente a la versión más reciente de la extensión a medida que estén disponibles versiones futuras. Para más información, consulte la página Actualización automática de extensiones para máquinas virtuales y conjuntos de escalado en Azure

Azure Policy

Para implementar la versión más reciente de la extensión a gran escala, incluidos los requisitos de identidad, asigne la instancia de Azure Policy:

Implemente los requisitos previos para habilitar directivas de configuración de invitado en máquinas virtuales.

Azure CLI

Para implementar la extensión en Linux:

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

Para implementar la extensión en 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

Para implementar la extensión en Linux:

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

Para implementar la extensión en Windows:

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

Plantilla de Resource Manager

Para implementar la extensión en 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": {}
  }
}

Para implementar la extensión en 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

Para implementar la extensión en 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: {}
  }
}

Para implementar la extensión en 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

Para implementar la extensión en 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"
}

Para implementar la extensión en 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"
}

Configuración

No es necesario incluir ninguna configuración ni propiedades de configuración protegida en la extensión. El agente recupera toda esta información de los recursos de asignación de configuración de invitado. Por ejemplo, las propiedades ConfigurationUri, Mode y ConfigurationSetting se administran por configuración, en lugar de en la extensión de VM.

Códigos de error del proveedor de recursos de configuración de invitado

Consulte a continuación una lista de los posibles mensajes de error al habilitar la extensión.

Código de error Descripción
NoComplianceReport La máquina virtual no ha notificado los datos de cumplimiento.
GCExtensionMissing Falta la extensión de configuración de invitado.
ManagedIdentityMissing Falta la identidad administrada.
UserIdentityMissing Falta la identidad asignada por el usuario.
GCExtensionManagedIdentityMissing Falta la extensión de configuración de invitado y la identidad administrada.
GCExtensionUserIdentityMissing Falta la extensión de configuración de invitado y la identidad del usuario.
GCExtensionIdentityMissing Falta la extensión de configuración de invitado, la identidad administrada y la identidad de usuario.

Pasos siguientes