Azure landing zones in Terraform, with the firewall in the hub.
Deploy a complete Azure landing zone with the Enforza firewall and secure NAT in the hub, built from scratch in Terraform, or drop the appliance into a hub you already run. Same egress, ingress and east-west control as Azure Firewall, at a flat per-firewall price with no per-GB data-processing tax.
The hub firewall slot the Cloud Adoption Framework already blesses
Deploy Azure Firewall or partner NVAs in the central-hub virtual network for east/west or south/north traffic protection and filtering.
Enforza is a partner network virtual appliance, so putting it in the hub is the supported pattern, not a workaround. It takes the same slot Azure Firewall would, does the same core egress and east-west job with FQDN and SNI-based Layer 7 filtering and secure NAT, and bills as a flat per-firewall licence instead of a per-hour, per-GB meter.
Three from-scratch Azure landing zones, in Terraform
Each pattern builds the whole network (a VNet, a public gateway subnet and two private workload subnets, plus a network security group) and places the Enforza gateway in it. They are refreshed to the current registration contract and validated: terraform validate and terraform fmt both clean.
Get the Terraform
The three Azure patterns live in the public repository, alongside the AWS patterns. Clone it, pick a pattern directory, copy the example variables and run terraform apply. You need the Azure CLI authenticated and Terraform 1.0 or newer.
How registration works
Each gateway VM boots a stock Ubuntu image and, on first boot, registers itself to the Enforza cloud with a deployment key from the console (Onboard Firewall, Deployment Keys). A key is one-time use per firewall, so a pattern that builds two gateways needs two different keys.
The control plane is outbound-only: the gateway reaches up to the Enforza cloud, and you attach policy in the console once it appears under Firewalls.
Simple single-AZ: one gateway in a new Azure network
Who it is for: dev, test and small production, and the quickest way to stand up a filtered egress edge in a brand new Azure network.
What it deploys
- A VNet (10.0.0.0/16), a public gateway subnet (10.0.1.0/24) and two private workload subnets (10.0.10.0/24, 10.0.20.0/24), plus a network security group.
- One Enforza gateway VM on a stock Ubuntu image, with IP forwarding on the network interface and a Standard static public IP for egress.
- The gateway registers itself on first boot with one deployment key.
How to use it
- Copy terraform.tfvars.example, set your subscription ID and one deployment key, then terraform apply.
- Steer each workload subnet through the gateway with a user-defined route (0.0.0.0/0 to the gateway's private IP, 10.0.1.4).
- The firewall appears in the console under Firewalls; attach policy.
Indicative Azure infrastructure cost about $30/month, excluding the Enforza licence and region-dependent. It is your own Azure cost, not something Enforza removes.
HA multi-AZ: two gateways across availability zones
Who it is for: production that wants resilience across availability zones, without standing up an existing hub first.
What it deploys
- The same from-scratch VNet, public gateway subnet, two private workload subnets and network security group.
- Two Enforza gateway VMs, one in each of two availability zones, each with IP forwarding on and its own zonal Standard static public IP.
- An internal Standard load balancer (private frontend 10.0.1.100) with both gateways in its backend pool and a TCP health probe.
- Route tables on both private subnets sending 0.0.0.0/0 through the load balancer, associated for you.
How to use it, and what it does not claim
- Two gateways means two firewalls, so provide two different deployment keys (one-time use per firewall).
- Both gateways register and appear in the console; attach the same policy to each.
- It gives you two zonal gateways, an internal load balancer with a health probe, and route tables. We make no specific failover-time or session-synchronisation claim.
Internal load balancer · 10.0.1.100 spreads traffic across both gateways, TCP health probe on each
Network security group
applied to each gateway
Indicative Azure infrastructure cost about $70/month, excluding the Enforza licence and region-dependent. It is your own Azure cost, covering two VMs, the load balancer and the public IPs.
HA multi-AZ with DNAT: publish services under a DNS name
Who it is for: production HA that also needs to publish inbound services to the internet under a DNS name, with the firewall doing the DNAT.
What it deploys
- Everything in the HA multi-AZ pattern above, so it extends that topology.
- An external, internet-facing Standard load balancer with a static public IP and an Azure DNS name, forwarding to both gateways.
- A test workload (an Nginx VM with no public IP) in a private subnet, to validate the inbound DNAT path end to end.
How to use it
- Same two-key registration as the HA multi-AZ pattern.
- The external load balancer forwards inbound traffic to the gateways; the gateways do the DNAT to your internal service.
- Publish a service by adding a DNAT rule on the firewall in the console, then reach it at the external load balancer's DNS name.
Indicative Azure infrastructure cost about $90/month, excluding the Enforza licence and region-dependent. It is your own Azure cost, adding the internet-facing load balancer, its public IP and DNS name, and the test VM.
Drop in just the appliance, one-click from the Marketplace or ARM
Who it is for: teams who already run an Azure hub and want only the appliance dropped in, not a new network. This is one of several routes, not the only one.
What it deploys
- One Enforza NVA VM into your existing VNet and subnet.
- IP forwarding enabled on the network interface, the one switch a forwarding appliance needs that the image cannot set for itself.
- A stable Standard static public IP for egress, and a network security group.
- An optional route table (0.0.0.0/0 at the firewall's private IP) that it deliberately does not auto-associate, so it never black-holes an existing subnet.
How to use it
- Deploy one-click from the Azure Marketplace, or run the ARM template.
- In the console, open Claim a firewall and enter the Subscription ID and VM ID from the outputs.
- Add the shown claim tag if you did not pass it at deploy.
- Steer workload traffic through the firewall's private IP with a user-defined route.
Same egress control, about 72% off the firewall bill
- Azure Firewall Standard ($1.25/hour + $0.016/GB)
- $1,232.50
- Enforza, flat licence + your VM
- ~$339
Azure Firewall Standard rates are US list, dated 2026-07-04, directional. Azure self-SNATs, so there is no separate NAT gateway stacked behind it for outbound. Enforza is a flat $239/firewall licence (£179, $199 from your sixth) at $0/GB plus the ~$100 VM shown; a small-to-midsize Linux VM is typically $70–$150/month. You still pay Azure for that VM and for VNet bandwidth, which Enforza does not remove.
Put a flat-priced firewall in every Azure hub you build
Azure CSP and Lighthouse make the partner the default operator of the client's cloud firewall. Enforza in the hub is a partner-usable, flat-priced accelerator: the same inspected egress edge in every tenant you manage, at a price your clients can forecast.
Enforza on Azure, common questions
Does the Cloud Adoption Framework really allow a partner firewall in the hub?
Yes. Microsoft's Cloud Adoption Framework traditional-networking-topology guidance says, in its design recommendations: deploy Azure Firewall or partner NVAs in the central-hub virtual network for east/west or south/north traffic protection and filtering. Enforza is a partner network virtual appliance, so putting it in the hub is an in-pattern substitution, not a workaround.
What actually deploys on Azure?
Two routes. One, three from-scratch Terraform patterns that build the whole Azure network (a VNet, a public subnet for the gateways and two private workload subnets, plus a network security group) and place the Enforza gateway in it: a simple single-AZ pattern for dev, test and small production; an HA multi-AZ pattern with two gateways across availability zones behind an internal load balancer; and an HA multi-AZ with DNAT pattern that adds an internet-facing load balancer with a DNS name for published services. Two, a single-appliance deploy into a hub you already run, one-click from the Azure Marketplace or via the ARM template. Every gateway registers itself on first boot, then you attach policy in the console.
Why do the HA patterns need two deployment keys?
Each gateway VM registers itself on first boot with a deployment key from the console, and a key is one-time use per firewall. The two HA patterns build two gateway VMs, so they take two different keys, one per gateway. Reusing a single key across both would fail to register the second. The simple single-AZ pattern and the single-appliance Marketplace or ARM route each take one key.
How do I point traffic through it?
With a user-defined route. In the single-AZ and drop-in appliance routes you point each workload subnet's 0.0.0.0/0 at the firewall's private IP as a virtual appliance. In the HA patterns the Terraform builds the route table for you and points 0.0.0.0/0 at the internal load balancer's private IP (10.0.1.100), which spreads traffic across both gateways. Register or claim each gateway in the console, then attach policy.
How much cheaper is Enforza than Azure Firewall?
On the core egress job, up to 60–80%. A two-network hub-and-spoke pushing 20 TB a month through one Azure Firewall Standard is about $1,232.50/month ($912.50 in deployment-hours at $1.25/hour plus $320 in data-processing at $0.016/GB). The same workload on Enforza is a flat $239 licence (£179) plus the VM you run it on, near $339/month all-in, roughly 72% less. Rates are US list, dated 2026-07-04, directional. Azure self-SNATs, so there is no separate NAT gateway stacked behind it. The full line-by-line maths is on the worked example.
Do you have sized, from-scratch Azure landing zones like the AWS patterns?
Yes. Three real, validated Terraform patterns that build the network from scratch, not just an appliance dropped into an existing hub: simple single-AZ (one gateway, for dev, test and small deployments), HA multi-AZ (two gateways across availability zones behind an internal load balancer, with route tables sending private-subnet traffic through them), and HA multi-AZ with DNAT (the same plus an internet-facing load balancer with a DNS name, for inbound published services). Each is Terraform, validated clean, and downloadable from the public repository.
Is this relevant to the Azure default outbound access retirement?
Yes. Since 31 March 2026 Azure has retired default outbound access for new deployments, so every workload needs an explicit, deliberate egress path. Enforza as the hub NVA is exactly that: a controlled, filtered, secure-NAT outbound path with audit-ready logs to your own SIEM, rather than an implicit default route.
Azure architecture icons are property of Microsoft, used per their published icon terms for architecture diagrams. Enforza is an independent product and is not affiliated with, sponsored by, or endorsed by Microsoft.
Cut the Azure Firewall bill, no per-GB tax.
Deploy a complete Azure landing zone in Terraform or drop Enforza into your existing hub as the partner NVA the Cloud Adoption Framework blesses. Same egress and east-west control with FQDN and SNI-based Layer 7 filtering and secure NAT, at a flat per-firewall price. Start free, no card.