Control: 6.2.8 Ensure That 'cloudsql.enable_pgaudit' Database Flag for each Cloud Sql Postgresql Instance Is Set to 'on' For Centralized Logging
Description
Ensure cloudsql.enable_pgaudit
database flag for Cloud SQL PostgreSQL instance is set to on to allow for centralized logging.
As numerous other recommendations in this section consist of turning on flags for logging purposes, your organization will need a way to manage these logs. You may have a solution already in place. If you do not, consider installing and enabling the open source pgaudit extension within PostgreSQL and enabling its corresponding flag of cloudsql.enable_pgaudit
. This flag and installing the extension enables database auditing in PostgreSQL through the open-source pgAudit extension. This extension provides detailed session and object logging to comply with government, financial, & ISO standards and provides auditing capabilities to mitigate threats by monitoring security events on the instance. Enabling the flag and settings later in this recommendation will send these logs to Google Logs Explorer so that you can access them in a central location. to This recommendation is applicable only to PostgreSQL database instances.
Remediation
Initialize the pgAudit flag
From Console
- Go to https://console.cloud.google.com/sql/instances.
- Select the instance to open its
Overview
page. - Click
Edit
. - Scroll down and expand
Flags
. - To set a flag that has not been set on the instance before, click
Add item
. - Enter
cloudsql.enable_pgaudit
for the flag name and set the flag toon
. - Click
Done
. - Click
Save
to update the configuration. - Confirm your changes under
Flags
on theOverview
page.
From Command Line:
- Run the below command by providing <INSTANCE_NAME> to enable
cloudsql.enable_pgaudit
flag.
gcloud sql instances patch <INSTANCE_NAME> --database-flags=cloudsql.enable_pgaudit=on
Note: RESTART
is required to get this configuration in effect.
Creating the extension
- Connect to the the server running PostgreSQL or through a SQL client of your choice.
- If SSHing to the server in the command line open the PostgreSQL shell by typing
psql
- Run the following command as a superuser.
CREATE EXTENSION pgaudit;
Updating the previously created pgaudit.log flag for your Logging Needs
From Console
Note: there are multiple options here. This command will enable logging for all databases on a server. Please see the customizing database audit logging reference for more flag options.
- Go to https://console.cloud.google.com/sql/instances.
- Select the instance to open its
Overview
page. - Click
Edit
. - Scroll down and expand
Flags
. - To set a flag that has not been set on the instance before, click
Add item
. - Enter
pgaudit.log=all
for the flag name and set the flag toon
. - Click
Done
. - Click
Save
to update the configuration. - Confirm your changes under
Flags
on theOverview
page.
From Command Line:
Run the command
gcloud sql instances patch <INSTANCE_NAME> --database-flags cloudsql.enable_pgaudit=on,pgaudit.log=all
Determine if logs are being sent to Logs Explorer
- From the Google Console home page, open the hamburger menu in the top left.
- In the menu that pops open, scroll down to Logs Explorer under Operations.
- In the query box, paste the following and search
resource.type="cloudsql_database" logName="projects//logs/cloudaudit.googleapis.com%2Fdata_access" protoPayload.request.@type="type.googleapis.com/google.cloud.sql.audit.v1.PgAuditEntry"
If it returns any log sources, they are correctly setup.
Default Value
By default cloudsql.enable_pgaudit
database flag is set to off
and the extension is not enabled.
Usage
Run the control in your terminal:
powerpipe control run gcp_compliance.control.cis_v200_6_2_8
Snapshot and share results via Turbot Pipes:
powerpipe loginpowerpipe control run gcp_compliance.control.cis_v200_6_2_8 --share
SQL
This control uses a named query:
sql_instance_postgresql_cloudsql_pgaudit_database_flag_enabled