Seven steps, and none of them guess.
The whole pipeline is deterministic code. No language model takes part in deciding whether traffic is allowed; at most one could narrate a result the engine already produced.
- 01
Connect cloud accounts
Cloud Patrol authenticates as its own principal and assumes a role you create in each target account. No account keys are ever stored. For firewalls, a read-only API account is enough to begin.
Read-only by default. Write access is a separate, explicit grant.
- 02
Discover infrastructure
Accounts, VPCs and VNets, subnets, route tables, gateways, firewalls, zones and interfaces are collected into a topology graph. Workloads are deliberately left out of the graph until a query needs one resolved.
A collection that fails partway reports itself incomplete rather than looking finished.
- 03
Analyze policies
Every rule is resolved: nested address and service groups expanded recursively, negations applied, zone scope preserved. A group that references itself is reported as a finding instead of being followed forever.
Resolution never guesses. A token it cannot expand is recorded as a gap.
- 04
Test traffic
Choose a source, destination, protocol and port. The engine locates both endpoints in the topology, walks every path between them, applies NAT between hops, and evaluates each control the flow crosses.
Security policy is matched on pre-NAT addresses, because that is what the devices do.
- 05
Find issues
The same resolved model drives the findings: exposure, over-permissive access, duplicates, unused objects, shadowed and conflicting rules. Each finding carries the affected resources and why it matters.
Every candidate is confirmed semantically before it is reported.
- 06
Remediate
Approve a change and Cloud Patrol generates the Terraform or provider CLI for it. The impact is stated first: which flows change, and which findings the change resolves or creates.
The change lands through your pipeline, not behind your back.
- 07
Monitor
Collection runs on a schedule and never overwrites what came before. Changes made outside Cloud Patrol show up in the timeline, so drift is visible rather than discovered during an incident.
Snapshots are append-only, so any point in time can be produced again.
An incomplete collection is the dangerous case, because absence of data looks exactly like absence of access. Cloud Patrol treats them as different answers. A rule set that was only partly collected cannot produce a confident deny, an address in no collected subnet returns unknown rather than blocked, and a path search that hit its bound says so instead of reporting that no path exists.
Watch it walk a real path.
A demo runs read-only against your configuration. Nothing changes without your approval.