Client
Government regulator
Role
Head of IT, designer and developer
Timeline
2026, in daily use
Stack
PowerShell, REST, SSH, LDAP, Graph

01The challenge

A newly joined head of IT inherits an estate built by integrators: a virtualisation cluster running a few hundred virtual machines, a pair of next-generation firewalls, an Active Directory domain, a Microsoft 365 tenant and a backup server. Each system has its own console and its own view of the truth, and none of them looks at the others.

Audits done by hand are a snapshot. By the time the report is written, the estate has moved. The question leadership actually needs answered every day is simpler: what changed since yesterday, and does any of it matter?

02What I built

A scheduled scan that runs before the working day and is read-only from end to end. It never changes a setting, never restarts anything and never remediates on its own.

03Outcome

Daily, not annualA full estate review lands before 9 a.m. every working day, with no manual effort.
Found by cross-referenceA firewall service account holding domain-administrator rights, invisible to either console alone, was demoted the next day with no service impact.
Signal, not noiseConfiguration counters that advance on their own, and changes made by approved automation, are filtered out so every reported change is a real one.

Remediation stays human. Every fix the scan motivates is written up as a reviewable change set with its own rollback, and applied by hand in a maintenance window, lowest-risk change first.

04What I would tell another organisation

An audit tool that cannot see something reports it as absent, and absent reads as fine. Build the "unknown" list first.

Two smaller lessons from the build. First, read every static finding against live evidence: a firewall rule reported as unreachable turned out to carry tens of millions of hits, because the rule above it narrowed by application rather than by port. Second, check the clock on every timestamp you rely on. One API field ran hours behind real time, which quietly shifted every activity report until it was cross-checked against a known event.

PowerShellHypervisor REST APIFirewall SSH CLILDAPBackup APIMicrosoft GraphWindows Task Scheduler

The client is not named and system details are generalised. Only findings that have been resolved are described.

Facing something similar?

Tell me what you are trying to achieve and where it is stuck.

Start a conversation