Extensión de configuración de máquina de Azure Automanage

La extensión de configuración de la máquina es una característica de Azure Automanage que realiza operaciones de auditoría y configuración dentro de máquinas virtuales (VM).

Para comprobar las directivas dentro de las máquinas virtuales, como las definiciones de línea de base de seguridad de proceso de Azure para Linux y Windows, se debe instalar la extensión de configuración de la máquina.

Prerrequisitos

Para permitir que la máquina virtual se autentique en el servicio de configuración de la máquina, la máquina virtual debe tener una identidad administrada asignada por el sistema. Puedes satisfacer el requisito de identidad de la máquina virtual estableciendo la propiedad "type": "SystemAssigned":

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

Sistemas operativos

La compatibilidad del sistema operativo con la extensión de configuración de la máquina es la misma que la compatibilidad con el sistema operativo documentado para la solución de un extremo a otro.

Conectividad de Internet

El agente instalado por la extensión de configuración de la máquina debe poder acceder a los paquetes de contenido enumerados por asignaciones de configuración de invitado e informar el estado al servicio de configuración de la máquina. La máquina virtual puede conectarse mediante HTTPS de salida a través del puerto TCP 443 o una conexión proporcionada a través de una red privada.

Para obtener más información sobre las redes privadas, consulte los artículos siguientes:

Instalación de la extensión

Puedes instalar e implementar la extensión de configuración de la máquina directamente desde la CLI de Azure o PowerShell. Las plantillas de implementación también están disponibles para Azure Resource Manager (ARM), Bicep y Terraform. Para obtener más información sobre la plantilla de implementación, consulta Microsoft.GuestConfiguration GuestConfigurationAssignments.

Nota

En los ejemplos de implementación siguientes, reemplace los valores de parámetro <placeholder> por valores específicos para la configuración.

Consideraciones de la implementación

Antes de instalar e implementar la extensión de configuración de la máquina, revise las consideraciones siguientes.

  • Nombre de la instancia. Al instalar la extensión de configuración del equipo, el nombre de instancia de la extensión debe establecerse AzurePolicyforWindows en o AzurePolicyforLinux. Las directivas de definición de línea de base de seguridad descritas anteriormente requieren estas cadenas específicas.

  • Versiones. 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. Esta característica ayuda a aliviar los problemas relacionados con la actualización del código cuando se publican nuevas versiones de la extensión de configuración de la máquina.

  • Actualización automática. La extensión de configuración de la máquina admite la propiedad enableAutomaticUpgrade. Cuando esta propiedad se establece en true, Azure se actualiza automáticamente a la versión más reciente de la extensión a medida que haya versiones futuras disponibles. Para obtener más información, consulta Actualización automática de extensiones para máquinas virtuales y conjuntos de escalado de máquinas virtuales en Azure.

  • Azure Policy. Para implementar la versión más reciente de la extensión de configuración de la máquina a escala, incluidos los requisitos de identidad, sigue los pasos descritos en Creación de una asignación de directiva para identificar recursos no conformes. Crea la siguiente asignación con Azure Policy:

  • Otras propiedades. No es necesario incluir ninguna configuración o propiedades de configuración protegidas en la extensión de configuración de la máquina. El agente recupera esta clase de información de los recursos de asignación de la Configuración de invitado de la API de REST de Azure. Por ejemplo, las propiedades ConfigurationUri, Mode y ConfigurationSetting se administran por configuración, en lugar de en la extensión de VM.

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' -ExtensionType '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' -ExtensionType 'ConfigurationforWindows' -Name 'AzurePolicyforWindows' -TypeHandlerVersion 1.0 -ResourceGroupName '<myResourceGroup>' -Location '<myLocation>' -VMName '<myVM>' -EnableAutomaticUpgrade $true

Plantilla ARM

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": {}
  }
}

Plantilla de 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: {}
  }
}

Plantilla de 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"
}

Mensajes de error

La siguiente tabla enumera los posibles mensajes de error relacionados con la habilitación de la extensión Configuración de invitados.

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 la máquina (configuración de invitado).
ManagedIdentityMissing Falta la identidad administrada.
UserIdentityMissing Falta la identidad asignada por el usuario.
GCExtensionManagedIdentityMissing Faltan la extensión de configuración de la máquina (configuración de invitado) y la identidad administrada.
GCExtensionUserIdentityMissing Faltan la extensión de configuración del equipo (configuración de invitado) y la identidad asignada por el usuario.
GCExtensionIdentityMissing Falta la extensión de configuración de máquina (configuración de invitado), la identidad administrada y la identidad asignada por el usuario.

Pasos siguientes