Skip to main content
orphan · azure

Managed disk snapshots whose source disk no longer exists

resource types
1
rule IDs covered
1
severity
low

What does ZopNight detect here?

Azure managed disk snapshots live on after the disk they came from is deleted, and keep billing for their used size. ZopNight groups snapshots whose `sourceResourceId` disk is gone into one finding per subscription and region, prices them from their total provisioned size, and reports that monthly cost as the saving.

Signal and threshold

How ZopNight evaluates Managed disk snapshots whose source disk no longer exists.
Field Value
Rule IDsRC-242
Categoryorphan
Severitylow
Metricnone — pure configuration read
Thresholdsource disk deleted
SourceZopNight
Permissions usedMicrosoft.Compute/snapshots/read · Microsoft.Compute/disks/read

Snapshots outlive their disks

Microsoft’s snapshot guide describes a managed disk snapshot as a full, read-only, point-in-time copy that exists independently of the source disk. Deleting the disk does not delete its snapshots. The same page says snapshots are billed on used size: a 64 GiB disk with 10 GiB of data produces a snapshot billed for 10 GiB. Incremental snapshots are also billed for used size only, and always use Standard HDD storage whatever the source disk type.

Once the source disk is gone, nobody is snapshotting that disk any more, and the remaining copies usually belong to a server that was retired long ago.

Finding snapshots with a missing source

List the snapshots with the disk each one came from, then check whether that disk still exists:

Terminal window
az snapshot list \
--query "[].{name:name, group:resourceGroup, source:creationData.sourceResourceId, sizeGB:diskSizeGB}" -o table
az disk show --ids <source-disk-id> --query name -o tsv

If the second command reports that the resource was not found, the source disk has been deleted.

How the finding is assembled

ZopNight does not raise one finding per snapshot. Snapshots whose source disk has been deleted are rolled up into a single entry for each subscription and region, carrying the number of orphaned snapshots and their combined size. The rule fires when that entry is active, holds at least one snapshot, and has a positive price. Snapshots whose source disk still exists are not part of it.

Limits on the estimate

The price is built from provisioned size, the sum of each snapshot’s disk size in GB, at the standard snapshot rate. Azure bills on used size, so for sparse disks the estimate is an upper bound on the real bill rather than an exact figure. If no price can be computed, there is no finding; a zero-cost entry is never shown. Unattached disks, as opposed to snapshots, are handled by Unattached Azure Managed Disk.

Pricing the rollup

Terminal window
saving = total provisioned GB of orphaned snapshots x standard snapshot rate per GB-month
cost after fix = 0

Clearing orphaned snapshots

  1. Confirm the source disks were deleted on purpose and the data is no longer needed.
  2. If some data may be required, create a managed disk from the snapshot first, or keep only the newest snapshot of each series.
  3. Check that no image or restore process depends on the snapshots.
  4. Delete them in the portal (Snapshots, filter by region) or with az snapshot delete --resource-group <rg> --name <snapshot>.

See it fire on your bill.

Connect an account read-only. The first findings land in minutes.

472 rule families across 353 resource types on 22 platforms. Every threshold, metric, and IAM action is documented on these pages before you grant anything.

472 rule families documented
353 resource types covered
read-only default access level
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·