Check ID: postgresql_flexible_server_enforce_ssl_enabled
Provider: Azure
Service: postgresql
Severity: HIGH
Categories: encryption
Resource type: microsoft.dbforpostgresql/flexibleservers

What this check verifies

Azure Database for PostgreSQL flexible servers are evaluated for encrypted in-transit connections, specifically whether require_secure_transport is set to ON to force TLS for all client sessions.

Risk

Without enforced TLS, clients may connect in plaintext or with weak settings, exposing credentials and data to man-in-the-middle, query tampering, and session hijacking. This undermines confidentiality and integrity, and can enable lateral movement if stolen creds are reused.

Recommendation

Enforce encryption in transit: set require_secure_transport=ON, prefer TLS 1.3 (or at least ssl_min_protocol_version=1.2), and require clients to verify server identity. Disable mixed modes, rotate certificates, and restrict access via private endpoints to apply defense in depth.

Remediation

az postgres flexible-server parameter set —resource-group <RESOURCE_GROUP> —server-name <SERVER_NAME> —name require_secure_transport —value ON

References

Where this check fires

This check runs on every scheduled scan against your Azure account. Findings appear at Cloud Security → Findings filterable by Check ID = postgresql_flexible_server_enforce_ssl_enabled. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to Azure checks