VM Scale Set should enable automatic OS upgrades

Medium Azure General virtualmachinescalesets-vmss

Applies to

  • Microsoft.Compute/virtualMachineScaleSets

What CGPulse checks

A resource passes this rule when enableAutomaticOSUpgrade must equal true. Anything else is reported as a finding with the evaluated property value attached as evidence.

How to fix it

Enable automatic OS upgrades to receive critical security patches. In Azure Portal: VMSS > Upgrade policy > enable Automatic OS upgrades. See: https://learn.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-upgrade

CLI

az vmss update --ids "{id}" --set upgradePolicy.automaticOSUpgradePolicy.enableAutomaticOSUpgrade=true

Terraform

resource "azurerm_linux_virtual_machine_scale_set" "{name}" {
  name                = "{name}"
  resource_group_name = "{rg}"
  location            = var.location
  sku                 = "Standard_DS1_v2"
  instances           = 2
  admin_username      = "adminuser"
  upgrade_mode        = "Automatic"
  automatic_os_upgrade_policy {
    enable_automatic_os_upgrade = true
    disable_automatic_rollback  = false
  }
  rolling_upgrade_policy {
    max_batch_instance_percent              = 20
    max_unhealthy_instance_percent          = 20
    max_unhealthy_upgraded_instance_percent = 5
    pause_time_between_batches              = "PT0S"
  }
  source_image_reference {
    publisher = "Canonical"
    offer     = "0001-com-ubuntu-server-jammy"
    sku       = "22_04-lts"
    version   = "latest"
  }
  os_disk {
    caching              = "ReadWrite"
    storage_account_type = "Standard_LRS"
  }
  network_interface {
    name    = "{name}-nic"
    primary = true
    ip_configuration {
      name      = "internal"
      primary   = true
      subnet_id = azurerm_subnet.{name}.id
    }
  }
}

Compliance frameworks

Vendor documentation

Is your environment compliant with this rule?

CGPulse checks it — and 621 others — against your Azure and AWS accounts with read-only access.

Run a free scan

Related Azure rules

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please reload the page.