This design implements Azure Firewall as the central security checkpoint.
Topology: The Firewall is deployed in the Hub VNet. All traffic from Spoke VNets (Egress to Internet, or Spoke-to-Spoke) is routed through this Firewall for inspection.
+--------------+ +--------------------------+ +--------------+
| Internet | | HUB VNet | | SPOKE VNet |
| (Malicious) |<--------->| [Azure Firewall] |<--------->| [Workload] |
| | Filter | (10.0.1.4) | Peering | (UDR: 0/0) |
+--------------+ +--------------------------+ +--------------+
PRIMARY REGION (East US)
+-----------------------------------------------------------------------+
| HUB VNet: vnet-hub (10.0.0.0/16) |
| +-----------------------+ |
| | AzureFirewallSubnet | |
| | (10.0.1.0/24) | |
| | [Azure Firewall] | |
| | (PIP: 20.x.x.x) | |
| +-----------|-----------+ |
| | |
| v (Peering) |
+---------------|-------------------------------------------------------+
|
+---------------|-------------------------------------------------------+
| SPOKE VNet: vnet-spoke (10.1.0.0/16) |
| +-----------------------+ |
| | Subnet: Workload | |
| | Route Table: rt-spoke | |
| | (0.0.0.0/0 -> FW IP) | |
| | [VM] | |
| +-----------------------+ |
+---------------|-------------------------------------------------------+
|
| (Policy Replication)
v
+-----------------------------------------------------------------------+
| SECONDARY REGION (West US) - DR Site |
| |
| +-----------------------+ +-----------------------+ |
| | Firewall Policy | | Azure Firewall | |
| | (Global Resource) | | (Standby) | |
| +-----------------------+ +-----------------------+ |
+-----------------------------------------------------------------------+
* Deploy Firewall in West US Hub.
* Attach the Same Firewall Policy to the West US Firewall.
* This ensures rules are identical in both regions.
* Network Rules: Allow IP to IP (e.g., Spoke -> DNS).
* Application Rules: Allow FQDNs (e.g., *.ubuntu.com for updates).
1. VM: Tries to go to google.com.
2. UDR: Route table sees 0.0.0.0/0 -> Next Hop 10.0.1.4 (Firewall).
3. Peering: Packet sent to Hub.
4. Firewall: Checks Application Rules. "Is google.com allowed?" -> Yes.
5. NAT: Firewall SNATs the traffic (Source becomes Firewall Public IP).
6. Internet: Packet goes to Google.
7. Return: Google replies to Firewall. Firewall forwards to VM.
1. Go to vnet-hub.
2. Subnets -> + Subnet.
3. Name: AzureFirewallSubnet (Exact spelling required).
4. Subnet address range: 10.0.1.0/24 (Must be /26 or larger).
5. Save.
1. Search: "Firewalls" -> + Create.
2. Resource Group: rg-hub-prod.
3. Name: fw-hub.
4. Region: East US.
5. Firewall SKU: Standard.
6. Firewall management: Use a Firewall Policy.
7. Firewall policy: Click Create new.
* Name: pol-global-corp.
* Region: East US.
* OK.
8. Virtual network: Select vnet-hub.
9. Public IP address: Create new pip-fw.
10. Create.
1. Search: "Route tables" -> + Create.
2. Name: rt-spoke-to-hub.
3. Region: East US.
4. Propagate gateway routes: Yes.
5. Create.
6. Go to resource -> Routes -> + Add.
* Route name: To-Internet-via-FW.
* Address prefix: 0.0.0.0/0 (Default Route).
* Next hop type: Virtual appliance.
* Next hop address: 10.0.1.4 (Check Firewall Private IP).
* Add.
1. Go to Route Table rt-spoke-to-hub -> Subnets -> + Associate.
2. Virtual network: vnet-spoke (or vnet-ntier-spoke).
3. Subnet: Select the workload subnet (e.g., snet-workload).
4. OK.
1. Login to a VM in the Spoke.
2. Try curl google.com.
3. It should Time out or fail (Default Deny).
1. Go to Firewall Policy pol-global-corp.
2. Application Rules -> Add a rule collection.
* Name: Allow-Google.
* Priority: 200.
* Action: Allow.
* Rule:
* Name: Google.
* Source type: IP Address. Source: *.
* Protocol: http, https.
* Target FQDNs: *.google.com.
* Add.
3. Try curl google.com on the VM again. It should Succeed.