> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tensor9.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Network Firewall

> AWS Network Firewall. Stateful traffic filtering for VPC subnets, with Suricata-compatible rule groups, domain allow lists and intrusion detection applied at firewall endpoints.

**On this page**

* [Coverage by target cloud](#coverage-by-target-cloud)
* [How the targets compare](#how-the-targets-compare)
  * [Infrastructure-only adaptation](#infrastructure-only-adaptation)
* [On Google Cloud](#on-google-cloud)
* [On Azure](#on-azure)
* [On OCI](#on-oci)

## Coverage by target cloud

| Target             | Available |
| ------------------ | --------- |
| Google Cloud       | ✓         |
| Azure              | ✓         |
| OCI                | ✓         |
| Private Kubernetes | -         |

## How the targets compare

Each row compares a capability of Network Firewall with its adaptation on each target.
A dash means this row is not stated for that target.

### Infrastructure-only adaptation

| Capability                                                 | Network Firewall | Google Cloud                                                               | Azure                                                                     | OCI                                                                |
| ---------------------------------------------------------- | ---------------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------ |
| 5-tuple stateful rules · protocol / CIDR / port allow-deny | Yes              | Yes - network firewall policy rules with L4 match                          | Yes - network\_rule\_collection rules                                     | Yes - security rules over emitted address lists + services         |
| Domain allowlists · TLS SNI / HTTP Host                    | Yes              | Yes - match dest\_fqdns (Cloud NGFW FQDN objects)                          | Yes - application\_rule\_collection destination\_fqdns                    | Yes - url\_list + a security rule condition                        |
| Suricata rule strings · IDS/IPS signatures                 | Yes              | Partial - re-home onto Cloud NGFW security profiles / intrusion prevention | Partial - re-home onto Azure Firewall Premium IDPS, not a rule collection | Partial - re-home onto the OCI Network Firewall inspection surface |
| TLS inspection · decrypt + inspect                         | Yes              | Partial - Cloud NGFW TLS inspection policy, a separate surface             | Partial - Azure Firewall Premium TLS inspection, a separate surface       | Partial - OCI decryption profiles / rules, a separate surface      |
| Flow / alert logging                                       | Yes              | Partial - rule enable\_logging + Cloud Logging, not a translated rule      | Partial - Azure Firewall diagnostic logs, not a translated rule           | Partial - OCI Network Firewall logging, not a translated rule      |
| VPC inspection routing · policy association + endpoint     | Yes              | Partial - policy-to-network association wired by the operator              | -                                                                         | -                                                                  |
| API coverage                                               | full             | partial                                                                    | partial                                                                   | partial                                                            |
| VPC inspection routing · endpoint + route tables           | Yes              | -                                                                          | Partial - AzureFirewallSubnet + route tables wired by the operator        | -                                                                  |
| VPC inspection routing · subnet + route tables             | Yes              | -                                                                          | -                                                                         | Partial - firewall subnet + route tables wired by the operator     |

## On Google Cloud

| Operation                     | Area             | Support      | Depth        | Notes                                                                                                                                                                      |
| ----------------------------- | ---------------- | ------------ | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Suricata rule strings         | Advanced rules   | Partial      | Most usage   | raw Suricata signatures re-home onto Cloud NGFW security profiles / intrusion prevention (an org-scoped surface), not a plain L4 rule; surfaced, never silently dropped    |
| TLS inspection                | Advanced rules   | Out of scope | Full surface | aws\_networkfirewall\_tls\_inspection\_configuration re-homes onto Cloud NGFW TLS inspection policies (a distinct surface), surfaced not recreated                         |
| Flow / alert logging          | Observability    | Out of scope | Full surface | aws\_networkfirewall\_logging\_configuration is replaced by the rule's own enable\_logging + Cloud Logging, not a translated rule                                          |
| 5-tuple stateful rules        | Rule translation | Supported    | Common       | each stateful\_rule maps to a google\_compute\_network\_firewall\_policy\_rule: an L4 match of src\_ip\_ranges / dest\_ip\_ranges + layer4\_configs (ip\_protocol + ports) |
| Domain allowlists / denylists | Rule translation | Supported    | Most usage   | a rules\_source\_list maps to a rule whose match names dest\_fqdns (Cloud NGFW FQDN objects); ALLOWLIST → allow, DENYLIST → deny                                           |
| Stateless 5-tuple rules       | Rule translation | Partial      | Most usage   | the 5-tuple match projects; AWS-specific custom actions have no Cloud NGFW analog and are surfaced, not recreated                                                          |
| VPC inspection routing        | Traffic steering | Partial      | Common       | the policy + rules emit; the policy-to-network association + firewall-endpoint attachment is deployment-specific and wired by the operator (surfaced, never assumed)       |

#### How it works

An AWS Network Firewall is a managed firewall attached to a firewall policy, and the policy references a tree of rule groups that decide what traffic to allow, drop, or alert on. To run that same protection on the customer's GCP, Tensor9 reads the firewall, its policy, and the whole rule-group tree, and emits the GCP-native equivalent: a **Cloud NGFW network firewall policy** and a set of policy rules that state the translated allow and deny decisions.

Cloud NGFW works differently from a routed appliance. There is no firewall instance and no dedicated firewall subnet; the policy is a distributed enforcement layer that Google runs inside the VPC fabric, and it applies to the networks it is associated with. Once the build is done the fabric filters packets directly and Tensor9 is not in the path. The allow/deny rules become native policy rules. The Suricata signature engine and TLS inspection are deep-packet features that re-home onto Cloud NGFW's security profiles and TLS inspection policy, each named in the sections below.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTk2IiB2aWV3Qm94PSIwIDAgODM2IDE5NiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBBV1MgYSB3b3JrbG9hZCBzdWJuZXQgcm91dGVzIGVncmVzcyB0aHJvdWdoIGEgbWFuYWdlZCBOZXR3b3JrIEZpcmV3YWxsIGVuZHBvaW50IHRoYXQgaW5zcGVjdHMgaXQgYmVmb3JlIHRoZSBpbnRlcm5ldC4gT24gR0NQIGEgQ2xvdWQgTkdGVyBwb2xpY3kgdGhlIGJ1aWxkIGVtaXRzIGlzIGVuZm9yY2VkIGluIHRoZSBWUEMgZmFicmljIG9uIHRoZSB3b3JrbG9hZCBzdWJuZXQgaXRzZWxmLCBzbyB0aGVyZSBpcyBubyBzZXBhcmF0ZSBpbnNwZWN0aW9uIGhvcDsgdGhlIGZhYnJpYyBmaWx0ZXJzIHBhY2tldHMgZGlyZWN0bHkgYW5kIG5vdGhpbmcgb2YgVGVuc29yOSBzaXRzIGluIHRoZSBwYXRoLiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6IzMzNDE1NX08L3N0eWxlPgo8cmVjdCB4PSIxNiIgeT0iNDYiIHdpZHRoPSIzOTIiIGhlaWdodD0iMTM0IiByeD0iMTQiIGZpbGw9IiNmOGZhZmMiIHN0cm9rZT0iI2NiZDVlMSIgc3Ryb2tlLXdpZHRoPSIxLjQiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNSIvPgo8dGV4dCB4PSIzMCIgeT0iNjYiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4Ij5PTiBBV1MgVE9EQVk8L3RleHQ+CjxyZWN0IHg9IjMwIiB5PSI4OCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI2NiIgcng9IjExIiBmaWxsPSIjZmZmIiBzdHJva2U9IiNlMmU4ZjAiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9Ijg1IiB5PSIxMTYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTJweCI+V29ya2xvYWQ8L3RleHQ+Cjx0ZXh0IHg9Ijg1IiB5PSIxMzMiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiIj5zdWJuZXQ8L3RleHQ+CjxsaW5lIHgxPSIxNDAiIHkxPSIxMjEiIHgyPSIxOTYiIHkyPSIxMjEiIHN0cm9rZT0iIzk0YTNiOCIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjbmZnMSkiLz4KPHRleHQgeD0iMTY4IiB5PSIxMTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMHB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6OC41cHgiPnJvdXRlPC90ZXh0Pgo8cmVjdCB4PSIyMDAiIHk9Ijg4IiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjY2IiByeD0iMTEiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2UyZThmMCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMjc1IiB5PSIxMTYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTEuNXB4Ij5OZXR3b3JrIEZpcmV3YWxsPC90ZXh0Pgo8dGV4dCB4PSIyNzUiIHk9IjEzMyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGIiPmVuZHBvaW50LCBpbnNwZWN0czwvdGV4dD4KPGxpbmUgeDE9IjM1MCIgeTE9IjEyMSIgeDI9IjM5NiIgeTI9IjEyMSIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNuZmcxKSIvPgo8dGV4dCB4PSIzNzQiIHk9IjExMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo4LjVweCI+d2ViPC90ZXh0Pgo8cmVjdCB4PSI0MjgiIHk9IjQ2IiB3aWR0aD0iMzkyIiBoZWlnaHQ9IjEzNCIgcng9IjE0IiBmaWxsPSIjZjhmYWZjIiBzdHJva2U9IiNjYmQ1ZTEiIHN0cm9rZS13aWR0aD0iMS40IiBzdHJva2UtZGFzaGFycmF5PSI1IDUiLz4KPHRleHQgeD0iNDQyIiB5PSI2NiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6IzA0Nzg1NyI+T04gR0NQPC90ZXh0Pgo8cmVjdCB4PSI0NzAiIHk9Ijg0IiB3aWR0aD0iMTY0IiBoZWlnaHQ9Ijc0IiByeD0iMTEiIGZpbGw9IiNlY2ZkZjUiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iNTUyIiB5PSIxMTQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6MTJweCI+V29ya2xvYWQgc3VibmV0PC90ZXh0Pgo8dGV4dCB4PSI1NTIiIHk9IjEzMSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NyI+Q2xvdWQgTkdGVyBwb2xpY3kgYXBwbGllZDwvdGV4dD4KPGxpbmUgeDE9IjYzNCIgeTE9IjEyMSIgeDI9IjgwNiIgeTI9IjEyMSIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNuZmcxKSIvPgo8dGV4dCB4PSI3MjAiIHk9IjExMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo4LjVweCI+d2ViLCBmaWx0ZXJlZCBpbi1mYWJyaWM8L3RleHQ+CjxkZWZzPjxtYXJrZXIgaWQ9Im5mZzEiIHZpZXdCb3g9IjAgMCAxMCAxMCIgcmVmWD0iOCIgcmVmWT0iNSIgbWFya2VyV2lkdGg9IjYuNSIgbWFya2VySGVpZ2h0PSI2LjUiIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj48cGF0aCBkPSJNMCwwIEwxMCw1IEwwLDEwIHoiIGZpbGw9IiM5NGEzYjgiLz48L21hcmtlcj48L2RlZnM+Cjwvc3ZnPg==" alt="On AWS a workload subnet routes egress through a managed Network Firewall endpoint that inspects it before the internet. On GCP a Cloud NGFW policy the build emits is enforced in the VPC fabric on the workload subnet itself, so there is no separate inspection hop; the fabric filters packets directly and nothing of Tensor9 sits in the path." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTk2IiB2aWV3Qm94PSIwIDAgODM2IDE5NiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBBV1MgYSB3b3JrbG9hZCBzdWJuZXQgcm91dGVzIGVncmVzcyB0aHJvdWdoIGEgbWFuYWdlZCBOZXR3b3JrIEZpcmV3YWxsIGVuZHBvaW50IHRoYXQgaW5zcGVjdHMgaXQgYmVmb3JlIHRoZSBpbnRlcm5ldC4gT24gR0NQIGEgQ2xvdWQgTkdGVyBwb2xpY3kgdGhlIGJ1aWxkIGVtaXRzIGlzIGVuZm9yY2VkIGluIHRoZSBWUEMgZmFicmljIG9uIHRoZSB3b3JrbG9hZCBzdWJuZXQgaXRzZWxmLCBzbyB0aGVyZSBpcyBubyBzZXBhcmF0ZSBpbnNwZWN0aW9uIGhvcDsgdGhlIGZhYnJpYyBmaWx0ZXJzIHBhY2tldHMgZGlyZWN0bHkgYW5kIG5vdGhpbmcgb2YgVGVuc29yOSBzaXRzIGluIHRoZSBwYXRoLiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6I2NiZDVlMX08L3N0eWxlPgo8cmVjdCB4PSIxNiIgeT0iNDYiIHdpZHRoPSIzOTIiIGhlaWdodD0iMTM0IiByeD0iMTQiIGZpbGw9IiMxYTI2MzEiIHN0cm9rZT0iIzNkNGY2NiIgc3Ryb2tlLXdpZHRoPSIxLjQiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNSIvPgo8dGV4dCB4PSIzMCIgeT0iNjYiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4Ij5PTiBBV1MgVE9EQVk8L3RleHQ+CjxyZWN0IHg9IjMwIiB5PSI4OCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI2NiIgcng9IjExIiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDRlNjYiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9Ijg1IiB5PSIxMTYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTJweCI+V29ya2xvYWQ8L3RleHQ+Cjx0ZXh0IHg9Ijg1IiB5PSIxMzMiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4Ij5zdWJuZXQ8L3RleHQ+CjxsaW5lIHgxPSIxNDAiIHkxPSIxMjEiIHgyPSIxOTYiIHkyPSIxMjEiIHN0cm9rZT0iIzQxNGU2MiIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjbmZnMSkiLz4KPHRleHQgeD0iMTY4IiB5PSIxMTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMHB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OC41cHgiPnJvdXRlPC90ZXh0Pgo8cmVjdCB4PSIyMDAiIHk9Ijg4IiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjY2IiByeD0iMTEiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNGU2NiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMjc1IiB5PSIxMTYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTEuNXB4Ij5OZXR3b3JrIEZpcmV3YWxsPC90ZXh0Pgo8dGV4dCB4PSIyNzUiIHk9IjEzMyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDgiPmVuZHBvaW50LCBpbnNwZWN0czwvdGV4dD4KPGxpbmUgeDE9IjM1MCIgeTE9IjEyMSIgeDI9IjM5NiIgeTI9IjEyMSIgc3Ryb2tlPSIjNDE0ZTYyIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNuZmcxKSIvPgo8dGV4dCB4PSIzNzQiIHk9IjExMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo4LjVweCI+d2ViPC90ZXh0Pgo8cmVjdCB4PSI0MjgiIHk9IjQ2IiB3aWR0aD0iMzkyIiBoZWlnaHQ9IjEzNCIgcng9IjE0IiBmaWxsPSIjMWEyNjMxIiBzdHJva2U9IiMzZDRmNjYiIHN0cm9rZS13aWR0aD0iMS40IiBzdHJva2UtZGFzaGFycmF5PSI1IDUiLz4KPHRleHQgeD0iNDQyIiB5PSI2NiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6ICM5MGRlYzgiPk9OIEdDUDwvdGV4dD4KPHJlY3QgeD0iNDcwIiB5PSI4NCIgd2lkdGg9IjE2NCIgaGVpZ2h0PSI3NCIgcng9IjExIiBmaWxsPSIjMWEzMTI2IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS43Ii8+Cjx0ZXh0IHg9IjU1MiIgeT0iMTE0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjEycHgiPldvcmtsb2FkIHN1Ym5ldDwvdGV4dD4KPHRleHQgeD0iNTUyIiB5PSIxMzEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzgiPkNsb3VkIE5HRlcgcG9saWN5IGFwcGxpZWQ8L3RleHQ+CjxsaW5lIHgxPSI2MzQiIHkxPSIxMjEiIHgyPSI4MDYiIHkyPSIxMjEiIHN0cm9rZT0iIzQxNGU2MiIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjbmZnMSkiLz4KPHRleHQgeD0iNzIwIiB5PSIxMTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMHB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OC41cHgiPndlYiwgZmlsdGVyZWQgaW4tZmFicmljPC90ZXh0Pgo8ZGVmcz48bWFya2VyIGlkPSJuZmcxIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+PC9kZWZzPgo8L3N2Zz4=" alt="On AWS a workload subnet routes egress through a managed Network Firewall endpoint that inspects it before the internet. On GCP a Cloud NGFW policy the build emits is enforced in the VPC fabric on the workload subnet itself, so there is no separate inspection hop; the fabric filters packets directly and nothing of Tensor9 sits in the path." />
</div>

<p className="t9-caption">The workload is untouched; the Cloud NGFW policy is enforced on the subnet in the VPC fabric, so there is no separate appliance the traffic passes through.</p>

#### Architecture

Network Firewall spreads its configuration across a firewall, its policy, and the rule groups the policy references. Cloud NGFW collapses that into one network firewall policy holding a flat list of policy rules. The build emits the policy and one **policy rule per translated rule**; the rule groups do not survive as a grouping layer, so a stateful rule group of ten rules becomes ten policy rules.

Each policy rule has an integer **priority**, an **action** of allow or deny, a **direction** of ingress or egress, and a match. The priority is the evaluation order, and the build assigns a deterministic priority per rule so the sequence is stable across rebuilds. The policy is **associated with the VPC networks** it governs rather than placed in a route; that association, and the choice of which networks to govern, is a property of the customer's project.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjM2IiB2aWV3Qm94PSIwIDAgODM2IDIzNiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUaGUgQ2xvdWQgTkdGVyB0aGUgYnVpbGQgZW1pdHMgaXMgb25lIG5ldHdvcmsgZmlyZXdhbGwgcG9saWN5IGhvbGRpbmcgYSBmbGF0LCBwcmlvcml0eS1vcmRlcmVkIGxpc3Qgb2YgcG9saWN5IHJ1bGVzLCBhc3NvY2lhdGVkIHdpdGggdGhlIFZQQyBuZXR3b3JrcyBpdCBnb3Zlcm5zLiBFYWNoIEFXUyBydWxlIGJlY29tZXMgZXhhY3RseSBvbmUgcG9saWN5IHJ1bGU7IHRoZXJlIGlzIG5vIGFwcGxpYW5jZSBhbmQgbm8gZmlyZXdhbGwgc3VibmV0LiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6IzMzNDE1NX08L3N0eWxlPgo8cmVjdCB4PSIxNiIgeT0iMzQiIHdpZHRoPSI4MDQiIGhlaWdodD0iMTg2IiByeD0iMTYiIGZpbGw9IiNmOGZhZmMiIHN0cm9rZT0iI2NiZDVlMSIgc3Ryb2tlLXdpZHRoPSIxLjQiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNSIvPgo8dGV4dCB4PSIzNCIgeT0iNTYiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiMwNDc4NTciPkdDUCBQUk9KRUNUPC90ZXh0Pgo8cmVjdCB4PSIzNCIgeT0iNzQiIHdpZHRoPSI0NzAiIGhlaWdodD0iMTMyIiByeD0iMTIiIGZpbGw9IiNlY2ZkZjUiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iMjY5IiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTc7IGZvbnQtc2l6ZToxMi41cHgiPk5ldHdvcmsgZmlyZXdhbGwgcG9saWN5PC90ZXh0Pgo8cmVjdCB4PSI1MCIgeT0iMTEyIiB3aWR0aD0iNDM4IiBoZWlnaHQ9IjI2IiByeD0iNyIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjYTdmM2QwIi8+Cjx0ZXh0IHg9IjY2IiB5PSIxMjkiIHN0eWxlPSJmb250OiAxMXB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjNDc1NTY5Ij4xMDAxICBhbGxvdyAgSU5HUkVTUyAgdGNwIDEwLjAuMC4wLzE2IOKGkiA0NDM8L3RleHQ+CjxyZWN0IHg9IjUwIiB5PSIxNDQiIHdpZHRoPSI0MzgiIGhlaWdodD0iMjYiIHJ4PSI3IiBmaWxsPSIjZmZmIiBzdHJva2U9IiNhN2YzZDAiLz4KPHRleHQgeD0iNjYiIHk9IjE2MSIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM0NzU1NjkiPjEwMDIgIGFsbG93ICBFR1JFU1MgICBmcWRuICouZXhhbXBsZS5jb208L3RleHQ+CjxyZWN0IHg9IjUwIiB5PSIxNzYiIHdpZHRoPSI0MzgiIGhlaWdodD0iMjYiIHJ4PSI3IiBmaWxsPSIjZmZmIiBzdHJva2U9IiNhN2YzZDAiLz4KPHRleHQgeD0iNjYiIHk9IjE5MyIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM0NzU1NjkiPjEwMDMgIGRlbnkgICBJTkdSRVNTICB1ZHAgMC4wLjAuMC8wIOKGkiA1MzwvdGV4dD4KPGxpbmUgeDE9IjUwNCIgeTE9IjE0MCIgeDI9IjU2MCIgeTI9IjE0MCIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNuZmcyKSIvPgo8dGV4dCB4PSI1MzIiIHk9IjEzMSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo4LjVweCI+YXNzb2M8L3RleHQ+CjxyZWN0IHg9IjU2NCIgeT0iMTAyIiB3aWR0aD0iMjM4IiBoZWlnaHQ9Ijc2IiByeD0iMTIiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2UyZThmMCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iNjgzIiB5PSIxMzQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTJweCI+VlBDIG5ldHdvcmtzPC90ZXh0Pgo8dGV4dCB4PSI2ODMiIHk9IjE1MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGIiPnRoZSBwb2xpY3kgZ292ZXJuczwvdGV4dD4KPGRlZnM+PG1hcmtlciBpZD0ibmZnMiIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNi41IiBtYXJrZXJIZWlnaHQ9IjYuNSIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPjxwYXRoIGQ9Ik0wLDAgTDEwLDUgTDAsMTAgeiIgZmlsbD0iIzk0YTNiOCIvPjwvbWFya2VyPjwvZGVmcz4KPC9zdmc+" alt="The Cloud NGFW the build emits is one network firewall policy holding a flat, priority-ordered list of policy rules, associated with the VPC networks it governs. Each AWS rule becomes exactly one policy rule; there is no appliance and no firewall subnet." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjM2IiB2aWV3Qm94PSIwIDAgODM2IDIzNiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUaGUgQ2xvdWQgTkdGVyB0aGUgYnVpbGQgZW1pdHMgaXMgb25lIG5ldHdvcmsgZmlyZXdhbGwgcG9saWN5IGhvbGRpbmcgYSBmbGF0LCBwcmlvcml0eS1vcmRlcmVkIGxpc3Qgb2YgcG9saWN5IHJ1bGVzLCBhc3NvY2lhdGVkIHdpdGggdGhlIFZQQyBuZXR3b3JrcyBpdCBnb3Zlcm5zLiBFYWNoIEFXUyBydWxlIGJlY29tZXMgZXhhY3RseSBvbmUgcG9saWN5IHJ1bGU7IHRoZXJlIGlzIG5vIGFwcGxpYW5jZSBhbmQgbm8gZmlyZXdhbGwgc3VibmV0LiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6I2NiZDVlMX08L3N0eWxlPgo8cmVjdCB4PSIxNiIgeT0iMzQiIHdpZHRoPSI4MDQiIGhlaWdodD0iMTg2IiByeD0iMTYiIGZpbGw9IiMxYTI2MzEiIHN0cm9rZT0iIzNkNGY2NiIgc3Ryb2tlLXdpZHRoPSIxLjQiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNSIvPgo8dGV4dCB4PSIzNCIgeT0iNTYiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiAjOTBkZWM4Ij5HQ1AgUFJPSkVDVDwvdGV4dD4KPHJlY3QgeD0iMzQiIHk9Ijc0IiB3aWR0aD0iNDcwIiBoZWlnaHQ9IjEzMiIgcng9IjEyIiBmaWxsPSIjMWEzMTI2IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS43Ii8+Cjx0ZXh0IHg9IjI2OSIgeT0iOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6MTIuNXB4Ij5OZXR3b3JrIGZpcmV3YWxsIHBvbGljeTwvdGV4dD4KPHJlY3QgeD0iNTAiIHk9IjExMiIgd2lkdGg9IjQzOCIgaGVpZ2h0PSIyNiIgcng9IjciIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNjY1MyIvPgo8dGV4dCB4PSI2NiIgeT0iMTI5IiBzdHlsZT0iZm9udDogMTFweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogI2M5Y2ZkOCI+MTAwMSAgYWxsb3cgIElOR1JFU1MgIHRjcCAxMC4wLjAuMC8xNiDihpIgNDQzPC90ZXh0Pgo8cmVjdCB4PSI1MCIgeT0iMTQ0IiB3aWR0aD0iNDM4IiBoZWlnaHQ9IjI2IiByeD0iNyIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q2NjUzIi8+Cjx0ZXh0IHg9IjY2IiB5PSIxNjEiIHN0eWxlPSJmb250OiAxMXB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4Ij4xMDAyICBhbGxvdyAgRUdSRVNTICAgZnFkbiAqLmV4YW1wbGUuY29tPC90ZXh0Pgo8cmVjdCB4PSI1MCIgeT0iMTc2IiB3aWR0aD0iNDM4IiBoZWlnaHQ9IjI2IiByeD0iNyIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q2NjUzIi8+Cjx0ZXh0IHg9IjY2IiB5PSIxOTMiIHN0eWxlPSJmb250OiAxMXB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4Ij4xMDAzICBkZW55ICAgSU5HUkVTUyAgdWRwIDAuMC4wLjAvMCDihpIgNTM8L3RleHQ+CjxsaW5lIHgxPSI1MDQiIHkxPSIxNDAiIHgyPSI1NjAiIHkyPSIxNDAiIHN0cm9rZT0iIzQxNGU2MiIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjbmZnMikiLz4KPHRleHQgeD0iNTMyIiB5PSIxMzEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMHB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OC41cHgiPmFzc29jPC90ZXh0Pgo8cmVjdCB4PSI1NjQiIHk9IjEwMiIgd2lkdGg9IjIzOCIgaGVpZ2h0PSI3NiIgcng9IjEyIiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDRlNjYiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjY4MyIgeT0iMTM0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjEycHgiPlZQQyBuZXR3b3JrczwvdGV4dD4KPHRleHQgeD0iNjgzIiB5PSIxNTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4Ij50aGUgcG9saWN5IGdvdmVybnM8L3RleHQ+CjxkZWZzPjxtYXJrZXIgaWQ9Im5mZzIiIHZpZXdCb3g9IjAgMCAxMCAxMCIgcmVmWD0iOCIgcmVmWT0iNSIgbWFya2VyV2lkdGg9IjYuNSIgbWFya2VySGVpZ2h0PSI2LjUiIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj48cGF0aCBkPSJNMCwwIEwxMCw1IEwwLDEwIHoiIGZpbGw9IiM5NGEzYjgiLz48L21hcmtlcj48L2RlZnM+Cjwvc3ZnPg==" alt="The Cloud NGFW the build emits is one network firewall policy holding a flat, priority-ordered list of policy rules, associated with the VPC networks it governs. Each AWS rule becomes exactly one policy rule; there is no appliance and no firewall subnet." />
</div>

<p className="t9-caption">One policy, a flat list of priority-ordered rules, associated with the VPC networks it governs: each AWS rule becomes exactly one policy rule, and the priority is the evaluation order.</p>

#### How the rule groups map

The policy's rule groups translate by kind, each rule becoming one policy rule. A stateful rule group of 5-tuple rules becomes a set of **ingress** policy rules: each rule keeps its protocol, its source and destination IP ranges, and its ports in an L4 match, and its AWS action sets the policy-rule action (pass or alert becomes allow, drop or reject becomes deny). A rule group built from a domain list becomes **egress** policy rules that match on destination FQDNs, with allow or deny taken from whether the list is an allowlist or a denylist.

A rule group written as raw Suricata signatures has no policy-rule form. Cloud NGFW runs signature-based intrusion prevention through security profiles, which is a distinct capability rather than an allow/deny rule, so the build surfaces those signatures for the operator to enable through a security profile instead of discarding them. >The allow/deny rules that make up most policies translate directly.

\>

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjUwIiB2aWV3Qm94PSIwIDAgODM2IDI1MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJFYWNoIEFXUyBydWxlIGdyb3VwIG1hcHMgdG8gQ2xvdWQgTkdGVyBwb2xpY3kgcnVsZXM6IGEgc3RhdGVmdWwgcnVsZSBncm91cCBvZiA1LXR1cGxlIHJ1bGVzIGJlY29tZXMgaW5ncmVzcyBhbGxvdyBydWxlcyB3aXRoIGFuIEw0IG1hdGNoLCBhIHJ1bGUtc291cmNlLWxpc3Qgb2YgZG9tYWlucyBiZWNvbWVzIGVncmVzcyBhbGxvdyBydWxlcyBtYXRjaGluZyBkZXN0aW5hdGlvbiBGUUROcywgYW5kIGEgU3VyaWNhdGEgcnVsZS1zdHJpbmcgZ3JvdXAgaGFzIG5vIHBvbGljeS1ydWxlIGZvcm0gYW5kIHJlLWhvbWVzIG9udG8gc2VjdXJpdHkgcHJvZmlsZXMuIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojMzM0MTU1fTwvc3R5bGU+Cjx0ZXh0IHg9IjMwIiB5PSIzMiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6IzY0NzQ4YiI+QVdTIFJVTEUgR1JPVVBTPC90ZXh0Pgo8cmVjdCB4PSIzMCIgeT0iNDQiIHdpZHRoPSIzMDAiIGhlaWdodD0iNDYiIHJ4PSIxMCIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZTJlOGYwIiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSI0NiIgeT0iNjYiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTEuNXB4Ij5zdGF0ZWZ1bCA1LXR1cGxlIHJ1bGVzPC90ZXh0Pgo8dGV4dCB4PSI0NiIgeT0iODIiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiIj50Y3AgMTAuMC4wLjAvMTYg4oaSIGFueTo0NDMgcGFzczwvdGV4dD4KPHJlY3QgeD0iMzAiIHk9IjEwMiIgd2lkdGg9IjMwMCIgaGVpZ2h0PSI0NiIgcng9IjEwIiBmaWxsPSIjZmZmIiBzdHJva2U9IiNlMmU4ZjAiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjQ2IiB5PSIxMjQiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTEuNXB4Ij5kb21haW4gYWxsb3dsaXN0PC90ZXh0Pgo8dGV4dCB4PSI0NiIgeT0iMTQwIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YiI+LmV4YW1wbGUuY29tICAoVExTX1NOSSk8L3RleHQ+CjxyZWN0IHg9IjMwIiB5PSIxNjAiIHdpZHRoPSIzMDAiIGhlaWdodD0iNDYiIHJ4PSIxMCIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZmNhNWE1IiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSI0NiIgeT0iMTgyIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYTsgZm9udC1zaXplOjExLjVweCI+U3VyaWNhdGEgcnVsZSBzdHJpbmc8L3RleHQ+Cjx0ZXh0IHg9IjQ2IiB5PSIxOTgiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiIj5hbGVydCB0Y3AgYW55IGFueSAtJmd0OyAuLi48L3RleHQ+CjxsaW5lIHgxPSIzMzYiIHkxPSI2NyIgeDI9IjQ3MCIgeTI9IjY3IiBzdHJva2U9IiM5NGEzYjgiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI25mZzMpIi8+CjxsaW5lIHgxPSIzMzYiIHkxPSIxMjUiIHgyPSI0NzAiIHkyPSIxMjUiIHN0cm9rZT0iIzk0YTNiOCIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjbmZnMykiLz4KPGxpbmUgeDE9IjMzNiIgeTE9IjE4MyIgeDI9IjQ3MCIgeTI9IjE4MyIgc3Ryb2tlPSIjZGMyNjI2IiBzdHJva2Utd2lkdGg9IjEuNiIgc3Ryb2tlLWRhc2hhcnJheT0iNCAzIiBtYXJrZXItZW5kPSJ1cmwoI25mZzNyKSIvPgo8dGV4dCB4PSI0MDMiIHk9IjE3NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo4LjVweDtmaWxsOiNiOTFjMWMiPnJlLWhvbWVzPC90ZXh0Pgo8dGV4dCB4PSI0NzYiIHk9IjMyIiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDojMDQ3ODU3Ij5DTE9VRCBOR0ZXIFBPTElDWTwvdGV4dD4KPHJlY3QgeD0iNDc2IiB5PSI0NCIgd2lkdGg9IjMzMCIgaGVpZ2h0PSI0NiIgcng9IjEwIiBmaWxsPSIjZWNmZGY1IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS42Ii8+Cjx0ZXh0IHg9IjQ5MiIgeT0iNjYiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6MTEuNXB4Ij5JTkdSRVNTIGFsbG93IHBvbGljeSBydWxlPC90ZXh0Pgo8dGV4dCB4PSI0OTIiIHk9IjgyIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3Ij50Y3AgIHNyYyAxMC4wLjAuMC8xNiAgcG9ydHMgNDQzPC90ZXh0Pgo8cmVjdCB4PSI0NzYiIHk9IjEwMiIgd2lkdGg9IjMzMCIgaGVpZ2h0PSI0NiIgcng9IjEwIiBmaWxsPSIjZWNmZGY1IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS42Ii8+Cjx0ZXh0IHg9IjQ5MiIgeT0iMTI0IiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjExLjVweCI+RUdSRVNTIGFsbG93IHBvbGljeSBydWxlPC90ZXh0Pgo8dGV4dCB4PSI0OTIiIHk9IjE0MCIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NyI+ZnFkbiAqLmV4YW1wbGUuY29tICB0Y3AgNDQzPC90ZXh0Pgo8cmVjdCB4PSI0NzYiIHk9IjE2MCIgd2lkdGg9IjMzMCIgaGVpZ2h0PSI0NiIgcng9IjEwIiBmaWxsPSIjZmZmIiBzdHJva2U9IiNlMmU4ZjAiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjQ5MiIgeT0iMTgyIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYTsgZm9udC1zaXplOjExLjVweCI+U2VjdXJpdHkgcHJvZmlsZSwgaW50cnVzaW9uIHByZXZlbnRpb248L3RleHQ+Cjx0ZXh0IHg9IjQ5MiIgeT0iMTk4IiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YiI+b3JnLXNjb3BlZCwgZW50ZXJwcmlzZSB0aWVyPC90ZXh0Pgo8ZGVmcz4KPG1hcmtlciBpZD0ibmZnMyIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNi41IiBtYXJrZXJIZWlnaHQ9IjYuNSIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPjxwYXRoIGQ9Ik0wLDAgTDEwLDUgTDAsMTAgeiIgZmlsbD0iIzk0YTNiOCIvPjwvbWFya2VyPgo8bWFya2VyIGlkPSJuZmczciIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNi41IiBtYXJrZXJIZWlnaHQ9IjYuNSIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPjxwYXRoIGQ9Ik0wLDAgTDEwLDUgTDAsMTAgeiIgZmlsbD0iI2RjMjYyNiIvPjwvbWFya2VyPgo8L2RlZnM+Cjwvc3ZnPg==" alt="Each AWS rule group maps to Cloud NGFW policy rules: a stateful rule group of 5-tuple rules becomes ingress allow rules with an L4 match, a rule-source-list of domains becomes egress allow rules matching destination FQDNs, and a Suricata rule-string group has no policy-rule form and re-homes onto security profiles." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjUwIiB2aWV3Qm94PSIwIDAgODM2IDI1MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJFYWNoIEFXUyBydWxlIGdyb3VwIG1hcHMgdG8gQ2xvdWQgTkdGVyBwb2xpY3kgcnVsZXM6IGEgc3RhdGVmdWwgcnVsZSBncm91cCBvZiA1LXR1cGxlIHJ1bGVzIGJlY29tZXMgaW5ncmVzcyBhbGxvdyBydWxlcyB3aXRoIGFuIEw0IG1hdGNoLCBhIHJ1bGUtc291cmNlLWxpc3Qgb2YgZG9tYWlucyBiZWNvbWVzIGVncmVzcyBhbGxvdyBydWxlcyBtYXRjaGluZyBkZXN0aW5hdGlvbiBGUUROcywgYW5kIGEgU3VyaWNhdGEgcnVsZS1zdHJpbmcgZ3JvdXAgaGFzIG5vIHBvbGljeS1ydWxlIGZvcm0gYW5kIHJlLWhvbWVzIG9udG8gc2VjdXJpdHkgcHJvZmlsZXMuIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojY2JkNWUxfTwvc3R5bGU+Cjx0ZXh0IHg9IjMwIiB5PSIzMiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6ICNjOWNmZDgiPkFXUyBSVUxFIEdST1VQUzwvdGV4dD4KPHJlY3QgeD0iMzAiIHk9IjQ0IiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjQ2IiByeD0iMTAiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNGU2NiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iNDYiIHk9IjY2IiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjExLjVweCI+c3RhdGVmdWwgNS10dXBsZSBydWxlczwvdGV4dD4KPHRleHQgeD0iNDYiIHk9IjgyIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkOCI+dGNwIDEwLjAuMC4wLzE2IOKGkiBhbnk6NDQzIHBhc3M8L3RleHQ+CjxyZWN0IHg9IjMwIiB5PSIxMDIiIHdpZHRoPSIzMDAiIGhlaWdodD0iNDYiIHJ4PSIxMCIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q0ZTY2IiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSI0NiIgeT0iMTI0IiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjExLjVweCI+ZG9tYWluIGFsbG93bGlzdDwvdGV4dD4KPHRleHQgeD0iNDYiIHk9IjE0MCIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDgiPi5leGFtcGxlLmNvbSAgKFRMU19TTkkpPC90ZXh0Pgo8cmVjdCB4PSIzMCIgeT0iMTYwIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjQ2IiByeD0iMTAiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzY2M2QzZCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iNDYiIHk9IjE4MiIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMS41cHgiPlN1cmljYXRhIHJ1bGUgc3RyaW5nPC90ZXh0Pgo8dGV4dCB4PSI0NiIgeT0iMTk4IiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkOCI+YWxlcnQgdGNwIGFueSBhbnkgLSZndDsgLi4uPC90ZXh0Pgo8bGluZSB4MT0iMzM2IiB5MT0iNjciIHgyPSI0NzAiIHkyPSI2NyIgc3Ryb2tlPSIjNDE0ZTYyIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNuZmczKSIvPgo8bGluZSB4MT0iMzM2IiB5MT0iMTI1IiB4Mj0iNDcwIiB5Mj0iMTI1IiBzdHJva2U9IiM0MTRlNjIiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI25mZzMpIi8+CjxsaW5lIHgxPSIzMzYiIHkxPSIxODMiIHgyPSI0NzAiIHkyPSIxODMiIHN0cm9rZT0iI2RjMjYyNiIgc3Ryb2tlLXdpZHRoPSIxLjYiIHN0cm9rZS1kYXNoYXJyYXk9IjQgMyIgbWFya2VyLWVuZD0idXJsKCNuZmczcikiLz4KPHRleHQgeD0iNDAzIiB5PSIxNzYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMHB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OC41cHg7ZmlsbDogI2RlOTA5MCI+cmUtaG9tZXM8L3RleHQ+Cjx0ZXh0IHg9IjQ3NiIgeT0iMzIiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiAjOTBkZWM4Ij5DTE9VRCBOR0ZXIFBPTElDWTwvdGV4dD4KPHJlY3QgeD0iNDc2IiB5PSI0NCIgd2lkdGg9IjMzMCIgaGVpZ2h0PSI0NiIgcng9IjEwIiBmaWxsPSIjMWEzMTI2IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS42Ii8+Cjx0ZXh0IHg9IjQ5MiIgeT0iNjYiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6MTEuNXB4Ij5JTkdSRVNTIGFsbG93IHBvbGljeSBydWxlPC90ZXh0Pgo8dGV4dCB4PSI0OTIiIHk9IjgyIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4Ij50Y3AgIHNyYyAxMC4wLjAuMC8xNiAgcG9ydHMgNDQzPC90ZXh0Pgo8cmVjdCB4PSI0NzYiIHk9IjEwMiIgd2lkdGg9IjMzMCIgaGVpZ2h0PSI0NiIgcng9IjEwIiBmaWxsPSIjMWEzMTI2IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS42Ii8+Cjx0ZXh0IHg9IjQ5MiIgeT0iMTI0IiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjExLjVweCI+RUdSRVNTIGFsbG93IHBvbGljeSBydWxlPC90ZXh0Pgo8dGV4dCB4PSI0OTIiIHk9IjE0MCIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjOCI+ZnFkbiAqLmV4YW1wbGUuY29tICB0Y3AgNDQzPC90ZXh0Pgo8cmVjdCB4PSI0NzYiIHk9IjE2MCIgd2lkdGg9IjMzMCIgaGVpZ2h0PSI0NiIgcng9IjEwIiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDRlNjYiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjQ5MiIgeT0iMTgyIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjExLjVweCI+U2VjdXJpdHkgcHJvZmlsZSwgaW50cnVzaW9uIHByZXZlbnRpb248L3RleHQ+Cjx0ZXh0IHg9IjQ5MiIgeT0iMTk4IiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkOCI+b3JnLXNjb3BlZCwgZW50ZXJwcmlzZSB0aWVyPC90ZXh0Pgo8ZGVmcz4KPG1hcmtlciBpZD0ibmZnMyIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNi41IiBtYXJrZXJIZWlnaHQ9IjYuNSIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPjxwYXRoIGQ9Ik0wLDAgTDEwLDUgTDAsMTAgeiIgZmlsbD0iIzk0YTNiOCIvPjwvbWFya2VyPgo8bWFya2VyIGlkPSJuZmczciIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNi41IiBtYXJrZXJIZWlnaHQ9IjYuNSIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPjxwYXRoIGQ9Ik0wLDAgTDEwLDUgTDAsMTAgeiIgZmlsbD0iI2RjMjYyNiIvPjwvbWFya2VyPgo8L2RlZnM+Cjwvc3ZnPg==" alt="Each AWS rule group maps to Cloud NGFW policy rules: a stateful rule group of 5-tuple rules becomes ingress allow rules with an L4 match, a rule-source-list of domains becomes egress allow rules matching destination FQDNs, and a Suricata rule-string group has no policy-rule form and re-homes onto security profiles." />
</div>

<p className="t9-caption">The allow/deny rule groups translate onto policy rules one for one; a Suricata signature group has no policy-rule form and points at Cloud NGFW's security profiles instead.</p>

#### Stateful 5-tuple rules

A stateful rule in Network Firewall matches on the 5-tuple: protocol, source address, destination address, source port, and destination port, with an action of pass, drop, or alert. A Cloud NGFW policy rule matches on source and destination IP ranges plus an L4 configuration of protocol and ports, so each rule translates onto one policy rule. TCP, UDP, and ICMP map to themselves; an AWS `ANY` address becomes `0.0.0.0/0`, and an `ANY` destination port drops the port constraint so the rule matches any port.

Two properties are explicit on Cloud NGFW that Network Firewall leaves implicit. The first is **direction**: a 5-tuple rule becomes an ingress policy rule, and the build sets the direction rather than inferring it at match time. The second is the **action**: Cloud NGFW rules are allow or deny individually, so an AWS drop or reject becomes a deny policy rule rather than an omission, and an alert rule becomes an allow rule with rule logging turned on so the traffic is recorded without being blocked.

* **One AWS rule, one policy rule:** a `tcp` rule from `10.0.0.0/16` to any host on port `443` becomes a single ingress policy rule with an L4 match on tcp and port 443.
* \>**Each rule keeps its action.**> pass and alert become allow, drop and reject become deny, and an alert rule turns on rule logging so it records without blocking.
* **Wildcards normalize:** an AWS `ANY` address becomes `0.0.0.0/0`, and an `ANY` destination port removes the port constraint.

#### Domain allowlists

Network Firewall filters egress by domain through a rule group built from a domain list: a set of target domains, tagged for TLS SNI or HTTP Host matching, generated as an allowlist or a denylist. Cloud NGFW expresses the same control through a policy rule whose match specifies a set of destination FQDNs. A domain list translates into egress policy rules: the domains become the FQDN objects the rule matches, and the list's allowlist or denylist nature sets the rule action.

The protocol side follows the domain tag. A TLS-SNI target becomes an FQDN match on TCP port 443, and an HTTP-Host target becomes a match on TCP port 80. Wildcards reconcile: a Network Firewall entry beginning with a leading dot (`.example.com`, the domain and its subdomains) becomes the Cloud NGFW FQDN wildcard form `*.example.com`, >and an exact domain stays as itself.

\>

* **Domains become FQDN matches:** each domain-list target becomes a destination FQDN an egress policy rule matches on.
* **SNI vs Host sets the port:** a TLS-SNI target matches on TCP port 443; an HTTP-Host target matches on TCP port 80.
* **Leading-dot wildcards translate.** `.example.com` becomes `*.example.com`, matching the domain and its subdomains.

#### Suricata signatures and TLS inspection

Two Network Firewall capabilities are deep-packet features rather than allow/deny rules, and Cloud NGFW serves them through surfaces separate from the policy rules. The first is the Suricata signature engine: a rule group can hold raw Suricata IDS/IPS rule strings that match on packet content. Cloud NGFW runs signature-based intrusion prevention through **security profiles**, which are organization-scoped and available at the enterprise tier. The protection has a native form, but the AWS signature text is not a policy rule and does not translate into one, so the build surfaces the signatures for the operator to configure on a security profile.

The second is TLS inspection. Network Firewall can decrypt outbound TLS with a certificate and inspect the plaintext. Cloud NGFW performs TLS inspection through a **TLS inspection policy**, a distinct object from the firewall policy rules. The build reports the TLS-inspection configuration rather than recreating it in a rule. Flow and alert logging is likewise not a rule: Cloud NGFW records rule hits through the rule's own logging and Cloud Logging, and the AWS logging configuration is replaced by that rather than emitted.

* **Suricata → security profiles:** intrusion prevention is an organization-scoped, enterprise-tier security profile; the AWS signature text is surfaced for the operator to configure, not converted into a policy rule.
* **TLS inspection → TLS inspection policy:** outbound decrypt-and-inspect is a separate policy object, reported as an advanced feature rather than recreated in a rule.
* **Logging → rule logging and Cloud Logging:** rule hits are recorded through the rule's own logging; the AWS logging configuration is not a rule and does not become one.

#### Traffic steering

A firewall only filters traffic it governs, and on Cloud NGFW the scope of governance is an association rather than a route. Network Firewall attaches an inspection endpoint into a subnet, and the VPC route tables send traffic through that endpoint; the exact wiring depends on the VPC layout and is not part of the firewall's rules.

Cloud NGFW has no appliance to route through. The policy is enforced in the VPC fabric, and it takes effect on a network once the policy is **associated** with that network. The build emits the policy and its rules; the choice of which VPC networks the policy governs is a property of the customer's project, so that association is the operator's to set. At the enterprise tier, running intrusion prevention also involves attaching a firewall endpoint, which is a separate operator step. The rules are in place; the association determines where they apply.

* **The policy and rules are emitted:** the network firewall policy and one policy rule per translated rule are provisioned at the build.
* **Association sets the scope:** the policy governs a VPC network once it is associated with it, and which networks to govern is a property of the customer's project.
* **Intrusion prevention adds an endpoint:** at the enterprise tier, running signature-based prevention involves attaching a firewall endpoint, a separate operator step from the allow/deny rules.

#### Limitations

The list below is the whole go/no-go picture for Cloud NGFW. The allow/deny rule tree translates into policy rules; the deep-packet features and the network association are where an AWS Network Firewall and Cloud NGFW genuinely diverge.

△ Where AWS Network Firewall and GCP Cloud NGFW diverge, read before you adopt

* **Suricata signatures do not become rules:** a rule group of raw Suricata IDS/IPS strings has no policy-rule form. Cloud NGFW's security profiles are the native form for signature-based prevention, but they are organization-scoped and enterprise-tier, and the signature text is surfaced for the operator to configure rather than translated.
* **TLS inspection is a separate policy object:** outbound TLS decrypt-and-inspect is a Cloud NGFW TLS inspection policy, not a firewall-policy rule. The build reports the TLS-inspection configuration rather than recreating it, so it is enabled by the operator after the build.
* **Rule groups flatten into policy rules.** Cloud NGFW has no rule-collection grouping, so each AWS rule becomes one policy rule and the rule-group organization is not preserved. The build assigns a deterministic priority per rule so evaluation order is stable, but the original grouping is not a Cloud NGFW concept.
* **Stateless custom actions are dropped:** the 5-tuple of a stateless rule translates, but AWS-specific custom actions (publish-metric actions and their dimensions) have no Cloud NGFW analog and are surfaced, not recreated.
* **Multiple policies merge onto one:** if the stack defines more than one firewall policy, the matched rule groups aggregate into a single Cloud NGFW policy. The per-policy separation is reported rather than silently collapsed.
* **Network association is wired by the operator:** the policy and rules are emitted, but which VPC networks the policy governs (and, for intrusion prevention, the firewall-endpoint attach) depend on the customer's project layout and are the operator's to complete.

#### Other considerations

Beyond the rule translation, a few operational realities are worth planning for when a Network Firewall stack moves to Cloud NGFW.

* **Nothing to migrate:** a firewall holds no data. The policy and its rules are provisioned at the build, and there is no traffic history or state to copy.
* **Google operates the enforcement layer.** Cloud NGFW is a managed, distributed layer in the VPC fabric, so Google runs its availability and scaling, and Tensor9 is not in the packet path.
* **The enterprise tier follows the features you use:** allow/deny filtering runs at the standard tier; the security profiles and TLS inspection the advanced Network Firewall features re-home onto require the enterprise tier and, for security profiles, organization-level configuration.
* \>**References to the firewall's identity have no equivalent.**> a firewall is a traffic-inspection layer, not an app-consumed endpoint, so an external read of the firewall's ARN or endpoint identity has no portable Cloud NGFW equivalent and is reported rather than repointed.

## On Azure

| Operation                     | Area             | Support      | Depth        | Notes                                                                                                                                                                                                  |
| ----------------------------- | ---------------- | ------------ | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Suricata rule strings         | Advanced rules   | Partial      | Most usage   | raw Suricata IDS/IPS signatures (rules\_source.rules\_string) re-home onto Azure Firewall Premium IDPS, not a plain rule collection; surfaced for the operator to re-home rather than silently dropped |
| TLS inspection                | Advanced rules   | Out of scope | Full surface | aws\_networkfirewall\_tls\_inspection\_configuration is a distinct managed surface (Azure Firewall Premium TLS inspection), surfaced not recreated                                                     |
| Flow / alert logging          | Observability    | Out of scope | Full surface | aws\_networkfirewall\_logging\_configuration is replaced by Azure Firewall's own diagnostic-log surface, not a translated rule                                                                         |
| 5-tuple stateful rules        | Rule translation | Supported    | Common       | each stateful\_rule (protocol / source+destination CIDR / port) maps to a network\_rule\_collection rule: protocols, source\_addresses, destination\_addresses, destination\_ports                     |
| Domain allowlists / denylists | Rule translation | Supported    | Most usage   | a rules\_source\_list (TLS\_SNI / HTTP\_HOST targets) projects onto an application\_rule\_collection rule with destination\_fqdns; a leading-dot AWS wildcard becomes an Azure \*.domain wildcard      |
| Stateless 5-tuple rules       | Rule translation | Partial      | Most usage   | the 5-tuple match projects; AWS-specific custom actions (publishMetricAction / dimensions) have no Azure analog and are surfaced, not recreated                                                        |
| VPC inspection routing        | Traffic steering | Partial      | Common       | the firewall + policy + rules emit; the inspection subnet (AzureFirewallSubnet) + route-table steering is deployment-specific and wired by the operator (surfaced, never assumed)                      |

#### How it works

An AWS Network Firewall is a managed firewall attached to a firewall policy, and the policy references a tree of rule groups that decide what traffic to allow, drop, or alert on. To run that same protection on the customer's Azure, Tensor9 reads the firewall, its policy, and the whole rule-group tree, and emits the Azure-native equivalent: an **Azure Firewall**, an **Azure Firewall Policy**, and a rule-collection group that holds the translated rules.

Azure Firewall is a managed, stateful firewall, the same category of product as Network Firewall. Microsoft runs its data plane, so once the build is done the Azure Firewall inspects packets directly and Tensor9 is not in the path. What translates cleanly is the allow/deny rule tree. What has no plain-rule form (the Suricata signature engine, TLS inspection, and flow logging) moves onto Azure Firewall Premium's own surfaces, and each of those is named in the sections below rather than assumed.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTk2IiB2aWV3Qm94PSIwIDAgODM2IDE5NiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBBV1MgYSB3b3JrbG9hZCBzdWJuZXQgcm91dGVzIGVncmVzcyB0aHJvdWdoIGEgbWFuYWdlZCBOZXR3b3JrIEZpcmV3YWxsIGVuZHBvaW50IHRoYXQgaW5zcGVjdHMgaXQgYmVmb3JlIHRoZSBpbnRlcm5ldC4gT24gQXp1cmUgdGhlIHNhbWUgd29ya2xvYWQgc3VibmV0IHJvdXRlcyB0aHJvdWdoIGFuIEF6dXJlIEZpcmV3YWxsIHRoZSBidWlsZCBlbWl0cywgd2hpY2ggaW5zcGVjdHMgaXQgdGhlIHNhbWUgd2F5OyB0aGUgZmlyZXdhbGwgaW5zcGVjdHMgcGFja2V0cyBkaXJlY3RseSBhbmQgbm90aGluZyBvZiBUZW5zb3I5IHNpdHMgaW4gdGhlIHBhdGguIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojMzM0MTU1fTwvc3R5bGU+CjxyZWN0IHg9IjE2IiB5PSI0NiIgd2lkdGg9IjM5MiIgaGVpZ2h0PSIxMzQiIHJ4PSIxNCIgZmlsbD0iI2Y4ZmFmYyIgc3Ryb2tlPSIjY2JkNWUxIiBzdHJva2Utd2lkdGg9IjEuNCIgc3Ryb2tlLWRhc2hhcnJheT0iNSA1Ii8+Cjx0ZXh0IHg9IjMwIiB5PSI2NiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjgiPk9OIEFXUyBUT0RBWTwvdGV4dD4KPHJlY3QgeD0iMzAiIHk9Ijg4IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjY2IiByeD0iMTEiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2UyZThmMCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iODUiIHk9IjExNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMnB4Ij5Xb3JrbG9hZDwvdGV4dD4KPHRleHQgeD0iODUiIHk9IjEzMyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGIiPnN1Ym5ldDwvdGV4dD4KPGxpbmUgeDE9IjE0MCIgeTE9IjEyMSIgeDI9IjE5NiIgeTI9IjEyMSIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNuZmExKSIvPgo8dGV4dCB4PSIxNjgiIHk9IjExMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo4LjVweCI+cm91dGU8L3RleHQ+CjxyZWN0IHg9IjIwMCIgeT0iODgiIHdpZHRoPSIxNTAiIGhlaWdodD0iNjYiIHJ4PSIxMSIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZTJlOGYwIiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSIyNzUiIHk9IjExNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMS41cHgiPk5ldHdvcmsgRmlyZXdhbGw8L3RleHQ+Cjx0ZXh0IHg9IjI3NSIgeT0iMTMzIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YiI+ZW5kcG9pbnQsIGluc3BlY3RzPC90ZXh0Pgo8bGluZSB4MT0iMzUwIiB5MT0iMTIxIiB4Mj0iMzk2IiB5Mj0iMTIxIiBzdHJva2U9IiM5NGEzYjgiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI25mYTEpIi8+Cjx0ZXh0IHg9IjM3NCIgeT0iMTEyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjguNXB4Ij53ZWI8L3RleHQ+CjxyZWN0IHg9IjQyOCIgeT0iNDYiIHdpZHRoPSIzOTIiIGhlaWdodD0iMTM0IiByeD0iMTQiIGZpbGw9IiNmOGZhZmMiIHN0cm9rZT0iI2NiZDVlMSIgc3Ryb2tlLXdpZHRoPSIxLjQiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNSIvPgo8dGV4dCB4PSI0NDIiIHk9IjY2IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDojMDQ3ODU3Ij5PTiBBWlVSRTwvdGV4dD4KPHJlY3QgeD0iNDQyIiB5PSI4OCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI2NiIgcng9IjExIiBmaWxsPSIjZmZmIiBzdHJva2U9IiNlMmU4ZjAiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjQ5NyIgeT0iMTE2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYTsgZm9udC1zaXplOjEycHgiPldvcmtsb2FkPC90ZXh0Pgo8dGV4dCB4PSI0OTciIHk9IjEzMyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGIiPnN1Ym5ldDwvdGV4dD4KPGxpbmUgeDE9IjU1MiIgeTE9IjEyMSIgeDI9IjYwOCIgeTI9IjEyMSIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNuZmExKSIvPgo8dGV4dCB4PSI1ODAiIHk9IjExMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo4LjVweCI+cm91dGU8L3RleHQ+CjxyZWN0IHg9IjYxMiIgeT0iODQiIHdpZHRoPSIxNTAiIGhlaWdodD0iNzQiIHJ4PSIxMSIgZmlsbD0iI2VjZmRmNSIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSI2ODciIHk9IjExNCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTc7IGZvbnQtc2l6ZToxMnB4Ij5BenVyZSBGaXJld2FsbDwvdGV4dD4KPHRleHQgeD0iNjg3IiB5PSIxMzEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTciPisgcG9saWN5LCBpbnNwZWN0czwvdGV4dD4KPGxpbmUgeDE9Ijc2MiIgeTE9IjEyMSIgeDI9IjgwOCIgeTI9IjEyMSIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNuZmExKSIvPgo8dGV4dCB4PSI3ODYiIHk9IjExMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo4LjVweCI+d2ViPC90ZXh0Pgo8ZGVmcz48bWFya2VyIGlkPSJuZmExIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+PC9kZWZzPgo8L3N2Zz4=" alt="On AWS a workload subnet routes egress through a managed Network Firewall endpoint that inspects it before the internet. On Azure the same workload subnet routes through an Azure Firewall the build emits, which inspects it the same way; the firewall inspects packets directly and nothing of Tensor9 sits in the path." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTk2IiB2aWV3Qm94PSIwIDAgODM2IDE5NiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBBV1MgYSB3b3JrbG9hZCBzdWJuZXQgcm91dGVzIGVncmVzcyB0aHJvdWdoIGEgbWFuYWdlZCBOZXR3b3JrIEZpcmV3YWxsIGVuZHBvaW50IHRoYXQgaW5zcGVjdHMgaXQgYmVmb3JlIHRoZSBpbnRlcm5ldC4gT24gQXp1cmUgdGhlIHNhbWUgd29ya2xvYWQgc3VibmV0IHJvdXRlcyB0aHJvdWdoIGFuIEF6dXJlIEZpcmV3YWxsIHRoZSBidWlsZCBlbWl0cywgd2hpY2ggaW5zcGVjdHMgaXQgdGhlIHNhbWUgd2F5OyB0aGUgZmlyZXdhbGwgaW5zcGVjdHMgcGFja2V0cyBkaXJlY3RseSBhbmQgbm90aGluZyBvZiBUZW5zb3I5IHNpdHMgaW4gdGhlIHBhdGguIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojY2JkNWUxfTwvc3R5bGU+CjxyZWN0IHg9IjE2IiB5PSI0NiIgd2lkdGg9IjM5MiIgaGVpZ2h0PSIxMzQiIHJ4PSIxNCIgZmlsbD0iIzFhMjYzMSIgc3Ryb2tlPSIjM2Q0ZjY2IiBzdHJva2Utd2lkdGg9IjEuNCIgc3Ryb2tlLWRhc2hhcnJheT0iNSA1Ii8+Cjx0ZXh0IHg9IjMwIiB5PSI2NiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjgiPk9OIEFXUyBUT0RBWTwvdGV4dD4KPHJlY3QgeD0iMzAiIHk9Ijg4IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjY2IiByeD0iMTEiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNGU2NiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iODUiIHk9IjExNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMnB4Ij5Xb3JrbG9hZDwvdGV4dD4KPHRleHQgeD0iODUiIHk9IjEzMyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDgiPnN1Ym5ldDwvdGV4dD4KPGxpbmUgeDE9IjE0MCIgeTE9IjEyMSIgeDI9IjE5NiIgeTI9IjEyMSIgc3Ryb2tlPSIjNDE0ZTYyIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNuZmExKSIvPgo8dGV4dCB4PSIxNjgiIHk9IjExMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo4LjVweCI+cm91dGU8L3RleHQ+CjxyZWN0IHg9IjIwMCIgeT0iODgiIHdpZHRoPSIxNTAiIGhlaWdodD0iNjYiIHJ4PSIxMSIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q0ZTY2IiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSIyNzUiIHk9IjExNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMS41cHgiPk5ldHdvcmsgRmlyZXdhbGw8L3RleHQ+Cjx0ZXh0IHg9IjI3NSIgeT0iMTMzIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkOCI+ZW5kcG9pbnQsIGluc3BlY3RzPC90ZXh0Pgo8bGluZSB4MT0iMzUwIiB5MT0iMTIxIiB4Mj0iMzk2IiB5Mj0iMTIxIiBzdHJva2U9IiM0MTRlNjIiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI25mYTEpIi8+Cjx0ZXh0IHg9IjM3NCIgeT0iMTEyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjguNXB4Ij53ZWI8L3RleHQ+CjxyZWN0IHg9IjQyOCIgeT0iNDYiIHdpZHRoPSIzOTIiIGhlaWdodD0iMTM0IiByeD0iMTQiIGZpbGw9IiMxYTI2MzEiIHN0cm9rZT0iIzNkNGY2NiIgc3Ryb2tlLXdpZHRoPSIxLjQiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNSIvPgo8dGV4dCB4PSI0NDIiIHk9IjY2IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDogIzkwZGVjOCI+T04gQVpVUkU8L3RleHQ+CjxyZWN0IHg9IjQ0MiIgeT0iODgiIHdpZHRoPSIxMTAiIGhlaWdodD0iNjYiIHJ4PSIxMSIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q0ZTY2IiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSI0OTciIHk9IjExNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMnB4Ij5Xb3JrbG9hZDwvdGV4dD4KPHRleHQgeD0iNDk3IiB5PSIxMzMiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4Ij5zdWJuZXQ8L3RleHQ+CjxsaW5lIHgxPSI1NTIiIHkxPSIxMjEiIHgyPSI2MDgiIHkyPSIxMjEiIHN0cm9rZT0iIzQxNGU2MiIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjbmZhMSkiLz4KPHRleHQgeD0iNTgwIiB5PSIxMTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMHB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OC41cHgiPnJvdXRlPC90ZXh0Pgo8cmVjdCB4PSI2MTIiIHk9Ijg0IiB3aWR0aD0iMTUwIiBoZWlnaHQ9Ijc0IiByeD0iMTEiIGZpbGw9IiMxYTMxMjYiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iNjg3IiB5PSIxMTQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6MTJweCI+QXp1cmUgRmlyZXdhbGw8L3RleHQ+Cjx0ZXh0IHg9IjY4NyIgeT0iMTMxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4Ij4rIHBvbGljeSwgaW5zcGVjdHM8L3RleHQ+CjxsaW5lIHgxPSI3NjIiIHkxPSIxMjEiIHgyPSI4MDgiIHkyPSIxMjEiIHN0cm9rZT0iIzQxNGU2MiIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjbmZhMSkiLz4KPHRleHQgeD0iNzg2IiB5PSIxMTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMHB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OC41cHgiPndlYjwvdGV4dD4KPGRlZnM+PG1hcmtlciBpZD0ibmZhMSIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNi41IiBtYXJrZXJIZWlnaHQ9IjYuNSIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPjxwYXRoIGQ9Ik0wLDAgTDEwLDUgTDAsMTAgeiIgZmlsbD0iIzk0YTNiOCIvPjwvbWFya2VyPjwvZGVmcz4KPC9zdmc+" alt="On AWS a workload subnet routes egress through a managed Network Firewall endpoint that inspects it before the internet. On Azure the same workload subnet routes through an Azure Firewall the build emits, which inspects it the same way; the firewall inspects packets directly and nothing of Tensor9 sits in the path." />
</div>

<p className="t9-caption">The workload and its routing are untouched; only the firewall that inspects the traffic changes, and it runs in Azure.</p>

#### Architecture

Network Firewall spreads its configuration across three resource types: the firewall, its policy, and the rule groups the policy references. Azure Firewall keeps the same separation. The build emits an Azure Firewall running in a dedicated `AzureFirewallSubnet` with a public IP, attached to an Azure Firewall Policy, and the policy holds a single rule-collection group.

Inside that group the translated rules land in two collections. A **network rule collection** holds the stateful 5-tuple rules (protocol, source and destination addresses, destination ports). An **application rule collection** holds the domain allowlists (the FQDNs egress traffic may reach). The firewall runs at the Standard tier for allow/deny filtering; the Premium tier adds the intrusion-detection and TLS-inspection surfaces the advanced Network Firewall features move onto, covered further down.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjI2IiB2aWV3Qm94PSIwIDAgODM2IDIyNiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUaGUgQXp1cmUgZmlyZXdhbGwgdGhlIGJ1aWxkIGVtaXRzIGlzIG9uZSBjb21wb3NpdGlvbjogYW4gQXp1cmUgRmlyZXdhbGwgaW4gYSBkZWRpY2F0ZWQgQXp1cmVGaXJld2FsbFN1Ym5ldCB3aXRoIGEgcHVibGljIElQLCBhdHRhY2hlZCB0byBhbiBBenVyZSBGaXJld2FsbCBQb2xpY3ksIHdoaWNoIGhvbGRzIG9uZSBydWxlLWNvbGxlY3Rpb24gZ3JvdXAgY29udGFpbmluZyBhIG5ldHdvcmsgcnVsZSBjb2xsZWN0aW9uIGFuZCBhbiBhcHBsaWNhdGlvbiBydWxlIGNvbGxlY3Rpb24uIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojMzM0MTU1fTwvc3R5bGU+CjxyZWN0IHg9IjE2IiB5PSIzNCIgd2lkdGg9IjgwNCIgaGVpZ2h0PSIxNzYiIHJ4PSIxNiIgZmlsbD0iI2Y4ZmFmYyIgc3Ryb2tlPSIjY2JkNWUxIiBzdHJva2Utd2lkdGg9IjEuNCIgc3Ryb2tlLWRhc2hhcnJheT0iNSA1Ii8+Cjx0ZXh0IHg9IjM0IiB5PSI1NiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6IzA0Nzg1NyI+QVpVUkUgVk5FVDwvdGV4dD4KPHJlY3QgeD0iMzQiIHk9Ijc0IiB3aWR0aD0iMTk2IiBoZWlnaHQ9IjExOCIgcng9IjEyIiBmaWxsPSIjZWNmZGY1IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS43Ii8+Cjx0ZXh0IHg9IjEzMiIgeT0iMTA0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjEyLjVweCI+QXp1cmUgRmlyZXdhbGw8L3RleHQ+Cjx0ZXh0IHg9IjEzMiIgeT0iMTIyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3Ij5BWkZXX1ZOZXQsIFN0YW5kYXJkPC90ZXh0Pgo8dGV4dCB4PSIxMzIiIHk9IjE1MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGIiPkF6dXJlRmlyZXdhbGxTdWJuZXQ8L3RleHQ+Cjx0ZXh0IHg9IjEzMiIgeT0iMTY4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YiI+KyBwdWJsaWMgSVA8L3RleHQ+CjxsaW5lIHgxPSIyMzAiIHkxPSIxMzMiIHgyPSIyODYiIHkyPSIxMzMiIHN0cm9rZT0iIzk0YTNiOCIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjbmZhMikiLz4KPHRleHQgeD0iMjU4IiB5PSIxMjQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMHB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6OC41cHgiPnBvbGljeTwvdGV4dD4KPHJlY3QgeD0iMjkwIiB5PSI3NCIgd2lkdGg9IjE4MCIgaGVpZ2h0PSIxMTgiIHJ4PSIxMiIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZTJlOGYwIiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSIzODAiIHk9IjExOCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMnB4Ij5GaXJld2FsbCBQb2xpY3k8L3RleHQ+Cjx0ZXh0IHg9IjM4MCIgeT0iMTQwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YiI+aG9sZHMgdGhlIHJ1bGUgdHJlZTwvdGV4dD4KPGxpbmUgeDE9IjQ3MCIgeTE9IjEzMyIgeDI9IjUyNiIgeTI9IjEzMyIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNuZmEyKSIvPgo8dGV4dCB4PSI0OTgiIHk9IjEyNCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo4LjVweCI+cnVsZXM8L3RleHQ+CjxyZWN0IHg9IjUzMCIgeT0iNzQiIHdpZHRoPSIyNzIiIGhlaWdodD0iMTE4IiByeD0iMTIiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2UyZThmMCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iNjY2IiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMnB4Ij5SdWxlLWNvbGxlY3Rpb24gZ3JvdXA8L3RleHQ+CjxyZWN0IHg9IjU0NiIgeT0iMTEyIiB3aWR0aD0iMjQwIiBoZWlnaHQ9IjMwIiByeD0iNyIgZmlsbD0iI2Y4ZmFmYyIgc3Ryb2tlPSIjY2JkNWUxIi8+Cjx0ZXh0IHg9IjY2NiIgeT0iMTMxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzQ3NTU2OSI+bmV0d29yayBydWxlIGNvbGxlY3Rpb248L3RleHQ+CjxyZWN0IHg9IjU0NiIgeT0iMTUwIiB3aWR0aD0iMjQwIiBoZWlnaHQ9IjMwIiByeD0iNyIgZmlsbD0iI2Y4ZmFmYyIgc3Ryb2tlPSIjY2JkNWUxIi8+Cjx0ZXh0IHg9IjY2NiIgeT0iMTY5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzQ3NTU2OSI+YXBwbGljYXRpb24gcnVsZSBjb2xsZWN0aW9uPC90ZXh0Pgo8ZGVmcz48bWFya2VyIGlkPSJuZmEyIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+PC9kZWZzPgo8L3N2Zz4=" alt="The Azure firewall the build emits is one composition: an Azure Firewall in a dedicated AzureFirewallSubnet with a public IP, attached to an Azure Firewall Policy, which holds one rule-collection group containing a network rule collection and an application rule collection." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjI2IiB2aWV3Qm94PSIwIDAgODM2IDIyNiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUaGUgQXp1cmUgZmlyZXdhbGwgdGhlIGJ1aWxkIGVtaXRzIGlzIG9uZSBjb21wb3NpdGlvbjogYW4gQXp1cmUgRmlyZXdhbGwgaW4gYSBkZWRpY2F0ZWQgQXp1cmVGaXJld2FsbFN1Ym5ldCB3aXRoIGEgcHVibGljIElQLCBhdHRhY2hlZCB0byBhbiBBenVyZSBGaXJld2FsbCBQb2xpY3ksIHdoaWNoIGhvbGRzIG9uZSBydWxlLWNvbGxlY3Rpb24gZ3JvdXAgY29udGFpbmluZyBhIG5ldHdvcmsgcnVsZSBjb2xsZWN0aW9uIGFuZCBhbiBhcHBsaWNhdGlvbiBydWxlIGNvbGxlY3Rpb24uIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojY2JkNWUxfTwvc3R5bGU+CjxyZWN0IHg9IjE2IiB5PSIzNCIgd2lkdGg9IjgwNCIgaGVpZ2h0PSIxNzYiIHJ4PSIxNiIgZmlsbD0iIzFhMjYzMSIgc3Ryb2tlPSIjM2Q0ZjY2IiBzdHJva2Utd2lkdGg9IjEuNCIgc3Ryb2tlLWRhc2hhcnJheT0iNSA1Ii8+Cjx0ZXh0IHg9IjM0IiB5PSI1NiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6ICM5MGRlYzgiPkFaVVJFIFZORVQ8L3RleHQ+CjxyZWN0IHg9IjM0IiB5PSI3NCIgd2lkdGg9IjE5NiIgaGVpZ2h0PSIxMTgiIHJ4PSIxMiIgZmlsbD0iIzFhMzEyNiIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSIxMzIiIHk9IjEwNCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZToxMi41cHgiPkF6dXJlIEZpcmV3YWxsPC90ZXh0Pgo8dGV4dCB4PSIxMzIiIHk9IjEyMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjOCI+QVpGV19WTmV0LCBTdGFuZGFyZDwvdGV4dD4KPHRleHQgeD0iMTMyIiB5PSIxNTAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4Ij5BenVyZUZpcmV3YWxsU3VibmV0PC90ZXh0Pgo8dGV4dCB4PSIxMzIiIHk9IjE2OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDgiPisgcHVibGljIElQPC90ZXh0Pgo8bGluZSB4MT0iMjMwIiB5MT0iMTMzIiB4Mj0iMjg2IiB5Mj0iMTMzIiBzdHJva2U9IiM0MTRlNjIiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI25mYTIpIi8+Cjx0ZXh0IHg9IjI1OCIgeT0iMTI0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjguNXB4Ij5wb2xpY3k8L3RleHQ+CjxyZWN0IHg9IjI5MCIgeT0iNzQiIHdpZHRoPSIxODAiIGhlaWdodD0iMTE4IiByeD0iMTIiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNGU2NiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMzgwIiB5PSIxMTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTJweCI+RmlyZXdhbGwgUG9saWN5PC90ZXh0Pgo8dGV4dCB4PSIzODAiIHk9IjE0MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDgiPmhvbGRzIHRoZSBydWxlIHRyZWU8L3RleHQ+CjxsaW5lIHgxPSI0NzAiIHkxPSIxMzMiIHgyPSI1MjYiIHkyPSIxMzMiIHN0cm9rZT0iIzQxNGU2MiIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjbmZhMikiLz4KPHRleHQgeD0iNDk4IiB5PSIxMjQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMHB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OC41cHgiPnJ1bGVzPC90ZXh0Pgo8cmVjdCB4PSI1MzAiIHk9Ijc0IiB3aWR0aD0iMjcyIiBoZWlnaHQ9IjExOCIgcng9IjEyIiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDRlNjYiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjY2NiIgeT0iOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTJweCI+UnVsZS1jb2xsZWN0aW9uIGdyb3VwPC90ZXh0Pgo8cmVjdCB4PSI1NDYiIHk9IjExMiIgd2lkdGg9IjI0MCIgaGVpZ2h0PSIzMCIgcng9IjciIGZpbGw9IiMxYTI2MzEiIHN0cm9rZT0iIzNkNGY2NiIvPgo8dGV4dCB4PSI2NjYiIHk9IjEzMSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDgiPm5ldHdvcmsgcnVsZSBjb2xsZWN0aW9uPC90ZXh0Pgo8cmVjdCB4PSI1NDYiIHk9IjE1MCIgd2lkdGg9IjI0MCIgaGVpZ2h0PSIzMCIgcng9IjciIGZpbGw9IiMxYTI2MzEiIHN0cm9rZT0iIzNkNGY2NiIvPgo8dGV4dCB4PSI2NjYiIHk9IjE2OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDgiPmFwcGxpY2F0aW9uIHJ1bGUgY29sbGVjdGlvbjwvdGV4dD4KPGRlZnM+PG1hcmtlciBpZD0ibmZhMiIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNi41IiBtYXJrZXJIZWlnaHQ9IjYuNSIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPjxwYXRoIGQ9Ik0wLDAgTDEwLDUgTDAsMTAgeiIgZmlsbD0iIzk0YTNiOCIvPjwvbWFya2VyPjwvZGVmcz4KPC9zdmc+" alt="The Azure firewall the build emits is one composition: an Azure Firewall in a dedicated AzureFirewallSubnet with a public IP, attached to an Azure Firewall Policy, which holds one rule-collection group containing a network rule collection and an application rule collection." />
</div>

<p className="t9-caption">One firewall, one policy, one rule-collection group: the firewall inspects traffic, the policy states the rules, and the group holds the two rule collections translated from the AWS configuration.</p>

#### How the rule groups map

The policy's rule groups translate by kind. A stateful rule group of 5-tuple rules becomes a network rule collection: each rule keeps its protocol, its source and destination addresses, and its destination ports, and an AWS `ANY` or `0.0.0.0/0` becomes the Azure any-address token. A rule group built from a domain list becomes an application rule collection, where each entry is a destination FQDN the traffic may reach. Every rule group in the policy folds into the one emitted rule-collection group.

A rule group written as raw Suricata signatures is the one kind with no rule-collection form. Azure runs signature-based intrusion detection at the Premium tier, which is a distinct engine rather than an allow/deny rule, so the build surfaces those signatures for the operator to enable on Premium instead of silently discarding them. The allow/deny rules that make up the bulk of most policies translate directly.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjUwIiB2aWV3Qm94PSIwIDAgODM2IDI1MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJFYWNoIEFXUyBydWxlIGdyb3VwIG1hcHMgdG8gb25lIEF6dXJlIHJ1bGUgY29sbGVjdGlvbjogYSBzdGF0ZWZ1bCBydWxlIGdyb3VwIG9mIDUtdHVwbGUgcnVsZXMgYmVjb21lcyBhIG5ldHdvcmsgcnVsZSBjb2xsZWN0aW9uLCBhIHJ1bGUtc291cmNlLWxpc3Qgb2YgZG9tYWlucyBiZWNvbWVzIGFuIGFwcGxpY2F0aW9uIHJ1bGUgY29sbGVjdGlvbiwgYW5kIGEgU3VyaWNhdGEgcnVsZS1zdHJpbmcgZ3JvdXAgaGFzIG5vIHJ1bGUtY29sbGVjdGlvbiBmb3JtIGFuZCBtb3ZlcyBvbnRvIFByZW1pdW0gaW50cnVzaW9uIGRldGVjdGlvbi4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiMzMzQxNTV9PC9zdHlsZT4KPHRleHQgeD0iMzAiIHk9IjMyIiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDojNjQ3NDhiIj5BV1MgUlVMRSBHUk9VUFM8L3RleHQ+CjxyZWN0IHg9IjMwIiB5PSI0NCIgd2lkdGg9IjMwMCIgaGVpZ2h0PSI0NiIgcng9IjEwIiBmaWxsPSIjZmZmIiBzdHJva2U9IiNlMmU4ZjAiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjQ2IiB5PSI2NiIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMS41cHgiPnN0YXRlZnVsIDUtdHVwbGUgcnVsZXM8L3RleHQ+Cjx0ZXh0IHg9IjQ2IiB5PSI4MiIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGIiPnRjcCAxMC4wLjAuMC8xNiDihpIgYW55OjQ0MyBwYXNzPC90ZXh0Pgo8cmVjdCB4PSIzMCIgeT0iMTAyIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjQ2IiByeD0iMTAiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2UyZThmMCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iNDYiIHk9IjEyNCIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMS41cHgiPmRvbWFpbiBhbGxvd2xpc3Q8L3RleHQ+Cjx0ZXh0IHg9IjQ2IiB5PSIxNDAiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiIj4uZXhhbXBsZS5jb20gIChUTFNfU05JKTwvdGV4dD4KPHJlY3QgeD0iMzAiIHk9IjE2MCIgd2lkdGg9IjMwMCIgaGVpZ2h0PSI0NiIgcng9IjEwIiBmaWxsPSIjZmZmIiBzdHJva2U9IiNmY2E1YTUiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjQ2IiB5PSIxODIiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTEuNXB4Ij5TdXJpY2F0YSBydWxlIHN0cmluZzwvdGV4dD4KPHRleHQgeD0iNDYiIHk9IjE5OCIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGIiPmFsZXJ0IHRjcCBhbnkgYW55IC0mZ3Q7IC4uLjwvdGV4dD4KPGxpbmUgeDE9IjMzNiIgeTE9IjY3IiB4Mj0iNDcwIiB5Mj0iNjciIHN0cm9rZT0iIzk0YTNiOCIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjbmZhMykiLz4KPGxpbmUgeDE9IjMzNiIgeTE9IjEyNSIgeDI9IjQ3MCIgeTI9IjEyNSIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNuZmEzKSIvPgo8bGluZSB4MT0iMzM2IiB5MT0iMTgzIiB4Mj0iNDcwIiB5Mj0iMTgzIiBzdHJva2U9IiNkYzI2MjYiIHN0cm9rZS13aWR0aD0iMS42IiBzdHJva2UtZGFzaGFycmF5PSI0IDMiIG1hcmtlci1lbmQ9InVybCgjbmZhM3IpIi8+Cjx0ZXh0IHg9IjQwMyIgeT0iMTc2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjguNXB4O2ZpbGw6I2I5MWMxYyI+bW92ZXMgdG88L3RleHQ+Cjx0ZXh0IHg9IjQ3NiIgeT0iMzIiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiMwNDc4NTciPkFaVVJFIFBPTElDWTwvdGV4dD4KPHJlY3QgeD0iNDc2IiB5PSI0NCIgd2lkdGg9IjMzMCIgaGVpZ2h0PSI0NiIgcng9IjEwIiBmaWxsPSIjZWNmZGY1IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS42Ii8+Cjx0ZXh0IHg9IjQ5MiIgeT0iNjYiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6MTEuNXB4Ij5uZXR3b3JrIHJ1bGUgY29sbGVjdGlvbjwvdGV4dD4KPHRleHQgeD0iNDkyIiB5PSI4MiIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NyI+VENQICAxMC4wLjAuMC8xNiDihpIgKiAgcG9ydHMgNDQzPC90ZXh0Pgo8cmVjdCB4PSI0NzYiIHk9IjEwMiIgd2lkdGg9IjMzMCIgaGVpZ2h0PSI0NiIgcng9IjEwIiBmaWxsPSIjZWNmZGY1IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS42Ii8+Cjx0ZXh0IHg9IjQ5MiIgeT0iMTI0IiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjExLjVweCI+YXBwbGljYXRpb24gcnVsZSBjb2xsZWN0aW9uPC90ZXh0Pgo8dGV4dCB4PSI0OTIiIHk9IjE0MCIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NyI+SHR0cHMgIGZxZG4gKi5leGFtcGxlLmNvbTwvdGV4dD4KPHJlY3QgeD0iNDc2IiB5PSIxNjAiIHdpZHRoPSIzMzAiIGhlaWdodD0iNDYiIHJ4PSIxMCIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZTJlOGYwIiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSI0OTIiIHk9IjE4MiIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMS41cHgiPlByZW1pdW0gaW50cnVzaW9uIGRldGVjdGlvbjwvdGV4dD4KPHRleHQgeD0iNDkyIiB5PSIxOTgiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiIj5zaWduYXR1cmUgZW5naW5lLCBhIHNlcGFyYXRlIHN1cmZhY2U8L3RleHQ+CjxkZWZzPgo8bWFya2VyIGlkPSJuZmEzIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+CjxtYXJrZXIgaWQ9Im5mYTNyIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjZGMyNjI2Ii8+PC9tYXJrZXI+CjwvZGVmcz4KPC9zdmc+" alt="Each AWS rule group maps to one Azure rule collection: a stateful rule group of 5-tuple rules becomes a network rule collection, a rule-source-list of domains becomes an application rule collection, and a Suricata rule-string group has no rule-collection form and moves onto Premium intrusion detection." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjUwIiB2aWV3Qm94PSIwIDAgODM2IDI1MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJFYWNoIEFXUyBydWxlIGdyb3VwIG1hcHMgdG8gb25lIEF6dXJlIHJ1bGUgY29sbGVjdGlvbjogYSBzdGF0ZWZ1bCBydWxlIGdyb3VwIG9mIDUtdHVwbGUgcnVsZXMgYmVjb21lcyBhIG5ldHdvcmsgcnVsZSBjb2xsZWN0aW9uLCBhIHJ1bGUtc291cmNlLWxpc3Qgb2YgZG9tYWlucyBiZWNvbWVzIGFuIGFwcGxpY2F0aW9uIHJ1bGUgY29sbGVjdGlvbiwgYW5kIGEgU3VyaWNhdGEgcnVsZS1zdHJpbmcgZ3JvdXAgaGFzIG5vIHJ1bGUtY29sbGVjdGlvbiBmb3JtIGFuZCBtb3ZlcyBvbnRvIFByZW1pdW0gaW50cnVzaW9uIGRldGVjdGlvbi4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiNjYmQ1ZTF9PC9zdHlsZT4KPHRleHQgeD0iMzAiIHk9IjMyIiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDogI2M5Y2ZkOCI+QVdTIFJVTEUgR1JPVVBTPC90ZXh0Pgo8cmVjdCB4PSIzMCIgeT0iNDQiIHdpZHRoPSIzMDAiIGhlaWdodD0iNDYiIHJ4PSIxMCIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q0ZTY2IiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSI0NiIgeT0iNjYiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTEuNXB4Ij5zdGF0ZWZ1bCA1LXR1cGxlIHJ1bGVzPC90ZXh0Pgo8dGV4dCB4PSI0NiIgeT0iODIiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4Ij50Y3AgMTAuMC4wLjAvMTYg4oaSIGFueTo0NDMgcGFzczwvdGV4dD4KPHJlY3QgeD0iMzAiIHk9IjEwMiIgd2lkdGg9IjMwMCIgaGVpZ2h0PSI0NiIgcng9IjEwIiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDRlNjYiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjQ2IiB5PSIxMjQiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTEuNXB4Ij5kb21haW4gYWxsb3dsaXN0PC90ZXh0Pgo8dGV4dCB4PSI0NiIgeT0iMTQwIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkOCI+LmV4YW1wbGUuY29tICAoVExTX1NOSSk8L3RleHQ+CjxyZWN0IHg9IjMwIiB5PSIxNjAiIHdpZHRoPSIzMDAiIGhlaWdodD0iNDYiIHJ4PSIxMCIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjNjYzZDNkIiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSI0NiIgeT0iMTgyIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjExLjVweCI+U3VyaWNhdGEgcnVsZSBzdHJpbmc8L3RleHQ+Cjx0ZXh0IHg9IjQ2IiB5PSIxOTgiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4Ij5hbGVydCB0Y3AgYW55IGFueSAtJmd0OyAuLi48L3RleHQ+CjxsaW5lIHgxPSIzMzYiIHkxPSI2NyIgeDI9IjQ3MCIgeTI9IjY3IiBzdHJva2U9IiM0MTRlNjIiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI25mYTMpIi8+CjxsaW5lIHgxPSIzMzYiIHkxPSIxMjUiIHgyPSI0NzAiIHkyPSIxMjUiIHN0cm9rZT0iIzQxNGU2MiIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjbmZhMykiLz4KPGxpbmUgeDE9IjMzNiIgeTE9IjE4MyIgeDI9IjQ3MCIgeTI9IjE4MyIgc3Ryb2tlPSIjZGMyNjI2IiBzdHJva2Utd2lkdGg9IjEuNiIgc3Ryb2tlLWRhc2hhcnJheT0iNCAzIiBtYXJrZXItZW5kPSJ1cmwoI25mYTNyKSIvPgo8dGV4dCB4PSI0MDMiIHk9IjE3NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo4LjVweDtmaWxsOiAjZGU5MDkwIj5tb3ZlcyB0bzwvdGV4dD4KPHRleHQgeD0iNDc2IiB5PSIzMiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6ICM5MGRlYzgiPkFaVVJFIFBPTElDWTwvdGV4dD4KPHJlY3QgeD0iNDc2IiB5PSI0NCIgd2lkdGg9IjMzMCIgaGVpZ2h0PSI0NiIgcng9IjEwIiBmaWxsPSIjMWEzMTI2IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS42Ii8+Cjx0ZXh0IHg9IjQ5MiIgeT0iNjYiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6MTEuNXB4Ij5uZXR3b3JrIHJ1bGUgY29sbGVjdGlvbjwvdGV4dD4KPHRleHQgeD0iNDkyIiB5PSI4MiIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjOCI+VENQICAxMC4wLjAuMC8xNiDihpIgKiAgcG9ydHMgNDQzPC90ZXh0Pgo8cmVjdCB4PSI0NzYiIHk9IjEwMiIgd2lkdGg9IjMzMCIgaGVpZ2h0PSI0NiIgcng9IjEwIiBmaWxsPSIjMWEzMTI2IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS42Ii8+Cjx0ZXh0IHg9IjQ5MiIgeT0iMTI0IiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjExLjVweCI+YXBwbGljYXRpb24gcnVsZSBjb2xsZWN0aW9uPC90ZXh0Pgo8dGV4dCB4PSI0OTIiIHk9IjE0MCIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjOCI+SHR0cHMgIGZxZG4gKi5leGFtcGxlLmNvbTwvdGV4dD4KPHJlY3QgeD0iNDc2IiB5PSIxNjAiIHdpZHRoPSIzMzAiIGhlaWdodD0iNDYiIHJ4PSIxMCIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q0ZTY2IiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSI0OTIiIHk9IjE4MiIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMS41cHgiPlByZW1pdW0gaW50cnVzaW9uIGRldGVjdGlvbjwvdGV4dD4KPHRleHQgeD0iNDkyIiB5PSIxOTgiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4Ij5zaWduYXR1cmUgZW5naW5lLCBhIHNlcGFyYXRlIHN1cmZhY2U8L3RleHQ+CjxkZWZzPgo8bWFya2VyIGlkPSJuZmEzIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+CjxtYXJrZXIgaWQ9Im5mYTNyIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjZGMyNjI2Ii8+PC9tYXJrZXI+CjwvZGVmcz4KPC9zdmc+" alt="Each AWS rule group maps to one Azure rule collection: a stateful rule group of 5-tuple rules becomes a network rule collection, a rule-source-list of domains becomes an application rule collection, and a Suricata rule-string group has no rule-collection form and moves onto Premium intrusion detection." />
</div>

<p className="t9-caption">The allow/deny rule groups translate onto rule collections one for one; a Suricata signature group has no rule-collection form and points at Premium intrusion detection instead.</p>

#### Stateful 5-tuple rules

A stateful rule in Network Firewall matches on the classic 5-tuple: protocol, source address, destination address, source port, and destination port, with an action of pass, drop, or alert. Azure's network rule collection matches on the same fields, so each rule translates field for field. TCP, UDP, and ICMP map as themselves; an AWS `IP` or `ANY` protocol becomes Azure's `Any`. A CIDR is kept verbatim, and a wildcard address becomes the Azure any-address token.

Two differences are worth stating flatly. Azure evaluates a rule collection under a single action, so the translated network rule collection is emitted with an `Allow` action and holds the rules that permit traffic; a rule whose intent is to drop is expressed by absence from the allowlist plus the collection's default deny, not by a per-rule drop verb. And Azure orders rule collections by an explicit numeric priority rather than by the rule-group reference order, so the build assigns a deterministic priority to the collection.

* **Protocol, addresses, and ports come across field for field:** a `tcp` rule from `10.0.0.0/16` to any host on port `443` becomes the same match in the network rule collection.
* **Wildcards normalize:** an AWS `ANY` or `0.0.0.0/0` address becomes Azure's any-address token, and an `IP`/`ANY` protocol becomes `Any`.
* **Allow-plus-default-deny, not per-rule drop.** Azure evaluates a collection under one action, so permitted traffic is listed and everything else is denied by default rather than by a drop rule.

#### Domain allowlists

Network Firewall filters egress by domain through a rule group built from a domain list: a set of target domains, tagged for TLS SNI or HTTP Host matching, generated as an allowlist or a denylist. Azure expresses the same control as an application rule collection, where each rule names a set of destination FQDNs and the protocol (HTTP or HTTPS) the match applies to. A domain list translates into that collection: the domains become the destination FQDNs, and a TLS-SNI target maps to an HTTPS rule while an HTTP-Host target maps to an HTTP rule.

AWS and Azure spell wildcards differently, and the build reconciles it. A Network Firewall entry that begins with a leading dot (`.example.com`, meaning the domain and its subdomains) becomes Azure's `*.example.com` form. An exact domain stays as it is. The result is that egress a Network Firewall policy allowed to `*.example.com` is allowed to the same set of hosts on Azure.

* **Domains become destination FQDNs:** each domain-list target lands in the application rule collection as an FQDN the workload may reach.
* **SNI vs Host sets the protocol:** a TLS-SNI target becomes an HTTPS rule; an HTTP-Host target becomes an HTTP rule.
* **Leading-dot wildcards translate.** `.example.com` becomes Azure's `*.example.com`, matching the domain and its subdomains.

#### Suricata signatures and TLS inspection

Two Network Firewall capabilities are deep-packet features rather than allow/deny rules, and Azure serves them through its Premium tier rather than through a rule collection. The first is the Suricata signature engine: a rule group can hold raw Suricata IDS/IPS rule strings that match on packet content, not only the 5-tuple. Azure Firewall Premium runs its own signature-based intrusion detection and prevention, so the protection has a native equivalent, but the AWS signature text is not a rule collection and does not translate into one. The build surfaces the signatures so the operator can enable equivalent detection on Premium.

The second is TLS inspection. Network Firewall can decrypt outbound TLS with a certificate and inspect the plaintext against its rules. Azure Firewall Premium terminates and inspects TLS as a distinct policy capability, separate from the rule collections. The build does not recreate the decryption configuration inside a rule; it reports the TLS-inspection configuration as an advanced feature to enable on Premium. Flow and alert logging is the same story: Network Firewall's logging configuration is replaced by Azure Firewall's own diagnostic logs rather than emitted as a rule.

* **Suricata → Premium intrusion detection:** the signature protection runs on Azure Firewall Premium's intrusion detection, but the AWS signature text is surfaced for the operator to enable, not converted into a rule.
* **TLS inspection → Premium TLS inspection:** outbound decrypt-and-inspect is a Premium policy capability, reported as an advanced feature rather than recreated in a rule.
* **Logging → diagnostic logs.** Azure Firewall emits flow and rule-hit logs through Azure Monitor diagnostic settings; the AWS logging configuration is not a rule and is not emitted as one.

#### Traffic steering

A firewall only inspects traffic that reaches it, and on both clouds the routing that steers traffic through the firewall is a separate concern from the rules. Network Firewall attaches an inspection endpoint into a subnet, and the VPC route tables send traffic through that endpoint. The exact subnet and route-table wiring depends on the VPC layout, and it is not encoded in the firewall's own rules.

Azure works the same way. The emitted Azure Firewall lives in the `AzureFirewallSubnet`, and the VNet route tables have to point at the firewall's private address for it to inspect a given subnet's traffic. The build emits the firewall, the policy, and the rules, and it declares the inspection subnet as a value the operator supplies, because the right subnet and the routes that steer traffic through the firewall are properties of the customer's network, not of the AWS rule tree. The operator wires the route so traffic is inspected; the firewall and its rules are already in place.

* **The firewall and rules are emitted:** the Azure Firewall, its policy, and the translated rule collections are provisioned at the build.
* **The inspection subnet is supplied by the operator:** the firewall attaches to the `AzureFirewallSubnet`, which is a property of the customer's VNet rather than of the AWS rules.
* **The route is the operator's to wire:** the VNet route tables must point the workload subnets at the firewall for it to inspect their traffic, exactly as the VPC route tables did on AWS.

#### Limitations

The list below is the whole go/no-go picture for Azure Firewall. The allow/deny rule tree translates; the deep-packet features and the routing are where an AWS Network Firewall and Azure Firewall genuinely diverge.

△ Where AWS Network Firewall and Azure Firewall diverge, read before you adopt

* **Suricata signatures do not become rules:** a rule group of raw Suricata IDS/IPS strings has no rule-collection form. Azure Firewall Premium's intrusion detection is the native equivalent, but the signature text is surfaced for the operator to enable, not translated. If a policy leaned on custom Suricata detections, plan to re-express them on Premium.
* **TLS inspection is a Premium capability, not a rule:** outbound TLS decrypt-and-inspect is configured on the Premium policy, separate from the rule collections. The build reports the TLS-inspection configuration rather than recreating it, so it is enabled by the operator after the build.
* **Rule collections enforce one action.** Azure evaluates a network or application rule collection under a single action, so permitted traffic is listed in an allow collection and everything else is denied by default. A policy that mixed pass and drop rules within one rule group is expressed as an allowlist plus the default deny, not as per-rule drops.
* **Stateless custom actions are dropped:** the 5-tuple of a stateless rule translates, but AWS-specific custom actions (publish-metric actions and their dimensions) have no Azure analog and are surfaced, not recreated.
* **Multiple policies merge onto one:** if the stack defines more than one firewall policy, the matched rule groups aggregate into a single Azure policy and rule-collection group. The per-policy separation is reported rather than silently collapsed.
* **Inspection routing is wired by the operator:** the firewall and its rules are emitted, but the AzureFirewallSubnet attachment and the VNet routes that steer traffic through the firewall depend on the customer's network layout and are the operator's to complete.

#### Other considerations

Beyond the rule translation, a few operational realities are worth planning for when a Network Firewall stack moves to Azure Firewall.

* **Nothing to migrate:** a firewall holds no data. The Azure Firewall, policy, and rules are provisioned at the build, and there is no traffic history or state to copy.
* **Microsoft operates the data plane.** Azure Firewall is a managed service, so once it is provisioned Microsoft runs its availability, scaling, and patching, and Tensor9 is not in the packet path.
* **The tier follows the features you use:** allow/deny filtering runs at the Standard tier; the intrusion-detection and TLS-inspection surfaces the advanced Network Firewall features move onto require the Premium tier, which is an operator choice with its own cost.
* **References to the firewall's identity have no equivalent:** a firewall is a traffic-inspection appliance, not an app-consumed endpoint, so an external read of the firewall's ARN or endpoint identity has no portable Azure equivalent and is reported rather than repointed.

## On OCI

| Operation                     | Area             | Support      | Depth        | Notes                                                                                                                                                                  |
| ----------------------------- | ---------------- | ------------ | ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Suricata rule strings         | Advanced rules   | Partial      | Most usage   | raw Suricata signatures re-home onto the OCI Network Firewall's own inspection surface, not a plain security rule; surfaced, never silently dropped                    |
| TLS inspection                | Advanced rules   | Out of scope | Full surface | aws\_networkfirewall\_tls\_inspection\_configuration re-homes onto OCI decryption profiles / rules (a distinct surface), surfaced not recreated                        |
| Flow / alert logging          | Observability    | Out of scope | Full surface | aws\_networkfirewall\_logging\_configuration is replaced by the OCI Network Firewall's own logging, not a translated rule                                              |
| 5-tuple stateful rules        | Rule translation | Supported    | Common       | each stateful\_rule projects onto a security rule whose condition references emitted address lists (source / destination CIDR) + a service (the destination port)      |
| Domain allowlists / denylists | Rule translation | Supported    | Most usage   | a rules\_source\_list projects onto a url\_list + a security rule whose condition references it; ALLOWLIST → ALLOW, DENYLIST → DROP                                    |
| Stateless 5-tuple rules       | Rule translation | Partial      | Most usage   | the 5-tuple match projects; AWS-specific custom actions have no OCI analog and are surfaced, not recreated                                                             |
| VPC inspection routing        | Traffic steering | Partial      | Common       | the firewall + policy + rules emit; the firewall's subnet attachment + route-table steering is deployment-specific and wired by the operator (surfaced, never assumed) |

#### How it works

An AWS Network Firewall is a managed firewall attached to a firewall policy, and the policy references a tree of rule groups that decide what traffic to allow, drop, or alert on. To run that same protection on the customer's OCI, Tensor9 reads the firewall, its policy, and the whole rule-group tree, and emits the Oracle-native equivalent: an **OCI Network Firewall** attached to an **OCI Network Firewall Policy** whose security rules state the translated decisions.

The OCI Network Firewall is a managed, stateful firewall, the same category of product as Network Firewall. Oracle runs its data plane, so once the firewall is attached to a subnet and the route points at it, it inspects packets directly and Tensor9 is not in the path. The allow/deny rules become security rules, though OCI expresses them through named objects rather than inline values, which the next section walks through. The Suricata signature engine and TLS inspection move onto the firewall's own inspection surface and decryption profiles, named below rather than assumed.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTk2IiB2aWV3Qm94PSIwIDAgODM2IDE5NiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBBV1MgYSB3b3JrbG9hZCBzdWJuZXQgcm91dGVzIGVncmVzcyB0aHJvdWdoIGEgbWFuYWdlZCBOZXR3b3JrIEZpcmV3YWxsIGVuZHBvaW50IHRoYXQgaW5zcGVjdHMgaXQgYmVmb3JlIHRoZSBpbnRlcm5ldC4gT24gT0NJIHRoZSBzYW1lIHdvcmtsb2FkIHN1Ym5ldCByb3V0ZXMgdGhyb3VnaCBhbiBPQ0kgTmV0d29yayBGaXJld2FsbCB0aGUgYnVpbGQgZW1pdHMsIHdoaWNoIGluc3BlY3RzIGl0IHRoZSBzYW1lIHdheTsgdGhlIGZpcmV3YWxsIGluc3BlY3RzIHBhY2tldHMgZGlyZWN0bHkgYW5kIG5vdGhpbmcgb2YgVGVuc29yOSBzaXRzIGluIHRoZSBwYXRoLiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6IzMzNDE1NX08L3N0eWxlPgo8cmVjdCB4PSIxNiIgeT0iNDYiIHdpZHRoPSIzOTIiIGhlaWdodD0iMTM0IiByeD0iMTQiIGZpbGw9IiNmOGZhZmMiIHN0cm9rZT0iI2NiZDVlMSIgc3Ryb2tlLXdpZHRoPSIxLjQiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNSIvPgo8dGV4dCB4PSIzMCIgeT0iNjYiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4Ij5PTiBBV1MgVE9EQVk8L3RleHQ+CjxyZWN0IHg9IjMwIiB5PSI4OCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI2NiIgcng9IjExIiBmaWxsPSIjZmZmIiBzdHJva2U9IiNlMmU4ZjAiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9Ijg1IiB5PSIxMTYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTJweCI+V29ya2xvYWQ8L3RleHQ+Cjx0ZXh0IHg9Ijg1IiB5PSIxMzMiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiIj5zdWJuZXQ8L3RleHQ+CjxsaW5lIHgxPSIxNDAiIHkxPSIxMjEiIHgyPSIxOTYiIHkyPSIxMjEiIHN0cm9rZT0iIzk0YTNiOCIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjbmZvMSkiLz4KPHRleHQgeD0iMTY4IiB5PSIxMTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMHB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6OC41cHgiPnJvdXRlPC90ZXh0Pgo8cmVjdCB4PSIyMDAiIHk9Ijg4IiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjY2IiByeD0iMTEiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2UyZThmMCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMjc1IiB5PSIxMTYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTEuNXB4Ij5OZXR3b3JrIEZpcmV3YWxsPC90ZXh0Pgo8dGV4dCB4PSIyNzUiIHk9IjEzMyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGIiPmVuZHBvaW50LCBpbnNwZWN0czwvdGV4dD4KPGxpbmUgeDE9IjM1MCIgeTE9IjEyMSIgeDI9IjM5NiIgeTI9IjEyMSIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNuZm8xKSIvPgo8dGV4dCB4PSIzNzQiIHk9IjExMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo4LjVweCI+d2ViPC90ZXh0Pgo8cmVjdCB4PSI0MjgiIHk9IjQ2IiB3aWR0aD0iMzkyIiBoZWlnaHQ9IjEzNCIgcng9IjE0IiBmaWxsPSIjZjhmYWZjIiBzdHJva2U9IiNjYmQ1ZTEiIHN0cm9rZS13aWR0aD0iMS40IiBzdHJva2UtZGFzaGFycmF5PSI1IDUiLz4KPHRleHQgeD0iNDQyIiB5PSI2NiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6IzA0Nzg1NyI+T04gT0NJPC90ZXh0Pgo8cmVjdCB4PSI0NDIiIHk9Ijg4IiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjY2IiByeD0iMTEiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2UyZThmMCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iNDk3IiB5PSIxMTYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTJweCI+V29ya2xvYWQ8L3RleHQ+Cjx0ZXh0IHg9IjQ5NyIgeT0iMTMzIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YiI+c3VibmV0PC90ZXh0Pgo8bGluZSB4MT0iNTUyIiB5MT0iMTIxIiB4Mj0iNjA4IiB5Mj0iMTIxIiBzdHJva2U9IiM5NGEzYjgiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI25mbzEpIi8+Cjx0ZXh0IHg9IjU4MCIgeT0iMTEyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjguNXB4Ij5yb3V0ZTwvdGV4dD4KPHJlY3QgeD0iNjEyIiB5PSI4NCIgd2lkdGg9IjE1MCIgaGVpZ2h0PSI3NCIgcng9IjExIiBmaWxsPSIjZWNmZGY1IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS43Ii8+Cjx0ZXh0IHg9IjY4NyIgeT0iMTE0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjExLjVweCI+TmV0d29yayBGaXJld2FsbDwvdGV4dD4KPHRleHQgeD0iNjg3IiB5PSIxMzEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTciPisgcG9saWN5LCBpbnNwZWN0czwvdGV4dD4KPGxpbmUgeDE9Ijc2MiIgeTE9IjEyMSIgeDI9IjgwOCIgeTI9IjEyMSIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNuZm8xKSIvPgo8dGV4dCB4PSI3ODYiIHk9IjExMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo4LjVweCI+d2ViPC90ZXh0Pgo8ZGVmcz48bWFya2VyIGlkPSJuZm8xIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+PC9kZWZzPgo8L3N2Zz4=" alt="On AWS a workload subnet routes egress through a managed Network Firewall endpoint that inspects it before the internet. On OCI the same workload subnet routes through an OCI Network Firewall the build emits, which inspects it the same way; the firewall inspects packets directly and nothing of Tensor9 sits in the path." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTk2IiB2aWV3Qm94PSIwIDAgODM2IDE5NiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBBV1MgYSB3b3JrbG9hZCBzdWJuZXQgcm91dGVzIGVncmVzcyB0aHJvdWdoIGEgbWFuYWdlZCBOZXR3b3JrIEZpcmV3YWxsIGVuZHBvaW50IHRoYXQgaW5zcGVjdHMgaXQgYmVmb3JlIHRoZSBpbnRlcm5ldC4gT24gT0NJIHRoZSBzYW1lIHdvcmtsb2FkIHN1Ym5ldCByb3V0ZXMgdGhyb3VnaCBhbiBPQ0kgTmV0d29yayBGaXJld2FsbCB0aGUgYnVpbGQgZW1pdHMsIHdoaWNoIGluc3BlY3RzIGl0IHRoZSBzYW1lIHdheTsgdGhlIGZpcmV3YWxsIGluc3BlY3RzIHBhY2tldHMgZGlyZWN0bHkgYW5kIG5vdGhpbmcgb2YgVGVuc29yOSBzaXRzIGluIHRoZSBwYXRoLiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6I2NiZDVlMX08L3N0eWxlPgo8cmVjdCB4PSIxNiIgeT0iNDYiIHdpZHRoPSIzOTIiIGhlaWdodD0iMTM0IiByeD0iMTQiIGZpbGw9IiMxYTI2MzEiIHN0cm9rZT0iIzNkNGY2NiIgc3Ryb2tlLXdpZHRoPSIxLjQiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNSIvPgo8dGV4dCB4PSIzMCIgeT0iNjYiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4Ij5PTiBBV1MgVE9EQVk8L3RleHQ+CjxyZWN0IHg9IjMwIiB5PSI4OCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI2NiIgcng9IjExIiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDRlNjYiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9Ijg1IiB5PSIxMTYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTJweCI+V29ya2xvYWQ8L3RleHQ+Cjx0ZXh0IHg9Ijg1IiB5PSIxMzMiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4Ij5zdWJuZXQ8L3RleHQ+CjxsaW5lIHgxPSIxNDAiIHkxPSIxMjEiIHgyPSIxOTYiIHkyPSIxMjEiIHN0cm9rZT0iIzQxNGU2MiIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjbmZvMSkiLz4KPHRleHQgeD0iMTY4IiB5PSIxMTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMHB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OC41cHgiPnJvdXRlPC90ZXh0Pgo8cmVjdCB4PSIyMDAiIHk9Ijg4IiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjY2IiByeD0iMTEiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNGU2NiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMjc1IiB5PSIxMTYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTEuNXB4Ij5OZXR3b3JrIEZpcmV3YWxsPC90ZXh0Pgo8dGV4dCB4PSIyNzUiIHk9IjEzMyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDgiPmVuZHBvaW50LCBpbnNwZWN0czwvdGV4dD4KPGxpbmUgeDE9IjM1MCIgeTE9IjEyMSIgeDI9IjM5NiIgeTI9IjEyMSIgc3Ryb2tlPSIjNDE0ZTYyIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNuZm8xKSIvPgo8dGV4dCB4PSIzNzQiIHk9IjExMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo4LjVweCI+d2ViPC90ZXh0Pgo8cmVjdCB4PSI0MjgiIHk9IjQ2IiB3aWR0aD0iMzkyIiBoZWlnaHQ9IjEzNCIgcng9IjE0IiBmaWxsPSIjMWEyNjMxIiBzdHJva2U9IiMzZDRmNjYiIHN0cm9rZS13aWR0aD0iMS40IiBzdHJva2UtZGFzaGFycmF5PSI1IDUiLz4KPHRleHQgeD0iNDQyIiB5PSI2NiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6ICM5MGRlYzgiPk9OIE9DSTwvdGV4dD4KPHJlY3QgeD0iNDQyIiB5PSI4OCIgd2lkdGg9IjExMCIgaGVpZ2h0PSI2NiIgcng9IjExIiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDRlNjYiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjQ5NyIgeT0iMTE2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjEycHgiPldvcmtsb2FkPC90ZXh0Pgo8dGV4dCB4PSI0OTciIHk9IjEzMyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDgiPnN1Ym5ldDwvdGV4dD4KPGxpbmUgeDE9IjU1MiIgeTE9IjEyMSIgeDI9IjYwOCIgeTI9IjEyMSIgc3Ryb2tlPSIjNDE0ZTYyIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNuZm8xKSIvPgo8dGV4dCB4PSI1ODAiIHk9IjExMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo4LjVweCI+cm91dGU8L3RleHQ+CjxyZWN0IHg9IjYxMiIgeT0iODQiIHdpZHRoPSIxNTAiIGhlaWdodD0iNzQiIHJ4PSIxMSIgZmlsbD0iIzFhMzEyNiIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSI2ODciIHk9IjExNCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZToxMS41cHgiPk5ldHdvcmsgRmlyZXdhbGw8L3RleHQ+Cjx0ZXh0IHg9IjY4NyIgeT0iMTMxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4Ij4rIHBvbGljeSwgaW5zcGVjdHM8L3RleHQ+CjxsaW5lIHgxPSI3NjIiIHkxPSIxMjEiIHgyPSI4MDgiIHkyPSIxMjEiIHN0cm9rZT0iIzQxNGU2MiIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjbmZvMSkiLz4KPHRleHQgeD0iNzg2IiB5PSIxMTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMHB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OC41cHgiPndlYjwvdGV4dD4KPGRlZnM+PG1hcmtlciBpZD0ibmZvMSIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNi41IiBtYXJrZXJIZWlnaHQ9IjYuNSIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPjxwYXRoIGQ9Ik0wLDAgTDEwLDUgTDAsMTAgeiIgZmlsbD0iIzk0YTNiOCIvPjwvbWFya2VyPjwvZGVmcz4KPC9zdmc+" alt="On AWS a workload subnet routes egress through a managed Network Firewall endpoint that inspects it before the internet. On OCI the same workload subnet routes through an OCI Network Firewall the build emits, which inspects it the same way; the firewall inspects packets directly and nothing of Tensor9 sits in the path." />
</div>

<p className="t9-caption">The workload and its routing are untouched; only the firewall that inspects the traffic changes, and it runs in OCI.</p>

#### Architecture

Network Firewall spreads its configuration across the firewall, its policy, and the rule groups the policy references. The OCI Network Firewall keeps the firewall and policy, but its rules are shaped differently. A **security rule** in the policy does not hold a CIDR, a port, or a domain inline. Its condition references **named objects**: an address list for source and destination addresses, a service for a port, and a url list for domains.

So the build emits more than a rule. For each translated rule it emits the address lists, services, and url lists the rule needs, then a security rule whose condition points at them by name. That indirection has a real payoff: a CIDR that appears in several rules becomes one address list they all reference, rather than being repeated inline. The firewall attaches to a subnet in a compartment, and the security rules take their action (allow, drop, or reject) per rule.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjI2IiB2aWV3Qm94PSIwIDAgODM2IDIyNiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUaGUgT0NJIGZpcmV3YWxsIHRoZSBidWlsZCBlbWl0cyBpcyBhIE5ldHdvcmsgRmlyZXdhbGwgYXR0YWNoZWQgdG8gYSBmaXJld2FsbCBwb2xpY3kuIEEgc2VjdXJpdHkgcnVsZSBpbiB0aGUgcG9saWN5IGRvZXMgbm90IGlubGluZSBpdHMgbWF0Y2g7IGl0cyBjb25kaXRpb24gcmVmZXJlbmNlcyBuYW1lZCBvYmplY3RzIHRoZSBidWlsZCBhbHNvIGVtaXRzOiBhbiBhZGRyZXNzIGxpc3QgZm9yIENJRFJzLCBhIHNlcnZpY2UgZm9yIHBvcnRzLCBhbmQgYSB1cmwgbGlzdCBmb3IgZG9tYWlucy4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiMzMzQxNTV9PC9zdHlsZT4KPHJlY3QgeD0iMTYiIHk9IjM0IiB3aWR0aD0iODA0IiBoZWlnaHQ9IjE3NiIgcng9IjE2IiBmaWxsPSIjZjhmYWZjIiBzdHJva2U9IiNjYmQ1ZTEiIHN0cm9rZS13aWR0aD0iMS40IiBzdHJva2UtZGFzaGFycmF5PSI1IDUiLz4KPHRleHQgeD0iMzQiIHk9IjU2IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDojMDQ3ODU3Ij5PQ0kgVkNOPC90ZXh0Pgo8cmVjdCB4PSIzMCIgeT0iODIiIHdpZHRoPSIxNTAiIGhlaWdodD0iMTA0IiByeD0iMTIiIGZpbGw9IiNlY2ZkZjUiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iMTA1IiB5PSIxMjgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6MTJweCI+TmV0d29yayBGaXJld2FsbDwvdGV4dD4KPHRleHQgeD0iMTA1IiB5PSIxNDYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTciPm9uIHlvdXIgc3VibmV0PC90ZXh0Pgo8bGluZSB4MT0iMTgwIiB5MT0iMTM0IiB4Mj0iMjI4IiB5Mj0iMTM0IiBzdHJva2U9IiM5NGEzYjgiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI25mbzIpIi8+Cjx0ZXh0IHg9IjIwNCIgeT0iMTI1IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjguNXB4Ij5wb2xpY3k8L3RleHQ+CjxyZWN0IHg9IjIzMiIgeT0iODIiIHdpZHRoPSIxODAiIGhlaWdodD0iMTA0IiByeD0iMTIiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2UyZThmMCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMzIyIiB5PSIxMDYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTJweCI+ZmlyZXdhbGwgcG9saWN5PC90ZXh0Pgo8cmVjdCB4PSIyNDgiIHk9IjExOCIgd2lkdGg9IjE0OCIgaGVpZ2h0PSIyOCIgcng9IjciIGZpbGw9IiNlY2ZkZjUiIHN0cm9rZT0iI2E3ZjNkMCIvPgo8dGV4dCB4PSIzMjIiIHk9IjEzNyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM0NzU1NjkiPnNlY3VyaXR5IHJ1bGU8L3RleHQ+Cjx0ZXh0IHg9IjMyMiIgeT0iMTcyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YiI+cmVmZXJlbmNlcyBieSBuYW1lPC90ZXh0Pgo8bGluZSB4MT0iNDEyIiB5MT0iMTM0IiB4Mj0iNDYwIiB5Mj0iMTM0IiBzdHJva2U9IiM5NGEzYjgiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI25mbzIpIi8+Cjx0ZXh0IHg9IjQzNiIgeT0iMTI1IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjguNXB4Ij5ieSBuYW1lPC90ZXh0Pgo8cmVjdCB4PSI0NjQiIHk9IjgyIiB3aWR0aD0iMzQwIiBoZWlnaHQ9IjEwNCIgcng9IjEyIiBmaWxsPSIjZmZmIiBzdHJva2U9IiNlMmU4ZjAiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjYzNCIgeT0iMTA0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYTsgZm9udC1zaXplOjEycHgiPm5hbWVkIG9iamVjdHM8L3RleHQ+CjxyZWN0IHg9IjQ3OCIgeT0iMTE0IiB3aWR0aD0iMzEyIiBoZWlnaHQ9IjIyIiByeD0iNiIgZmlsbD0iI2Y4ZmFmYyIgc3Ryb2tlPSIjY2JkNWUxIi8+Cjx0ZXh0IHg9IjQ5MCIgeT0iMTI5IiBzdHlsZT0iZm9udDogMTFweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzQ3NTU2OSI+YWRkcmVzcyBsaXN0ICAgMTAuMC4wLjAvMTY8L3RleHQ+CjxyZWN0IHg9IjQ3OCIgeT0iMTQwIiB3aWR0aD0iMzEyIiBoZWlnaHQ9IjIyIiByeD0iNiIgZmlsbD0iI2Y4ZmFmYyIgc3Ryb2tlPSIjY2JkNWUxIi8+Cjx0ZXh0IHg9IjQ5MCIgeT0iMTU1IiBzdHlsZT0iZm9udDogMTFweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzQ3NTU2OSI+c2VydmljZSAgICAgICAgdGNwIDQ0MzwvdGV4dD4KPHJlY3QgeD0iNDc4IiB5PSIxNjYiIHdpZHRoPSIzMTIiIGhlaWdodD0iMjIiIHJ4PSI2IiBmaWxsPSIjZjhmYWZjIiBzdHJva2U9IiNjYmQ1ZTEiLz4KPHRleHQgeD0iNDkwIiB5PSIxODEiIHN0eWxlPSJmb250OiAxMXB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjNDc1NTY5Ij51cmwgbGlzdCAgICAgICAqLmV4YW1wbGUuY29tPC90ZXh0Pgo8ZGVmcz48bWFya2VyIGlkPSJuZm8yIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+PC9kZWZzPgo8L3N2Zz4=" alt="The OCI firewall the build emits is a Network Firewall attached to a firewall policy. A security rule in the policy does not inline its match; its condition references named objects the build also emits: an address list for CIDRs, a service for ports, and a url list for domains." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjI2IiB2aWV3Qm94PSIwIDAgODM2IDIyNiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUaGUgT0NJIGZpcmV3YWxsIHRoZSBidWlsZCBlbWl0cyBpcyBhIE5ldHdvcmsgRmlyZXdhbGwgYXR0YWNoZWQgdG8gYSBmaXJld2FsbCBwb2xpY3kuIEEgc2VjdXJpdHkgcnVsZSBpbiB0aGUgcG9saWN5IGRvZXMgbm90IGlubGluZSBpdHMgbWF0Y2g7IGl0cyBjb25kaXRpb24gcmVmZXJlbmNlcyBuYW1lZCBvYmplY3RzIHRoZSBidWlsZCBhbHNvIGVtaXRzOiBhbiBhZGRyZXNzIGxpc3QgZm9yIENJRFJzLCBhIHNlcnZpY2UgZm9yIHBvcnRzLCBhbmQgYSB1cmwgbGlzdCBmb3IgZG9tYWlucy4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiNjYmQ1ZTF9PC9zdHlsZT4KPHJlY3QgeD0iMTYiIHk9IjM0IiB3aWR0aD0iODA0IiBoZWlnaHQ9IjE3NiIgcng9IjE2IiBmaWxsPSIjMWEyNjMxIiBzdHJva2U9IiMzZDRmNjYiIHN0cm9rZS13aWR0aD0iMS40IiBzdHJva2UtZGFzaGFycmF5PSI1IDUiLz4KPHRleHQgeD0iMzQiIHk9IjU2IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDogIzkwZGVjOCI+T0NJIFZDTjwvdGV4dD4KPHJlY3QgeD0iMzAiIHk9IjgyIiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjEwNCIgcng9IjEyIiBmaWxsPSIjMWEzMTI2IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS43Ii8+Cjx0ZXh0IHg9IjEwNSIgeT0iMTI4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjEycHgiPk5ldHdvcmsgRmlyZXdhbGw8L3RleHQ+Cjx0ZXh0IHg9IjEwNSIgeT0iMTQ2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4Ij5vbiB5b3VyIHN1Ym5ldDwvdGV4dD4KPGxpbmUgeDE9IjE4MCIgeTE9IjEzNCIgeDI9IjIyOCIgeTI9IjEzNCIgc3Ryb2tlPSIjNDE0ZTYyIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNuZm8yKSIvPgo8dGV4dCB4PSIyMDQiIHk9IjEyNSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo4LjVweCI+cG9saWN5PC90ZXh0Pgo8cmVjdCB4PSIyMzIiIHk9IjgyIiB3aWR0aD0iMTgwIiBoZWlnaHQ9IjEwNCIgcng9IjEyIiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDRlNjYiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjMyMiIgeT0iMTA2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjEycHgiPmZpcmV3YWxsIHBvbGljeTwvdGV4dD4KPHJlY3QgeD0iMjQ4IiB5PSIxMTgiIHdpZHRoPSIxNDgiIGhlaWdodD0iMjgiIHJ4PSI3IiBmaWxsPSIjMWEzMTI2IiBzdHJva2U9IiMzZDY2NTMiLz4KPHRleHQgeD0iMzIyIiB5PSIxMzciIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4Ij5zZWN1cml0eSBydWxlPC90ZXh0Pgo8dGV4dCB4PSIzMjIiIHk9IjE3MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDgiPnJlZmVyZW5jZXMgYnkgbmFtZTwvdGV4dD4KPGxpbmUgeDE9IjQxMiIgeTE9IjEzNCIgeDI9IjQ2MCIgeTI9IjEzNCIgc3Ryb2tlPSIjNDE0ZTYyIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNuZm8yKSIvPgo8dGV4dCB4PSI0MzYiIHk9IjEyNSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo4LjVweCI+YnkgbmFtZTwvdGV4dD4KPHJlY3QgeD0iNDY0IiB5PSI4MiIgd2lkdGg9IjM0MCIgaGVpZ2h0PSIxMDQiIHJ4PSIxMiIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q0ZTY2IiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSI2MzQiIHk9IjEwNCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMnB4Ij5uYW1lZCBvYmplY3RzPC90ZXh0Pgo8cmVjdCB4PSI0NzgiIHk9IjExNCIgd2lkdGg9IjMxMiIgaGVpZ2h0PSIyMiIgcng9IjYiIGZpbGw9IiMxYTI2MzEiIHN0cm9rZT0iIzNkNGY2NiIvPgo8dGV4dCB4PSI0OTAiIHk9IjEyOSIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDgiPmFkZHJlc3MgbGlzdCAgIDEwLjAuMC4wLzE2PC90ZXh0Pgo8cmVjdCB4PSI0NzgiIHk9IjE0MCIgd2lkdGg9IjMxMiIgaGVpZ2h0PSIyMiIgcng9IjYiIGZpbGw9IiMxYTI2MzEiIHN0cm9rZT0iIzNkNGY2NiIvPgo8dGV4dCB4PSI0OTAiIHk9IjE1NSIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDgiPnNlcnZpY2UgICAgICAgIHRjcCA0NDM8L3RleHQ+CjxyZWN0IHg9IjQ3OCIgeT0iMTY2IiB3aWR0aD0iMzEyIiBoZWlnaHQ9IjIyIiByeD0iNiIgZmlsbD0iIzFhMjYzMSIgc3Ryb2tlPSIjM2Q0ZjY2Ii8+Cjx0ZXh0IHg9IjQ5MCIgeT0iMTgxIiBzdHlsZT0iZm9udDogMTFweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogI2M5Y2ZkOCI+dXJsIGxpc3QgICAgICAgKi5leGFtcGxlLmNvbTwvdGV4dD4KPGRlZnM+PG1hcmtlciBpZD0ibmZvMiIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNi41IiBtYXJrZXJIZWlnaHQ9IjYuNSIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPjxwYXRoIGQ9Ik0wLDAgTDEwLDUgTDAsMTAgeiIgZmlsbD0iIzk0YTNiOCIvPjwvbWFya2VyPjwvZGVmcz4KPC9zdmc+" alt="The OCI firewall the build emits is a Network Firewall attached to a firewall policy. A security rule in the policy does not inline its match; its condition references named objects the build also emits: an address list for CIDRs, a service for ports, and a url list for domains." />
</div>

<p className="t9-caption">A security rule holds no addresses or ports of its own; its condition references named address lists, services, and url lists the build emits alongside it.</p>

#### How the rule groups map

The policy's rule groups translate by kind. A stateful rule group of 5-tuple rules becomes a set of security rules: for each rule the build emits an address list for the source and destination CIDRs and a service for the destination port, then a security rule whose condition references them and whose action is taken from the AWS action (pass becomes allow, drop becomes drop, reject becomes reject). A rule group built from a domain list becomes a url list holding the domains and a security rule that references it, allow for an allowlist and drop for a denylist.

A rule group written as raw Suricata signatures is the one kind with no security-rule form. The OCI Network Firewall runs its own signature-based inspection as a capability of the same firewall rather than as a security rule, so the build surfaces those signatures for the operator to enable on the firewall's inspection surface rather than discarding them. The allow/deny rules that make up the bulk of most policies translate directly.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjUwIiB2aWV3Qm94PSIwIDAgODM2IDI1MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJFYWNoIEFXUyBydWxlIGdyb3VwIG1hcHMgdG8gYW4gT0NJIHNlY3VyaXR5IHJ1bGU6IGEgc3RhdGVmdWwgNS10dXBsZSBncm91cCBiZWNvbWVzIGEgc2VjdXJpdHkgcnVsZSByZWZlcmVuY2luZyBhbiBhZGRyZXNzIGxpc3QgYW5kIGEgc2VydmljZSwgYSBkb21haW4gYWxsb3dsaXN0IGJlY29tZXMgYSB1cmwgbGlzdCBhbmQgYSBzZWN1cml0eSBydWxlIHRoYXQgcmVmZXJlbmNlcyBpdCwgYW5kIGEgU3VyaWNhdGEgcnVsZS1zdHJpbmcgZ3JvdXAgaGFzIG5vIHNlY3VyaXR5LXJ1bGUgZm9ybSBhbmQgbW92ZXMgb250byB0aGUgZmlyZXdhbGwncyBpbnNwZWN0aW9uIHN1cmZhY2UuIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojMzM0MTU1fTwvc3R5bGU+Cjx0ZXh0IHg9IjMwIiB5PSIzMiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6IzY0NzQ4YiI+QVdTIFJVTEUgR1JPVVBTPC90ZXh0Pgo8cmVjdCB4PSIzMCIgeT0iNDQiIHdpZHRoPSIzMDAiIGhlaWdodD0iNDYiIHJ4PSIxMCIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZTJlOGYwIiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSI0NiIgeT0iNjYiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTEuNXB4Ij5zdGF0ZWZ1bCA1LXR1cGxlIHJ1bGVzPC90ZXh0Pgo8dGV4dCB4PSI0NiIgeT0iODIiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiIj50Y3AgMTAuMC4wLjAvMTYg4oaSIGFueTo0NDMgcGFzczwvdGV4dD4KPHJlY3QgeD0iMzAiIHk9IjEwMiIgd2lkdGg9IjMwMCIgaGVpZ2h0PSI0NiIgcng9IjEwIiBmaWxsPSIjZmZmIiBzdHJva2U9IiNlMmU4ZjAiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjQ2IiB5PSIxMjQiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTEuNXB4Ij5kb21haW4gYWxsb3dsaXN0PC90ZXh0Pgo8dGV4dCB4PSI0NiIgeT0iMTQwIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YiI+LmV4YW1wbGUuY29tICAoVExTX1NOSSk8L3RleHQ+CjxyZWN0IHg9IjMwIiB5PSIxNjAiIHdpZHRoPSIzMDAiIGhlaWdodD0iNDYiIHJ4PSIxMCIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZmNhNWE1IiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSI0NiIgeT0iMTgyIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYTsgZm9udC1zaXplOjExLjVweCI+U3VyaWNhdGEgcnVsZSBzdHJpbmc8L3RleHQ+Cjx0ZXh0IHg9IjQ2IiB5PSIxOTgiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiIj5hbGVydCB0Y3AgYW55IGFueSAtJmd0OyAuLi48L3RleHQ+CjxsaW5lIHgxPSIzMzYiIHkxPSI2NyIgeDI9IjQ3MCIgeTI9IjY3IiBzdHJva2U9IiM5NGEzYjgiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI25mbzMpIi8+CjxsaW5lIHgxPSIzMzYiIHkxPSIxMjUiIHgyPSI0NzAiIHkyPSIxMjUiIHN0cm9rZT0iIzk0YTNiOCIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjbmZvMykiLz4KPGxpbmUgeDE9IjMzNiIgeTE9IjE4MyIgeDI9IjQ3MCIgeTI9IjE4MyIgc3Ryb2tlPSIjZGMyNjI2IiBzdHJva2Utd2lkdGg9IjEuNiIgc3Ryb2tlLWRhc2hhcnJheT0iNCAzIiBtYXJrZXItZW5kPSJ1cmwoI25mbzNyKSIvPgo8dGV4dCB4PSI0MDMiIHk9IjE3NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo4LjVweDtmaWxsOiNiOTFjMWMiPm1vdmVzIHRvPC90ZXh0Pgo8dGV4dCB4PSI0NzYiIHk9IjMyIiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDojMDQ3ODU3Ij5PQ0kgRklSRVdBTEwgUE9MSUNZPC90ZXh0Pgo8cmVjdCB4PSI0NzYiIHk9IjQ0IiB3aWR0aD0iMzMwIiBoZWlnaHQ9IjQ2IiByeD0iMTAiIGZpbGw9IiNlY2ZkZjUiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjYiLz4KPHRleHQgeD0iNDkyIiB5PSI2NiIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTc7IGZvbnQtc2l6ZToxMS41cHgiPnNlY3VyaXR5IHJ1bGUgKyBhZGRyZXNzIGxpc3Q8L3RleHQ+Cjx0ZXh0IHg9IjQ5MiIgeT0iODIiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTciPkFMTE9XICAxMC4wLjAuMC8xNiAgc2VydmljZSB0Y3AgNDQzPC90ZXh0Pgo8cmVjdCB4PSI0NzYiIHk9IjEwMiIgd2lkdGg9IjMzMCIgaGVpZ2h0PSI0NiIgcng9IjEwIiBmaWxsPSIjZWNmZGY1IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS42Ii8+Cjx0ZXh0IHg9IjQ5MiIgeT0iMTI0IiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjExLjVweCI+dXJsIGxpc3QgKyBzZWN1cml0eSBydWxlPC90ZXh0Pgo8dGV4dCB4PSI0OTIiIHk9IjE0MCIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NyI+QUxMT1cgICouZXhhbXBsZS5jb208L3RleHQ+CjxyZWN0IHg9IjQ3NiIgeT0iMTYwIiB3aWR0aD0iMzMwIiBoZWlnaHQ9IjQ2IiByeD0iMTAiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2UyZThmMCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iNDkyIiB5PSIxODIiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTEuNXB4Ij5maXJld2FsbCBpbnNwZWN0aW9uIHN1cmZhY2U8L3RleHQ+Cjx0ZXh0IHg9IjQ5MiIgeT0iMTk4IiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YiI+c2lnbmF0dXJlIGluc3BlY3Rpb24sIHNhbWUgZmlyZXdhbGw8L3RleHQ+CjxkZWZzPgo8bWFya2VyIGlkPSJuZm8zIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+CjxtYXJrZXIgaWQ9Im5mbzNyIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjZGMyNjI2Ii8+PC9tYXJrZXI+CjwvZGVmcz4KPC9zdmc+" alt="Each AWS rule group maps to an OCI security rule: a stateful 5-tuple group becomes a security rule referencing an address list and a service, a domain allowlist becomes a url list and a security rule that references it, and a Suricata rule-string group has no security-rule form and moves onto the firewall's inspection surface." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjUwIiB2aWV3Qm94PSIwIDAgODM2IDI1MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJFYWNoIEFXUyBydWxlIGdyb3VwIG1hcHMgdG8gYW4gT0NJIHNlY3VyaXR5IHJ1bGU6IGEgc3RhdGVmdWwgNS10dXBsZSBncm91cCBiZWNvbWVzIGEgc2VjdXJpdHkgcnVsZSByZWZlcmVuY2luZyBhbiBhZGRyZXNzIGxpc3QgYW5kIGEgc2VydmljZSwgYSBkb21haW4gYWxsb3dsaXN0IGJlY29tZXMgYSB1cmwgbGlzdCBhbmQgYSBzZWN1cml0eSBydWxlIHRoYXQgcmVmZXJlbmNlcyBpdCwgYW5kIGEgU3VyaWNhdGEgcnVsZS1zdHJpbmcgZ3JvdXAgaGFzIG5vIHNlY3VyaXR5LXJ1bGUgZm9ybSBhbmQgbW92ZXMgb250byB0aGUgZmlyZXdhbGwncyBpbnNwZWN0aW9uIHN1cmZhY2UuIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojY2JkNWUxfTwvc3R5bGU+Cjx0ZXh0IHg9IjMwIiB5PSIzMiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6ICNjOWNmZDgiPkFXUyBSVUxFIEdST1VQUzwvdGV4dD4KPHJlY3QgeD0iMzAiIHk9IjQ0IiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjQ2IiByeD0iMTAiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNGU2NiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iNDYiIHk9IjY2IiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjExLjVweCI+c3RhdGVmdWwgNS10dXBsZSBydWxlczwvdGV4dD4KPHRleHQgeD0iNDYiIHk9IjgyIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkOCI+dGNwIDEwLjAuMC4wLzE2IOKGkiBhbnk6NDQzIHBhc3M8L3RleHQ+CjxyZWN0IHg9IjMwIiB5PSIxMDIiIHdpZHRoPSIzMDAiIGhlaWdodD0iNDYiIHJ4PSIxMCIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q0ZTY2IiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSI0NiIgeT0iMTI0IiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjExLjVweCI+ZG9tYWluIGFsbG93bGlzdDwvdGV4dD4KPHRleHQgeD0iNDYiIHk9IjE0MCIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDgiPi5leGFtcGxlLmNvbSAgKFRMU19TTkkpPC90ZXh0Pgo8cmVjdCB4PSIzMCIgeT0iMTYwIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjQ2IiByeD0iMTAiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzY2M2QzZCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iNDYiIHk9IjE4MiIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMS41cHgiPlN1cmljYXRhIHJ1bGUgc3RyaW5nPC90ZXh0Pgo8dGV4dCB4PSI0NiIgeT0iMTk4IiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkOCI+YWxlcnQgdGNwIGFueSBhbnkgLSZndDsgLi4uPC90ZXh0Pgo8bGluZSB4MT0iMzM2IiB5MT0iNjciIHgyPSI0NzAiIHkyPSI2NyIgc3Ryb2tlPSIjNDE0ZTYyIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNuZm8zKSIvPgo8bGluZSB4MT0iMzM2IiB5MT0iMTI1IiB4Mj0iNDcwIiB5Mj0iMTI1IiBzdHJva2U9IiM0MTRlNjIiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI25mbzMpIi8+CjxsaW5lIHgxPSIzMzYiIHkxPSIxODMiIHgyPSI0NzAiIHkyPSIxODMiIHN0cm9rZT0iI2RjMjYyNiIgc3Ryb2tlLXdpZHRoPSIxLjYiIHN0cm9rZS1kYXNoYXJyYXk9IjQgMyIgbWFya2VyLWVuZD0idXJsKCNuZm8zcikiLz4KPHRleHQgeD0iNDAzIiB5PSIxNzYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMHB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OC41cHg7ZmlsbDogI2RlOTA5MCI+bW92ZXMgdG88L3RleHQ+Cjx0ZXh0IHg9IjQ3NiIgeT0iMzIiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiAjOTBkZWM4Ij5PQ0kgRklSRVdBTEwgUE9MSUNZPC90ZXh0Pgo8cmVjdCB4PSI0NzYiIHk9IjQ0IiB3aWR0aD0iMzMwIiBoZWlnaHQ9IjQ2IiByeD0iMTAiIGZpbGw9IiMxYTMxMjYiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjYiLz4KPHRleHQgeD0iNDkyIiB5PSI2NiIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZToxMS41cHgiPnNlY3VyaXR5IHJ1bGUgKyBhZGRyZXNzIGxpc3Q8L3RleHQ+Cjx0ZXh0IHg9IjQ5MiIgeT0iODIiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzgiPkFMTE9XICAxMC4wLjAuMC8xNiAgc2VydmljZSB0Y3AgNDQzPC90ZXh0Pgo8cmVjdCB4PSI0NzYiIHk9IjEwMiIgd2lkdGg9IjMzMCIgaGVpZ2h0PSI0NiIgcng9IjEwIiBmaWxsPSIjMWEzMTI2IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS42Ii8+Cjx0ZXh0IHg9IjQ5MiIgeT0iMTI0IiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjExLjVweCI+dXJsIGxpc3QgKyBzZWN1cml0eSBydWxlPC90ZXh0Pgo8dGV4dCB4PSI0OTIiIHk9IjE0MCIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjOCI+QUxMT1cgICouZXhhbXBsZS5jb208L3RleHQ+CjxyZWN0IHg9IjQ3NiIgeT0iMTYwIiB3aWR0aD0iMzMwIiBoZWlnaHQ9IjQ2IiByeD0iMTAiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNGU2NiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iNDkyIiB5PSIxODIiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTEuNXB4Ij5maXJld2FsbCBpbnNwZWN0aW9uIHN1cmZhY2U8L3RleHQ+Cjx0ZXh0IHg9IjQ5MiIgeT0iMTk4IiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkOCI+c2lnbmF0dXJlIGluc3BlY3Rpb24sIHNhbWUgZmlyZXdhbGw8L3RleHQ+CjxkZWZzPgo8bWFya2VyIGlkPSJuZm8zIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+CjxtYXJrZXIgaWQ9Im5mbzNyIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjZGMyNjI2Ii8+PC9tYXJrZXI+CjwvZGVmcz4KPC9zdmc+" alt="Each AWS rule group maps to an OCI security rule: a stateful 5-tuple group becomes a security rule referencing an address list and a service, a domain allowlist becomes a url list and a security rule that references it, and a Suricata rule-string group has no security-rule form and moves onto the firewall's inspection surface." />
</div>

<p className="t9-caption">The allow/deny rule groups translate onto security rules over emitted address lists, services, and url lists; a Suricata signature group has no security-rule form and points at the firewall's inspection surface instead.</p>

#### Stateful 5-tuple rules

A stateful rule in Network Firewall matches on the 5-tuple: protocol, source address, destination address, source port, and destination port, with an action of pass, drop, or alert. An OCI security rule matches on the same shape, but through the named objects rather than inline values. For each rule the build emits an address list for the source CIDR and one for the destination CIDR, a service for the destination port, and a security rule whose condition names those objects. Where the AWS rule uses `ANY` for an address or port, that part of the condition is omitted, so the rule matches any value there.

The action maps per rule. A pass becomes `ALLOW`, a drop becomes `DROP`, and a reject becomes `REJECT`, which is the OCI verb for an actively refused connection. Because the addresses and ports live in named objects, a CIDR or port that several rules share is emitted once and referenced by each rule, so the emitted policy stays compact even when the AWS rule set repeats the same networks.

* **Match lives in named objects:** a `tcp` rule from `10.0.0.0/16` to any host on port `443` becomes an address list, a service, and a security rule whose condition references them.
* **The action is kept per rule:** pass becomes `ALLOW`, drop becomes `DROP`, and reject becomes `REJECT`.
* **Shared networks are emitted once:** a CIDR or port used by several rules becomes one address list or service the rules reference, and an `ANY` value is omitted from the condition so it matches anything.

#### Domain allowlists

Network Firewall filters egress by domain through a rule group built from a domain list: a set of target domains, tagged for TLS SNI or HTTP Host matching, generated as an allowlist or a denylist. The OCI Network Firewall expresses the same control through a **url list** and a security rule that references it. A domain list becomes a url list holding the domains as URL patterns, and a security rule whose condition names that url list, with an action of allow for an allowlist or drop for a denylist.

The domains become URL patterns. A Network Firewall entry that begins with a leading dot (`.example.com`, the domain and its subdomains) becomes the OCI wildcard URL pattern, and an exact domain stays as it is. Egress a Network Firewall policy allowed to `*.example.com` is allowed to the same set of hosts through the url list the security rule references.

* **Domains become a url list:** each domain-list target lands in a url list as a URL pattern, and a security rule references the list.
* **Allowlist vs denylist sets the action:** an allowlist becomes an `ALLOW` security rule and a denylist becomes a `DROP` one.
* **Leading-dot wildcards translate.** `.example.com` becomes the OCI wildcard URL pattern, matching the domain and its subdomains.

#### Suricata signatures and TLS inspection

Two Network Firewall capabilities are deep-packet features rather than allow/deny rules, and the OCI Network Firewall serves them as capabilities of the same firewall rather than as security rules. The first is the Suricata signature engine: a rule group can hold raw Suricata IDS/IPS rule strings that match on packet content. The OCI Network Firewall runs its own signature-based intrusion detection and prevention, so the protection has a native form, but the AWS signature text is not a security rule and does not translate into one. The build surfaces the signatures for the operator to enable on the firewall's inspection surface.

The second is TLS inspection. Network Firewall can decrypt outbound TLS with a certificate and inspect the plaintext. The OCI Network Firewall decrypts and inspects TLS through decryption profiles and decryption rules , a distinct part of the policy from the security rules. The build reports the TLS-inspection configuration for the operator to attach rather than recreating it in a security rule. Logging follows the same pattern: the OCI Network Firewall records traffic through its own logging, so Network Firewall's separate logging configuration is replaced by the firewall's logging rather than emitted as a rule.

* **Suricata → the firewall's inspection surface:** signature-based inspection is a capability of the same firewall; the AWS signature text is surfaced for the operator to enable, not converted into a security rule.
* **TLS inspection → decryption profiles and rules:** outbound decrypt-and-inspect is a distinct part of the policy, reported as an advanced feature rather than recreated in a security rule.
* **Logging is the firewall's own:** the OCI Network Firewall records traffic through its logging; the AWS logging configuration is not a rule and is not emitted as one.

#### Traffic steering

A firewall only inspects traffic that reaches it, and on both clouds the routing that steers traffic through the firewall is separate from the rules. Network Firewall attaches an inspection endpoint into a subnet, and the VPC route tables send traffic through that endpoint. The exact subnet and route-table wiring depends on the VPC layout and is not part of the firewall's rules.

The OCI Network Firewall attaches to a subnet in a compartment, and the VCN route tables have to point at the firewall's private address for it to inspect a given subnet's traffic. The build emits the firewall, the policy, the security rules, and the named objects the rules reference, and it declares the compartment and the firewall subnet as values the operator supplies, because those are properties of the customer's tenancy and network rather than of the AWS rule tree. The operator wires the route so traffic is inspected; the firewall and its rules are already in place.

* **The firewall, rules, and named objects are emitted:** the OCI Network Firewall, its policy, the security rules, and the address lists, services, and url lists they reference are provisioned at the build.
* **The compartment and subnet are supplied by the operator:** the firewall attaches to a subnet in a compartment, which are properties of the customer's tenancy rather than of the AWS rules.
* **The route is the operator's to wire:** the VCN route tables must point the workload subnets at the firewall for it to inspect their traffic, exactly as the VPC route tables did on AWS.

#### Limitations

The list below is the whole go/no-go picture for the OCI Network Firewall. The allow/deny rule tree translates into security rules over named objects; the deep-packet features and the routing are where an AWS Network Firewall and the OCI Network Firewall genuinely diverge.

△ Where AWS Network Firewall and the OCI Network Firewall diverge, read before you adopt

* **Suricata signatures do not become rules:** a rule group of raw Suricata IDS/IPS strings has no security-rule form. The OCI Network Firewall's own signature inspection is the native form, but the signature text is surfaced for the operator to enable, not translated. If a policy leaned on custom Suricata detections, plan to re-express them on the firewall's inspection surface.
* **TLS inspection is a separate part of the policy:** outbound TLS decrypt-and-inspect is a decryption profile and decryption rules, not a security rule. The build reports the TLS-inspection configuration rather than recreating it, so it is attached by the operator after the build.
* **Rules match through named objects:** a security rule references address lists, services, and url lists rather than inlining a CIDR or port. The translation is faithful, but the emitted policy is a set of named objects plus rules rather than a flat rule list, which is worth knowing when reading or auditing it.
* **Stateless custom actions are dropped:** the 5-tuple of a stateless rule translates, but AWS-specific custom actions (publish-metric actions and their dimensions) have no OCI analog and are surfaced, not recreated.
* **Multiple policies merge onto one:** if the stack defines more than one firewall policy, the matched rule groups aggregate into a single OCI policy. The per-policy separation is reported rather than silently collapsed.
* **Inspection routing is wired by the operator:** the firewall and its rules are emitted, but the compartment, the firewall subnet, and the VCN routes that steer traffic through the firewall depend on the customer's tenancy and network and are the operator's to complete.

#### Other considerations

Beyond the rule translation, a few operational realities are worth planning for when a Network Firewall stack moves to the OCI Network Firewall.

* **Nothing to migrate:** a firewall holds no data. The firewall, policy, rules, and named objects are provisioned at the build, and there is no traffic history or state to copy.
* **Oracle operates the data plane:** the OCI Network Firewall is a managed service, so once it is attached Oracle runs its availability, scaling, and patching, and Tensor9 is not in the packet path.
* **The policy reads as named objects plus rules:** auditing the emitted firewall means reading the security rules together with the address lists, services, and url lists they reference, which is the OCI shape rather than a single inline rule list.
* **References to the firewall's identity have no equivalent:** a firewall is a traffic-inspection appliance, not an app-consumed endpoint, so an external read of the firewall's ARN or endpoint identity has no portable OCI equivalent and is reported rather than repointed.

[Service Catalog](/service-adapters/catalog).
