Article

Essential Eight ML2 on Azure's PostgreSQL Flexible Server: Here's What It Actually Takes

September 1, 2026
Glen Gray
PostgreSQL
Database Migration
Compliance
2026
Database Services
Databases
Microsoft Azure
Oracle-to-PostgreSQL
If your agency runs Azure SQL, SQL Server or Oracle today and PostgreSQL keeps coming up in conversations about cost, this is the question that decides whether those conversations go anywhere: can it meet your Essential Eight obligations? The answer is yes — and the path there is shorter than you may expect.

The question behind the question

Most government technology leaders we speak with aren't asking whether PostgreSQL is a capable database. That argument is over — it runs critical workloads across government and finance worldwide, and Microsoft operates it as a first-class managed service on Azure, sitting in the same portal, the same subscriptions and the same governance framework as the Azure SQL estate you are likely to be already be running.

The real question is a governance one: if we adopt Azure Database for PostgreSQL Flexible Server, can we still demonstrate Essential Eight Maturity Level Two?

It deserves a straight answer, so here it is: yes — with additional configuration we detail below. Not with defaults, and not with any third-party product either. ML2 on Flexible Server is a matter of roughly a dozen configuration and process decisions, all made with tools your teams already use: Entra ID, Azure Policy, Azure Backup and Azure Monitor.

One caveat before the detail, because accuracy matters when assessors are involved: no database product "is" ML2 compliant by itself. The Essential Eight is assessed across your environment, and the database layer is in scope for four of the eight strategies. What follows maps exactly what an assessor will look for at the database layer, what Flexible Server does out of the box, and what closes the gap.

Compliance controls to implement

1. Multi-factor authentication

ML2 requires MFA for privileged users of systems. A freshly provisioned Flexible Server authenticates administrators with a PostgreSQL username and password — no MFA, and an immediate assessor finding.

The fix: enable Microsoft Entra ID authentication and set the server to Entra-only. Every administrative connection then flows through the same Conditional Access policies — and the same MFA — that already protect your Microsoft 365 and Azure estate. Database access stops being a separate identity silo with its own passwords and becomes part of the identity governance you already operate. This is, frankly, a stronger position than most on-premises SQL Server and Oracle estates ever reach, where database passwords often are outside the corporate identity system entirely.

Default Configured for ML2
Admin authentication Local password Entra-only, Conditional Access, MFA enforced
Identity lifecycle Separate from corporate identity Joiners/movers/leavers handled by Entra automatically

2. Restrict administrative privileges

ML2 requires that privileged access is limited, requested and revalidated, and that privileged access events are centrally logged. The Information Security Manual is also explicit (ISM-1815, tagged to ML2 and ML3) that event logs are protected from unauthorised modification and deletion.

Out of the box, Flexible Server records almost nothing about what administrators do, and what it does record stays on the server.

The fix is three settings and one design decision:

  • Enable the pgaudit extension, so every statement a privileged user runs is recorded — who, what, when, from where.
  • Add a diagnostic setting routing those logs to Azure Monitor / Log Analytics, off the server and out of the database administrator's reach, with retention set to your policy.
  • Use Entra PIM so administrative rights are granted just-in-time, time-boxed and approved — access is requested, not standing.
  • Design the RBAC separation so the people who administer the database are not the people who can alter or purge the log workspace. This is the point an experienced assessor will probe, and it's a role-design exercise, not a technology gap. For example, your DBAs, whether internal or external, should have no privileges to make any changes to the logging from the database - which should be the domain of separate administrators.
Default Configured for ML2
Privileged activity recording Effectively none Every privileged statement captured via pgaudit
Log location On the server Centralised in Log Analytics, retention enforced
Admin access model Standing credentials Just-in-time via PIM, approved and time-boxed

3. Regular backups

The ML2 requirements here are less about taking backups — every platform does that — and more about who can access, modify and delete them. The default Flexible Server backups have a weakness an assessor will find in minutes: they live with the server, so an administrator (or attacker) who can delete the server destroys the backups with it.

The fix: protect the server with an Azure Backup vault, with long-term retention aligned to your records obligations, vault immutability enabled, and vault access RBAC-separated from database administration. The people being backed up cannot be the people who can delete the backups. Only allow separate administrators to manage the backup storage (including any immutable vaults), whilst the DBAs are likely to be included in their initial configuration, verification and documentation, after that implementation, revoke all privileges and document this.

Default Configured for ML2
Backup survival Deleted with the server Vaulted, immutable, retained independently
Who can delete Database administrators Separate role, separately governed

4. Patch applications

Everyone's favourite! Don't we all love patching? Here the managed platform does most of the work for you — and this is where the comparison with your on-premises estate becomes uncomfortable in PostgreSQL's favour. Microsoft applies engine patches in your nominated maintenance window; there is no patch bundle for your DBAs to schedule, stage and apply, and no quarterly patching project. What your agency still owes the assessor is evidence: that instances are on supported versions, and that major-version upgrades happen before support retirement. That's a report and a process, not an engineering effort. Goto https://learn.microsoft.com/en-us/azure/postgresql/configure-maintain/concepts-version-policy for details of PostgreSQL's lifecycle policy on Azure. The PostgreSQL community supports each major version for approximately five years from release, with a new major version arriving annually and minor security and bug-fix releases issued regularly in between. Azure Database for PostgreSQL Flexible Server supports each major version from the date Azure begins offering it until the community's end-of-life date, applying minor-version patches automatically during scheduled maintenance. For workloads that can't upgrade in time, Azure offers paid Extended Support, which continues critical security patches for up to three years beyond community end-of-life — a bridge for upgrade planning, not a destination.

Anyone who has lived through a year of Oracle monthly or quarterly patching cycles, or SQL Server cumulative update regression testing, will recognise the size of what just left the to-do list.

A word about evidence

There's another point worth mentioning: ASD's own assessment guidance ranks evidence quality — from excellent (a control tested in operation) down to poor (a policy document). Most agencies demonstrate database controls with screenshots and configuration exports, which sit in the middle of that scale.

Everything described above is assessable. But how efficiently it's assessed — and how confidently it holds at ML3, where requirements extend to monitoring, actioning and stronger log protection — depends on how the evidence is produced. That's a topic we'll return to in a future article, because we think the PostgreSQL ecosystem can do something here that no other database platform currently offers.

Now the part your finance department will enjoy

Everything above establishes that Flexible Server can carry your compliance obligations. What makes the exercise worth doing is what it removes:

  • No database licence. At all. PostgreSQL has no per-core licensing, no Enterprise Edition uplift, no audit exposure, no true-up negotiations. You pay Azure for compute and storage — the same meters as your Azure SQL estate, minus the licence component that dominates SQL Server and Oracle costs.
  • No licence-driven architecture. Features that are chargeable options elsewhere — partitioning, advanced security capabilities, high availability topologies — are simply part of PostgreSQL. Nobody designs around the licence, because there isn't one.
  • The compliance tooling is included. Every control described in this article uses capabilities already in your Azure agreement. The ML2 posture costs configuration effort, not product spend.

For most Oracle workloads we assess, and a substantial share of SQL Server ones, the total cost reduction is not a close call. It's routinely the largest line item a database strategy review surfaces.

Where Pebble IT fits

We've spent years on both sides of this fence. Our consultants come from deep Oracle and SQL Server backgrounds — licensing, patching, high availability, the lot — and we now migrate those workloads to PostgreSQL, including onto Flexible Server, for government and regulated-sector clients. That means the migration conversation starts from what your estate actually does today, not from a product brochure.

We also put our understanding of PostgreSQL on the public record. Pebble IT builds and releases open-source PostgreSQL extensions, designed specifically to work on managed platforms like Flexible Server where conventional extensions can't be installed:

  • PostgreSQL Relay — durable, reliable background processing for PostgreSQL, the engine underneath everything else we build. The latest release includes sophisticated scheduling of jobs callable from code for future one-off execution or recurring jobs with auditable log tables.
  • PostgreSQL Relay Notifier — turns database events into durable, tracked notifications: email, Microsoft 365, Slack, SMS and incident platforms, with full delivery audit trails.
  • PostgreSQL Auto Materialised Views — solves a common problem for PostgreSQL, the automatic rebuild of Materialised Views that users of Oracle have enjoyed for many years can now also be enjoyed on PostgreSQL - and we have taken the experience far beyond Oracle's capabilities.

There are others, but we feel these are the most relevant for an Azure Flexible Server for PostgreSQL implementation. We have been working on these for some time and we have others in the pipeline. These translate to capability that would otherwise require custom development or additional products — and because they're open source, they arrive with no licence cost and full transparency for your security reviewers. It also demonstrates a deep understanding of PostgreSQL that translates to being able to solve your current challenges on PostgreSQL.

The takeaway

PostgreSQL on Azure Flexible Server is not a compromise you accept to save money. Configured intelligently, it meets Essential Eight ML2 at the database layer using the Azure governance tools your teams already know — while removing the licensing cost and patching burden that your current platforms impose. The work is a defined, bounded configuration exercise, and it's one we've done.

If ML2 is on your agenda and PostgreSQL is in the conversation, we're happy to walk your team through the control mapping against your actual environment — assessor's lens, no obligation.

Contact us for a discussion

Real Solutions

Transforming Businesses Like Yours

Find out what we’ve done for enterprises like yours, and what we can do for your business needs.
Speak to our Senior Technical Team now
Contact Us Now