Secure boot and attestation: the basics
What does a machine with no verified boot chain actually expose?
Everything that protects a virtual machine, the agent, the firewall rules, the anti-malware, runs inside the operating system. None of it can see a threat that loads before the operating system does. A bootkit or rootkit that compromises the boot loader or the kernel sits underneath every in-guest control and stays invisible to them. Trusted Launch closes that gap by giving the machine a verifiable root of trust below the OS, built from three settings that work together: Secure Boot checks that the boot loader, kernel and drivers are signed by a trusted publisher before they run, a virtual Trusted Platform Module (vTPM) measures each boot stage into tamper-resistant registers, and guest attestation lets Defender for Cloud read those measurements remotely and confirm the machine booted clean.
Microsoft Defender for Cloud turns each piece of this into its own recommendation, which is why one VM-heavy subscription can fail several boot-integrity checks at once. 'Secure Boot should be enabled on supported Windows virtual machines' and 'vTPM should be enabled on supported virtual machines' switch on the foundations. The 'Guest Attestation extension should be installed' recommendations, which apply separately to Linux and Windows machines and to virtual machine scale sets, add the remote proof. 'Virtual machines guest attestation status should be healthy' is the one that actually confirms a machine is booting the way you expect. On the Linux side there are companion checks that the machine uses only signed and trusted boot components and enforces kernel module signature validation. They read as separate findings, but they are one job: make every machine able to prove it booted the software you intended.
Most of this gap is drift, not intent. A Generation 2 image deployed before Trusted Launch became the default, a scale set template that never enabled Secure Boot, an Azure Local cluster that predates the Secured-core baseline. The work is to find every supported machine that is running without a verified boot chain, enable Secure Boot and vTPM, install the attestation extension so the platform can watch the boot, and then enforce the safe configuration with policy so new machines arrive that way.
In this lesson you will learn how Azure expresses boot integrity through Trusted Launch, how to find every supported machine running without a verified boot chain, and how to enable Secure Boot, vTPM and guest attestation without disrupting workloads that need a reboot. The Controls this lesson covers section lists every Defender for Cloud recommendation in this capability, each linking to a deep page with the exact check and a copy-and-paste fix.
The threat that boots before your antivirus
Bootkits and firmware rootkits are prized by advanced attackers for one reason: they load before the operating system, so they sit underneath every security product you run inside it. Some of the most studied examples persist even through a full OS reinstall, because they live below the layer the reinstall touches. Secure Boot is the answer hardware vendors and cloud platforms converged on: refuse to run any boot component that is not signed by a trusted publisher, and measure what did run into a TPM so the result can be checked later. Azure brings the same protection to virtual machines through Trusted Launch, and the vTPM means a cloud VM can be attested remotely, something a physical machine in a locked room cannot easily offer.
Finding machines with no verified boot chain
Priya is the security lead at a scale-up preparing for its first ISO 27001 audit. Defender for Cloud shows boot-integrity findings spread across dozens of virtual machines in two subscriptions that pre-date the team's current image standards.
Rather than work the findings one by one, Priya starts by listing which supported machines are still running without Secure Boot or vTPM, so the upgrade work can be scheduled against real maintenance windows before anything reboots unexpectedly.
List the VMs whose security profile shows Secure Boot or vTPM is not enabled. These are the machines with no verified boot chain.
A production machine with neither Secure Boot nor vTPM has no root of trust at all and cannot be attested. Schedule the data-bearing machines into a maintenance window before the disposable ones.
How Defender for Cloud decides a machine has no verified bootdeep dive
Trusted Launch is available on Generation 2 virtual machines, and most of these recommendations resolve to one of three things on the machine's security profile. The first is 'secureBootEnabled': when it is false, the platform does not check that boot components are signed, so an unsigned or tampered boot loader, kernel or driver can run. The second is 'vTpmEnabled': when it is false, there is no virtual TPM measuring the boot stages, so there is nothing to attest against. The third is the guest attestation extension: without it, even a machine with Secure Boot and vTPM on cannot report its boot state to Defender, so the platform cannot confirm the machine actually booted clean. The Linux companion checks, signed and trusted boot components and kernel module signature validation, are the OS-level expression of the same Secure Boot guarantee.
Defender for Cloud evaluates these against the Microsoft Cloud Security Benchmark on a periodic cycle, so a fix does not flip the recommendation to Healthy instantly. The control-plane change itself takes effect on the next boot, but the posture catches up on the next assessment, and the 'guest attestation status should be healthy' signal only appears once the extension has reported at least one successful attestation. This matters when you are gathering audit evidence against a deadline. These are low-severity recommendations, which understates them: low severity reflects that the threat is uncommon, not that the consequence is small.
The strongest position combines the per-machine settings with an Azure Policy backstop and a Trusted Launch base image. Enabling Secure Boot and vTPM is an in-place upgrade on an existing machine, but it is far cheaper to bake Trusted Launch into the image so every new machine arrives with a verified boot chain and the attestation extension already installed. There is an Azure Policy initiative that configures the prerequisites to enable guest attestation on Trusted Launch machines, which is the difference between checking what booted today and guaranteeing every new machine can be attested tomorrow.
What is the impact of leaving boot integrity off?
The direct impact is a blind spot at the most privileged layer of the machine. A bootkit or rootkit that compromises the boot loader or kernel runs with the highest privilege and loads before any in-guest control, so the antivirus, the EDR agent and the host firewall cannot see it. Without Secure Boot there is nothing stopping an unsigned boot component from running, and without a vTPM and the attestation extension there is no way for the platform to notice that the machine booted something it should not have. This is precisely the foothold advanced attackers use to persist, because it survives reboots and often survives an OS reinstall.
The second-order impact is that you lose the ability to trust your own evidence. If a machine could have been compromised below the operating system, then every log, every agent report and every clean scan it produced is suspect, because the thing producing them sits above the compromise. Boot attestation restores a verifiable anchor: a machine that attests healthy booted the components you expect, which is a stronger statement than 'nothing has alerted'.
On the compliance side, modern frameworks increasingly expect a hardware or platform root of trust and integrity monitoring for systems handling sensitive data. ISO 27001, SOC 2 and the regulated-industry baselines all reward demonstrable boot integrity, and Azure Local's Secured-core requirements make it explicit at the infrastructure layer. A fleet that attests healthy across every subscription is a defensible artefact you can hand an auditor, and one that in-guest tooling alone cannot produce.
How do you turn on a verified boot chain safely?
Work the capability as one loop rather than chasing individual findings. The order matters: enabling Secure Boot and vTPM is an in-place upgrade that requires deallocating the machine, so schedule the reboots rather than triggering them by surprise.
1. Inventory every supported machine without boot integrity
List the Generation 2 virtual machines and scale sets that have Secure Boot or vTPM disabled, and the Trusted Launch machines that are missing the guest attestation extension. Treat this inventory as the source of truth, not the Defender finding count, because one machine can trigger several recommendations at once: no Secure Boot, no vTPM and no attestation.
2. Schedule the upgrade by workload sensitivity
Enabling Secure Boot and vTPM on an existing VM requires deallocating it first and triggers a reboot, so it must go into a maintenance window. Prioritise machines that run sensitive workloads or hold data over short-lived ones. For disposable fleets such as build agents, the cheapest fix is to rebuild them from a Trusted Launch image rather than upgrade each machine in place.
3. Enable Secure Boot and vTPM, then attest
For each machine, deallocate it, set the security type to Trusted Launch with Secure Boot and vTPM enabled, then start it and install the guest attestation extension so Defender can read the boot remotely. vTPM is on by default for Trusted Launch machines; Secure Boot must be enabled explicitly. The attestation status only turns Healthy once the extension has reported a successful boot.
4. Make Trusted Launch the default with policy and images
Switch your base images to Trusted Launch so every new machine arrives with a verified boot chain. Back this with Azure Policy: audit machines that lack Secure Boot or vTPM, and assign the initiative that configures the prerequisites to enable guest attestation, so new Trusted Launch machines are attestable automatically rather than by hand.
# Upgrade one VM in place to a verified boot chain.
# Secure Boot + vTPM is a security-profile change, so the VM must be deallocated first.
RG="workloads-rg"
VM="payments-api-prod"
az vm deallocate --resource-group "$RG" --name "$VM"
az vm update --resource-group "$RG" --name "$VM" \
--security-type TrustedLaunch \
--enable-secure-boot true \
--enable-vtpm true
az vm start --resource-group "$RG" --name "$VM"
# Install the guest attestation extension so Defender can read the boot remotely.
# Publisher is Microsoft.Azure.Security.LinuxAttestation for Linux,
# Microsoft.Azure.Security.WindowsAttestation for Windows.
az vm extension set \
--resource-group "$RG" --vm-name "$VM" \
--name GuestAttestation \
--publisher Microsoft.Azure.Security.LinuxAttestation \
--enable-auto-upgrade true
# Ratchet it shut: audit any future machine that lacks Secure Boot.
# Look the built-in policy up by its exact display name; never paste a guessed GUID.
pid=$(az policy definition list \
--query "[?displayName=='Secure Boot should be enabled on supported Windows virtual machines'].name" -o tsv)
az policy assignment create \
--name audit-secure-boot \
--policy "$pid" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000" Quick quiz
Question 1 of 5Defender for Cloud shows separate findings for Secure Boot, vTPM and guest attestation across several machines. What is the most efficient way to think about them?
You scored
0 / 5
Keep learning
Go deeper on how Azure builds a verifiable root of trust for machines through Trusted Launch and guest attestation.
- Trusted Launch for Azure virtual machines How Secure Boot, vTPM and boot integrity monitoring combine into a root of trust below the OS.
- Enable Trusted Launch on existing Generation 2 VMs The in-place upgrade path, including the deallocate-and-reboot requirement.
- Use Defender for Cloud with guest attestation How the attestation extension lets Defender confirm a machine booted clean.
You can now treat boot integrity as one capability rather than a scatter of low-severity findings: inventory the supported machines with no verified boot chain, schedule the sensitive ones into a maintenance window to enable Secure Boot and vTPM, install the attestation extension so the platform can prove each boot is clean, and make Trusted Launch the default through your base images and Azure Policy. The Controls this lesson covers section below links every recommendation in this group to its deep page and fix.
Back to the library