Check ID:
Provider: Azure
Service:
Severity: HIGH
Categories:
Resource type:
postgresql_flexible_server_enforce_ssl_enabledProvider: Azure
Service:
postgresqlSeverity: HIGH
Categories:
encryptionResource type:
microsoft.dbforpostgresql/flexibleserversWhat this check verifies
Azure Database for PostgreSQL flexible servers are evaluated for encrypted in-transit connections, specifically whetherrequire_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: setrequire_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
- CLI
- Terraform
- Native IaC
- Dashboard steps
az postgres flexible-server parameter set —resource-group <RESOURCE_GROUP> —server-name <SERVER_NAME> —name require_secure_transport —value ON
References
- https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/concepts-security?source=recommendations
- https://www.trendmicro.com/cloudoneconformity/knowledge-base/azure/PostgreSQL/require-secure-transport-for-postgres-flexible-servers.html
Where this check fires
This check runs on every scheduled scan against your Azure account. Findings appear at Cloud Security → Findings filterable byCheck 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