Description
It is recommended to configure 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 Google Cloud 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 Google Cloud CLIβ
-
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.
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.
Default Valueβ
By default, Cloud Sql instances have a public IP.
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.