Cloud Compare / Cloud Armor, AWS WAF and Azure WAF
Cloud Armor, AWS WAF and Azure WAF
Google Cloud Armor and its AWS and Azure equivalents: where each attaches, features, DDoS tiers, pricing, and moving rules between them.
Google Cloud Armor combines a web application firewall (WAF) with DDoS protection for anything behind a Google Cloud load balancer. AWS and Azure split the same job across two services each: a WAF service and a DDoS service. This page maps Cloud Armor to its equivalents, feature by feature, and shows what changes when you move rules between them.
The short answer
| Cloud Armor part | AWS equivalent | Azure equivalent |
|---|---|---|
| Cloud Armor security policy (WAF rules, rate limiting, IP and geo rules) | AWS WAF protection pack (web ACL) | Azure WAF policy on Front Door or Application Gateway |
| Cloud Armor Standard DDoS protection for load balancers | AWS Shield Standard (automatic, free) | DDoS infrastructure protection (automatic, free) |
| Cloud Armor Enterprise (Adaptive Protection, advanced network DDoS, threat intelligence, attack visibility) | AWS Shield Advanced, with AWS WAF included for protected resources | Azure DDoS Network Protection (or IP Protection), with Front Door Premium or Application Gateway WAF |
| Bot management (reCAPTCHA) | AWS WAF Bot Control; Fraud Control | Bot Manager rule set (Front Door Premium, Application Gateway) |
| Edge security policies (at Google's edge, for CDN-cached content) | AWS WAF on CloudFront | Azure WAF on Front Door |
Where each one attaches
A WAF only sees traffic that passes through the service it's attached to, so the first design question is the same in every cloud: what's the entry point?
| Cloud Armor | AWS WAF | Azure WAF | |
|---|---|---|---|
| Global entry point | Global external Application Load Balancer (backend security policy) and edge security policies | CloudFront distribution (web ACL created in us-east-1) | Front Door Standard or Premium |
| Regional entry point | Regional external and internal Application Load Balancers; proxy and passthrough Network Load Balancers | Application Load Balancer, API Gateway REST API, AppSync, Cognito user pools, App Runner, Verified Access, Amplify | Application Gateway WAF_v2; Application Gateway for Containers |
| Non-HTTP and VMs with public IPs | Network edge security policies (Enterprise) | Shield Advanced on Elastic IPs, NLB, Global Accelerator | DDoS Protection on public IPs |
| Policy scope | One policy per backend service (or backend bucket) | One web ACL per resource; one web ACL can cover many resources | One policy per Front Door / gateway, or per listener (site) and per path on Application Gateway |
Feature by feature
| Feature | Cloud Armor | AWS WAF | Azure WAF |
|---|---|---|---|
| OWASP-style managed rules | Preconfigured WAF rules from ModSecurity Core Rule Set 3.0, 3.3 and 4.x, with sensitivity levels | AWS managed rule groups: core rule set, known bad inputs, SQL database, Linux, Windows, PHP, WordPress | Default Rule Set (DRS 2.x) and older OWASP CRS 3.x on Application Gateway; DRS on Front Door Premium only |
| Custom rules language | Common Expression Language (CEL), for example origin.region_code == 'XX' | JSON statements (match, and/or/not, regex, size, geo, label) | Match conditions on variables (RemoteAddr, RequestUri, headers, cookies) with operators |
| IP allow and deny lists | Rules on IP ranges; address groups for large lists | IP sets | IPMatch conditions in custom rules |
| Geo blocking | Yes (origin.region_code) | Yes (geo match) | Yes (GeoMatch) |
| Rate limiting | Throttle or rate-based ban, keyed by IP, header, cookie, path and more | Rate-based rules, with custom aggregation keys and 1–10 minute windows | Rate limit custom rules (1 or 5 minute windows), grouped by client address, geo or none |
| Bot management | reCAPTCHA integration (challenge pages, tokens) | Bot Control (common and targeted), CAPTCHA and silent challenge | Bot Manager rule set (good, bad, unknown bots); JavaScript challenge on Front Door |
| Account-takeover protection | reCAPTCHA account defender (separate product) | Fraud Control: account takeover and account creation fraud prevention | Not built in (use Entra External ID protections or a partner) |
| Threat intelligence lists | Enterprise: Tor exit nodes, known malicious IPs, crawlers, public cloud ranges | Amazon IP reputation and anonymous IP managed rule groups | Bot Manager bad-bot IP reputation; Azure Firewall threat intel for non-web |
| Layer 7 DDoS help | Adaptive Protection (Enterprise) suggests rules from traffic anomalies | Shield Advanced automatic application-layer DDoS mitigation; anti-DDoS managed rule group | Rate limiting; Front Door's scale; DDoS Protection covers L3/L4 |
| Try before you block | Preview mode per rule | Count action per rule or rule group | Detection mode per policy; Log action per rule |
| Logs | Load balancer request logs in Cloud Logging, with the matched rule | WAF logs to CloudWatch Logs, S3 or Firehose; sampled requests | WAF logs to Log Analytics, storage or Event Hubs |
| Manage across many projects / accounts | Policies per project, managed with Terraform or gcloud | AWS Firewall Manager pushes WAF and Shield policies across accounts | Azure Policy and Firewall Manager for WAF policies across subscriptions |
DDoS tiers compared
| Cloud Armor Enterprise | AWS Shield Advanced | Azure DDoS Network Protection | |
|---|---|---|---|
| What it protects | Load balancer backends; with network edge policies, NLBs, protocol forwarding and VMs with public IPs | CloudFront, Route 53, Global Accelerator, ELB, Elastic IPs | Every public IP in the VNets linked to the plan |
| Adaptive / automatic L7 mitigation | Adaptive Protection | Automatic application-layer mitigation (with AWS WAF) | No (L3/L4 only; pair with WAF) |
| Response team | DDoS response support | Shield Response Team (needs Business or Enterprise Support) | DDoS Rapid Response |
| Cost protection during an attack | Bill protection | Yes, credits for scaling charges | Yes, credits for scale-out costs |
| WAF included | Cloud Armor Standard charges waived for Enterprise-protected resources (check current terms) | AWS WAF for protected resources, up to 50 billion requests a month | Application Gateway WAF billed at the non-WAF rate in protected VNets |
| Price shape (US list, Oct 2026) | Paygo about $200 a month per project (2 resources), plus data processing; Annual about $3,000 a month for 100 resources | $3,000 a month per organisation, 1-year commitment, plus data transfer out | Fixed monthly plan covering 100 public IPs, plus per-IP overage; IP Protection is priced per IP |
Pricing at a glance
US list prices for the WAF layer only, as of October 2026. All three charge for policies, rules and requests in some form; check each provider's calculator before deciding.
| Cloud Armor Standard | AWS WAF | Azure WAF | |
|---|---|---|---|
| Policy | $5 a month per policy | $5 a month per web ACL | Front Door Premium: included in the $330 a month base fee; Front Door Standard ($35 base): custom rules only, charged per policy and rule |
| Rules | $1 a month per rule | $1 a month per rule or managed rule group | Application Gateway: included in the WAF_v2 SKU price (fixed hourly plus capacity units) |
| Requests | $0.75 per million (global policies), $0.60 (regional) | $0.60 per million, plus add-ons for Bot Control and Fraud Control | Front Door: per-request and data transfer charges; Application Gateway: capacity units |
| Bot features | reCAPTCHA priced separately | Bot Control from $10 a month per web ACL plus requests | Included with Front Door Premium and Application Gateway WAF |
The same rule in each cloud
A rate limit of 100 requests per minute per client IP, blocking the excess, is a good way to see how the three models differ.
Cloud Armor (a throttle rule on the policy):
gcloud compute security-policies rules create 2000 --security-policy=sp-web-notes-test `
--expression="true" --action=throttle `
--rate-limit-threshold-count=100 --rate-limit-threshold-interval-sec=60 `
--conform-action=allow --exceed-action=deny-429 --enforce-on-key=IP
AWS WAF (a rate-based rule in the web ACL's JSON):
{
"Name": "rate-100-per-minute",
"Priority": 20,
"Statement": { "RateBasedStatement": { "Limit": 100, "EvaluationWindowSec": 60, "AggregateKeyType": "IP" } },
"Action": { "Block": {} },
"VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "rate100" }
}
Azure WAF on Application Gateway (a custom rule in the WAF policy; rate limit rules need a match condition, here "any client outside the internal range"):
{
"name": "RateLimit100",
"priority": 20,
"ruleType": "RateLimitRule",
"rateLimitDuration": "OneMin",
"rateLimitThreshold": 100,
"groupByUserSession": [ { "groupByVariables": [ { "variableName": "ClientAddr" } ] } ],
"matchConditions": [ { "matchVariables": [ { "variableName": "RemoteAddr" } ],
"operator": "IPMatch", "negationConditon": true, "matchValues": [ "10.0.0.0/8" ] } ],
"action": "Block"
}
(Yes, negationConditon is misspelled in Azure's own API. Copy it as it is.)
Moving rules between them
- Managed rules don't translate one to one. All three start from the OWASP Core Rule Set but tune and number rules differently. Map by intent (SQL injection, cross-site scripting, protocol attacks), not by rule ID, and expect a new round of false positives.
- Exclusions move with the application, not the WAF. List the fields your application legitimately sends that look like attacks (rich-text editors, search boxes, JSON APIs) and re-create the exclusions on the new platform.
- Start in observe mode: preview (Cloud Armor), Count (AWS WAF) or Detection (Azure WAF), for at least a week of real traffic, then enforce.
- Lock the origin. Whatever the WAF, make sure traffic can't bypass it: Cloud Armor backends accept only Google front-end ranges; ALBs behind CloudFront accept only CloudFront's managed prefix list; Front Door origins check the
X-Azure-FDIDheader or use Private Link. - Rate limits behave differently. Window lengths and how clients are counted differ (Cloud Armor and AWS WAF can key on headers or cookies; Azure groups by client address or geo). Re-test thresholds with real traffic rather than copying numbers.
Which to choose when
- Workload in one cloud: use that cloud's WAF. They're integrated with the load balancer, logging and identity, and none is clearly better at blocking common attacks once tuned.
- Need bots and fraud handled in the WAF: AWS WAF has the broadest built-in options (Bot Control, Fraud Control); Cloud Armor relies on reCAPTCHA; Azure's Bot Manager covers bot categories but not account takeover.
- Global site, one entry point: Cloud Armor on a global load balancer, AWS WAF on CloudFront, or Azure WAF on Front Door Premium are the equivalent designs.
- Multi-cloud or very large traffic: a third-party edge WAF and CDN in front of all three gives one rule set and one set of logs, at the cost of another vendor.
Compared as of October 2026. Service names, tiers and prices change; check the provider's documentation before deciding.