Verify that no Azure SQL Databases allow ingress from 0.0.0.0/0 (ANY IP)

Framework Reference: A.8.23 Integration: Azure – SQL Server

Why this matters

Allowing public ingress from 0.0.0.0/0 (any IP) exposes your SQL database to the entire internet, drastically increasing the attack surface and risk of unauthorized access. Tightening firewall rules to restrict access to known IP ranges is essential to maintain a secure network perimeter and meet compliance requirements.


What this check does

This Auto Check verifies that no firewall rule is configured to allow traffic from 0.0.0.0/0, 255.255.255.255, or named AllowAllWindowsAzureIps.

Check Logic

Passes if:

  • No firewall rule allows StartIpAddress = 0.0.0.0
  • No rule ends at EndIpAddress = 255.255.255.255
  • Rule name is not AllowAllWindowsAzureIps

Fails if:

  • Any rule allows full public ingress (e.g. 0.0.0.0/0)

Applies to:

  • Azure SQL Server
  • Azure SQL Database

How to fix it

Azure Portal

Go to SQL servers

Select the server

Navigate to Networking

Uncheck Allow Azure services and resources to access this server

Delete any firewall rule where:

Start IP = 0.0.0.0

End IP = 255.255.255.255

Rule name is AllowAllWindowsAzureIps

Azure CLI

# Delete the default open access rule az sql server firewall-rule delete \  --resource-group <resourceGroupName> \  --server <sqlServerName> \  --name "AllowAllWindowsAzureIps" # Delete any custom wide-open rules az sql server firewall-rule delete \  --resource-group <resourceGroupName> \  --server <sqlServerName> \  --name <customRuleName> # Create more restrictive firewall rule az sql server firewall-rule create \  --resource-group <resourceGroupName> \  --server <sqlServerName> \  --name <secureRuleName> \  --start-ip-address "<allowedStartIP>" \  --end-ip-address "<allowedEndIP>" 

PowerShell

# Remove insecure rules Remove-AzSqlServerFirewallRule `  -FirewallRuleName "AllowAllWindowsAzureIps" `  -ResourceGroupName <resourceGroupName> `  -ServerName <sqlServerName> Remove-AzSqlServerFirewallRule `  -FirewallRuleName "<customRuleName>" `  -ResourceGroupName <resourceGroupName> `  -ServerName <sqlServerName> # Add secure rule Set-AzSqlServerFirewallRule `  -ResourceGroupName <resourceGroupName> `  -ServerName <sqlServerName> `  -FirewallRuleName "<secureRuleName>" `  -StartIpAddress "<allowedStartIP>" `  -EndIpAddress "<allowedEndIP>"


Exceptions

No technical exceptions. In rare Dev/Test scenarios, public access may be temporarily allowed but must be removed before production. All exceptions must be time-boxed and documented.


Further resources

Was this article helpful?