lacework-global-311
Ensure That Cloud SQL Database Instances Do Not Have Public IPs (Automated)
Profile Applicability
• Level 2
Description
Best practices recommend configuring Second Generation Sql instance to use private IPs instead of public IPs.
Rationale
To lower the organization's attack surface, Cloud SQL databases should not have public IPs. Private IPs provide improved network security and lower latency for your application.
Impact
Removing the public IP address on SQL instances may break some applications that relied on it for database connectivity.
Audit
From Console:
Go to the Cloud SQL Instances page in the Google Cloud Console: https://console.cloud.google.com/sql/instances
Ensure that every instance has a private IP address and no public IP address configured.
From Command Line:
- List all Cloud SQL database instances using the following command:
gcloud sql instances list
- For every instance of type
instanceType: CLOUD_SQL_INSTANCE
withbackendType: SECOND_GEN
, get detailed configuration. Ignore instances of typeREAD_REPLICA_INSTANCE
because these instances inherit their settings from the primary instance. Also, note that first generation instances cannot be configured to have a private IP address.
gcloud sql instances describe <INSTANCE_NAME>
- Ensure that the setting
ipAddresses
has an IP address configured oftype: PRIVATE
and has no IP address oftype: PRIMARY
.PRIMARY
IP addresses are public addresses. An instance can have both a private and public address at the same time. Note also that you cannot use private IP with First Generation instances.
Remediation
From Console:
- Go to the Cloud SQL Instances page in the Google Cloud Console: https://console.cloud.google.com/sql/instances.
- Click the instance name to open its Instance details page.
- Select the
Connections
tab. - Deselect the
Public IP
checkbox. - Click
Save
to update the instance.
From Command Line:
- For every instance remove its public IP and assign a private IP instead:
gcloud sql instances patch <instance_name> --network=<vpc_network_name> --no-assign-ip
- Confirm the changes using the following command:
gcloud sql instances describe <instance_name>
Prevention:
To prevent new SQL instances from getting configured with public IP addresses, set up a Restrict Public IP access on Cloud SQL instances
Organization policy at: https://console.cloud.google.com/iam-admin/orgpolicies/sql-restrictPublicIp.
References
https://cloud.google.com/sql/docs/mysql/configure-private-ip
https://cloud.google.com/sql/docs/mysql/private-ip
https://cloud.google.com/resource-manager/docs/organization-policy/org-policy-constraints
https://console.cloud.google.com/iam-admin/orgpolicies/sql-restrictPublicIp
Additional Information
Replicas inherit their private IP status from their primary instance. You cannot configure a private IP directly on a replica.