Check ID:
Provider: Azure
Service:
Severity: MEDIUM
Resource type:
vm_desired_sku_sizeProvider: Azure
Service:
vmSeverity: MEDIUM
Resource type:
microsoft.compute/virtualmachinesWhat this check verifies
Azure virtual machines are compared against an organization allowlist of VM size SKUs defined indesired_vm_sku_sizes.
Instances using sizes outside this list are flagged as non-standard.
Risk
Unrestricted VM sizes enable over-provisioned or exotic SKUs, leading to:- Sudden cost spikes and quota exhaustion (availability)
- Use of hardware lacking required security features (confidentiality/integrity)
- Abuse by compromised accounts for cryptomining at scale
Recommendation
Adopt a least privilege, policy-enforced allowlist of VM size SKUs per workload tier and region.- Deny creation of non-approved sizes across scopes
- Require exception reviews with time-bound overrides
- Reassess the list regularly for cost, performance, and compliance
- Monitor provisioning and cost anomalies for drift
Remediation
- CLI
- Terraform
- Native IaC
- Dashboard steps
az vm resize —resource-group <RESOURCE_GROUP> —name <VM_NAME> —size <desired-sku-1>
References
- https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/resize-vm
- https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/overview
Where this check fires
This check runs on every scheduled scan against your Azure account. Findings appear at Cloud Security → Findings filterable byCheck ID = vm_desired_sku_size. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to Azure checks