When deploying resources in Azure, you'll encounter two types of Public IP addresses: Basic and Standard. The core difference lies in their features, capabilities, and supported scenarios.
Feature | Basic | Standard |
---|---|---|
Availability Zones | No | Yes |
Routing Preference | No | Yes |
Global Tier | No | Yes |
Security | Open by default | Secure by default |
Load Balancer Compatibility | Basic LB only | Standard LB only |
Azure will automatically use Standard SKU Public IP when:
- You're deploying a Standard Load Balancer
- You explicitly select Standard SKU during resource creation
- Your VM is part of an availability zone configuration
You can specify the SKU type either during creation or via ARM templates:
// ARM template snippet for Standard Public IP { "apiVersion": "2021-05-01", "type": "Microsoft.Network/publicIPAddresses", "name": "myStandardPublicIP", "location": "[resourceGroup().location]", "sku": { "name": "Standard" }, "properties": { "publicIPAllocationMethod": "Static" } }
Here's how to create a Standard SKU Public IP using Azure CLI:
az network public-ip create \ --resource-group MyResourceGroup \ --name MyStandardPublicIP \ --sku Standard \ --allocation-method Static \ --zone 1 2 3
The Basic SKU is often the default because:
- It's compatible with more legacy services
- It's the fallback option when no SKU is specified
- It has lower costs for simple scenarios
To upgrade from Basic to Standard:
# First, delete the Basic IP (after reassigning dependencies) az network public-ip delete --name MyBasicPublicIP --resource-group MyResourceGroup # Then create Standard IP az network public-ip create --name MyStandardPublicIP --resource-group MyResourceGroup --sku Standard
Azure offers two distinct SKUs for public IP addresses with fundamentally different architectures:
Feature | Basic | Standard |
---|---|---|
Availability Zones | Non-zonal | Zone-redundant or zonal |
Security | Open by default | Closed by default (NSG required) |
Routing Preference | Microsoft network only | Internet routing option |
Supported Resources | VMs, Load Balancers | VMs, Load Balancers, Application Gateways |
The portal defaults to Basic SKU when:
- Creating standalone VMs without associated load balancers
- Using older ARM templates that don't specify SKU
- The region doesn't support Standard SKU features
To force Standard SKU usage, you must explicitly declare it in your deployment:
// ARM Template example
{
"apiVersion": "2020-11-01",
"type": "Microsoft.Network/publicIPAddresses",
"name": "myStandardIP",
"location": "[resourceGroup().location]",
"sku": {
"name": "Standard"
},
"properties": {
"publicIPAllocationMethod": "Static"
}
}
When to choose Basic:
- Dev/test environments
- Temporary workloads
- Non-critical applications
When Standard is mandatory:
- Production workloads requiring zone redundancy
- Applications needing DDoS protection tier
- Global load balancing scenarios
Use Azure CLI to verify your quotas:
az vm list-usage --location eastus --output table
To increase Standard SKU quota, you'll need to submit a support request through the Azure portal.