turbot/steampipe-mod-azure-compliance

Control: 4.3.6 Ensure Server Parameter 'log_retention_days' is greater than 3 days for PostgreSQL Database Server

Description

Enable log_retention_days on PostgreSQL Servers.

Enabling log_retention_days helps PostgreSQL Database to Sets number of days a log file is retained which in turn generates query and error logs. Query and error logs can be used to identify, troubleshoot, and repair configuration errors and suboptimal performance.

Remediation

From Azure Console

  1. From Azure Home select the Portal Menu
  2. Go to Azure Database for PostgreSQL server
  3. For each database, click on Server parameters
  4. Search for log_retention_days.
  5. Enter value in range 4-7 (inclusive) and save.

From Azure CLI

Use the below command to update log_retention_days configuration.

az postgres server configuration set --resource-group <resourceGroupName> --server-name <serverName> --name log_retention_days --value <4-7>

Default Value

By default log_retention_days is disabled.

Usage

Run the control in your terminal:

powerpipe control run azure_compliance.control.cis_v150_4_3_6

Snapshot and share results via Turbot Pipes:

powerpipe login
powerpipe control run azure_compliance.control.cis_v150_4_3_6 --share

SQL

This control uses a named query:

select
s.id as resource,
case
when (config -> 'ConfigurationProperties' ->> 'value')::integer <= 3 then 'alarm'
else 'ok'
end as status,
case
when (config -> 'ConfigurationProperties' ->> 'value')::integer <= 3 then s.name || ' log files are retained for 3 days or lesser.'
else s.name || ' log files are retained for more than 3 days.'
end as reason
, s.resource_group as resource_group
, sub.display_name as subscription
from
azure_postgresql_server s,
jsonb_array_elements(server_configurations) as config,
azure_subscription sub
where
config ->> 'Name' = 'log_retention_days'
and sub.subscription_id = s.subscription_id;

Tags