Control: 4.3.5 Ensure server parameter 'connection_throttling' is set to 'ON' for PostgreSQL Database Server
Description
Enable connection_throttling on PostgreSQL Servers.
Enabling connection_throttling helps the PostgreSQL Database to Set the verbosity of logged messages. This in turn generates query and error logs with respect to concurrent connections that could lead to a successful Denial of Service (DoS) attack by exhausting connection resources. A system can also fail or be degraded by an overload of legitimate users. Query and error logs can be used to identify, troubleshoot, and repair configuration errors and sub-optimal performance.
Remediation
From Azure Console
- Login to Azure Portal using https://portal.azure.com.
 - Go to 
Azure Database for PostgreSQL servers. - For each database, click on 
Server parameters. - Search for 
connection_throttling. - Click 
ONand save. 
From Azure CLI
Use the below command to update connection_throttling configuration.
az postgres server configuration set --resource-group <resourceGroupName> --server-name <serverName> --name connection_throttling --value on
From PowerShell
Use the below command to update connection_throttling configuration.
Update-AzPostgreSqlConfiguration -ResourceGroupName <ResourceGroupName> - ServerName <ServerName> -Name connection_throttling -Value on
Default Value
By default, connection_throttling is enabled (set to on).
Usage
Run the control in your terminal:
powerpipe control run azure_compliance.control.cis_v210_4_3_5Snapshot and share results via Turbot Pipes:
powerpipe loginpowerpipe control run azure_compliance.control.cis_v210_4_3_5 --shareSQL
This control uses a named query:
select  s.id as resource,  case    when lower(config -> 'ConfigurationProperties' ->> 'value') != 'on' then 'alarm'    else 'ok'  end as status,  case    when lower(config -> 'ConfigurationProperties' ->> 'value') != 'on' then s.name || ' server parameter connection_throttling off.'    else s.name || ' server parameter connection_throttling on.'  end as reason    , s.resource_group as resource_group  , sub.display_name as subscriptionfrom  azure_postgresql_server s  cross join lateral jsonb_array_elements(server_configurations) config  left join azure_subscription as sub on sub.subscription_id = s.subscription_idwhere  config ->> 'Name' = 'connection_throttling';