En esta página se describe cómo configurar tanto el acceso privado a servicios como Private Service Connect.
Si configuras el acceso a servicios privados, puedes asignar un intervalo de direcciones IP y crear una conexión de servicio privada para la red de nube privada virtual (VPC) de tu proyecto Google Cloud . De esta forma, los recursos de la red de VPC pueden conectarse a tus instancias de Cloud SQL.
Si configuras Private Service Connect, puedes conectarte a una instancia principal de Cloud SQL o a cualquiera de sus réplicas de lectura desde varias redes de VPC que pertenezcan a diferentes grupos, equipos, proyectos u organizaciones.
Crea una instancia que admita el acceso privado a servicios y Private Service Connect
Si creas una instancia de Cloud SQL que admita tanto el acceso a servicios privados como Private Service Connect, podrás disfrutar de las ventajas de ambos servicios. Para obtener más información, consulta Opciones de conexión para instancias.
Con Private Service Connect, puedes conectarte a una instancia de Cloud SQL desde varias redes de VPC que pertenezcan a diferentes grupos, equipos, proyectos u organizaciones.
Puedes crear una instancia de Cloud SQL que admita el acceso a servicios privados y Private Service Connect mediante la CLI de gcloud o la API.
gcloud
Para crear una instancia que admita tanto el acceso a servicios privados como Private Service Connect, usa el comando gcloud beta sql instances create
:
gcloud beta sql instances create INSTANCE_NAME \ --project=PROJECT_ID \ --region=REGION_NAME \ --enable-private-service-connect \ --allowed-psc-projects=ALLOWED_PROJECTS \ --availability-type=AVAILABILITY_TYPE \ --no-assign-ip \ --allocated-ip-range-name=RANGE_NAME \ --enable-google-private-path \ --tier=MACHINE_TYPE \ --database-version=DATABASE_VERSION \ --network=VPC_PSA_NETWORK_PATH \ --enable-bin-log \ --psc-auto-connections=network=VPC_PSC_NETWORK_PATH,project=SERVICE_PROJECT
Haz las siguientes sustituciones:
- INSTANCE_NAME: el nombre de la instancia.
- PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene la instancia.
- REGION_NAME: el nombre de la región de la instancia.
ALLOWED_PROJECTS: lista de IDs o números de proyecto permitidos, separados por comas. Si un proyecto no está en esta lista, no puedes crear puntos finales de Private Service Connect en el proyecto para conectarte a la instancia.
- AVAILABILITY_TYPE: habilita la alta disponibilidad en la instancia. En este parámetro, especifica uno de los siguientes valores:
REGIONAL
: habilita la alta disponibilidad y se recomienda para las instancias de producción. La instancia se conmuta por error a otra zona de la región seleccionada.ZONAL
: no proporcionan ninguna función de conmutación por error. Este es el valor predeterminado.
Para obtener más información sobre cómo configurar y quitar la alta disponibilidad de las instancias, consulta los artículos Configurar una instancia para alta disponibilidad y Desactivar la alta disponibilidad de una instancia.
- RANGE_NAME: en este parámetro opcional, defina un nombre de intervalo para el que se asigna un intervalo de IPs. El nombre del intervalo debe cumplir las reglas de
RFC 1035
y tener entre 1 y 63 caracteres. - MACHINE_TYPE: el tipo de máquina de la instancia.
- DATABASE_VERSION: la versión de la base de datos de la instancia (por ejemplo,
MYSQL_8_0
). - VPC_PSA_NETWORK_PATH: el nombre y la ruta de la red VPC a la que se conecta la instancia (por ejemplo,
"projects/PROJECT_ID/global/networks/default"
). Esta red se usa para las conexiones de acceso a servicios privados y la dirección IP de acceso a servicios privados de la instancia de Cloud SQL. - VPC_PSC_NETWORK_PATH: la ruta a la red de VPC desde la que se debe crear el punto final de Private Service Connect. Por ejemplo:
projects/my-host-project/global/networks/default
. SERVICE_PROJECT: proyecto en el que se crea el endpoint de Private Service Connect. Si la red de VPC no es una VPC compartida, solo puede ser el proyecto del host de la red. Si se trata de una VPC compartida, puede ser el proyecto host o el proyecto de servicio.
Para saber cómo conectarte a una instancia que tiene habilitado Private Service Connect, consulta Conectarse a una instancia de Cloud SQL.
Para desactivar la IP pública, usa el parámetro --no-assign-ip
.
También puedes usar el parámetro --enable-google-private-path
para permitir que otros servicios, como BigQuery, accedan a los datos de Cloud SQL y hagan consultas sobre ellos a través de una conexión IP privada. Google Cloud Este parámetro solo es válido si:
- Usa el parámetro
--no-assign-ip
. - Usa el parámetro
--network
para especificar el nombre de la red de VPC que quieras usar para crear una conexión privada.
Terraform
Para crear una instancia con acceso a servicios privados y Private Service Connect habilitados, usa el
google_sql_database_instance
recurso de Terraform.
Para aplicar la configuración de Terraform en un proyecto, sigue los pasos que se indican en las siguientes secciones. Google Cloud
Preparar Cloud Shell
- Abre Cloud Shell.
-
Define el Google Cloud proyecto Google Cloud predeterminado en el que quieras aplicar tus configuraciones de Terraform.
Solo tiene que ejecutar este comando una vez por proyecto y puede hacerlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si defines valores explícitos en el archivo de configuración de Terraform.
Preparar el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
-
En Cloud Shell, crea un directorio y un archivo nuevo en ese directorio. El nombre del archivo debe tener la extensión
.tf
. Por ejemplo,main.tf
. En este tutorial, nos referiremos al archivo comomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si estás siguiendo un tutorial, puedes copiar el código de ejemplo de cada sección o paso.
Copia el código de ejemplo en el archivo
main.tf
que acabas de crear.También puedes copiar el código de GitHub. Se recomienda cuando el fragmento de Terraform forma parte de una solución integral.
- Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
- Guarda los cambios.
-
Inicializa Terraform. Solo tienes que hacerlo una vez por directorio.
terraform init
Si quieres usar la versión más reciente del proveedor de Google, incluye la opción
-upgrade
:terraform init -upgrade
Aplica los cambios
-
Revisa la configuración y comprueba que los recursos que va a crear o actualizar Terraform se ajustan a tus expectativas:
terraform plan
Haga las correcciones necesarias en la configuración.
-
Aplica la configuración de Terraform ejecutando el siguiente comando e introduciendo
yes
en la petición:terraform apply
Espera hasta que Terraform muestre el mensaje "Apply complete!".
- Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para asegurarte de que Terraform los ha creado o actualizado.
REST
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene la instancia.
- INSTANCE_NAME: el nombre de la instancia.
- REGION_NAME: el nombre de la región de la instancia.
- AVAILABILITY_TYPE: habilita la alta disponibilidad en la instancia. En este parámetro, especifica uno de los siguientes valores:
REGIONAL
: habilita la alta disponibilidad y se recomienda para las instancias de producción. La instancia se conmuta por error a otra zona de la región seleccionada.ZONAL
: no proporcionan ninguna función de conmutación por error. Este es el valor predeterminado.
Para obtener más información sobre cómo configurar y quitar la alta disponibilidad de las instancias, consulta los artículos Configurar una instancia para alta disponibilidad y Desactivar la alta disponibilidad de una instancia.
- VPC_PSA_NETWORK_PATH: la ruta de la red VPC a la que se conecta la instancia (por ejemplo,
"projects/PROJECT_ID/global/networks/default"
). Esta red se usa para las conexiones de acceso a servicios privados y la dirección IP de acceso a servicios privados de la instancia de Cloud SQL. - RANGE_NAME: en este parámetro opcional, defina un nombre de intervalo para el que se asigna un intervalo de IPs. El nombre del intervalo debe cumplir las reglas de
RFC 1035
y tener entre 1 y 63 caracteres. ALLOWED_PROJECTS: lista de IDs o números de proyecto permitidos, separados por comas. Si un proyecto no está en esta lista, no puedes crear puntos finales de Private Service Connect en el proyecto para conectarte a la instancia.
- VPC_PSC_NETWORK_PATH: la ruta a la red de VPC desde la que se debe crear el punto final de Private Service Connect. Por ejemplo:
projects/my-host-project/global/networks/default
. SERVICE_PROJECT: proyecto en el que se crea el endpoint de Private Service Connect. Si la red de VPC no es una VPC compartida, solo puede ser el proyecto del host de la red. Si se trata de una VPC compartida, puede ser el proyecto host o el proyecto de servicio.
- MACHINE_TYPE: el tipo de máquina de la instancia.
Para saber cómo conectarte a una instancia que tiene habilitado Private Service Connect, consulta Conectarse a una instancia de Cloud SQL.
Has definido el parámetro ipv4Enabled
como false
porque tu instancia tiene una dirección IP interna.
Si asignas el valor true
al parámetro opcional enablePrivatePathForGoogleCloudServices
, permitirás que otros servicios, como BigQuery, accedan a los datos de Cloud SQL y realicen consultas sobre ellos a través de una conexión IP interna. Google Cloud Si asignas el valor false
a este parámetro, otros Google Cloud servicios no podrán acceder a los datos de Cloud SQL a través de una conexión IP interna.
Método HTTP y URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
Cuerpo JSON de la solicitud:
{ "name": "INSTANCE_NAME", "project": PROJECT_ID", "region": "REGION_NAME", "databaseVersion": "MYSQL_8_0", "kind": "sql#instance", "settings": { "availabilityType": "AVAILABILITY_TYPE", "backupConfiguration": { "binaryLogEnabled": true, "enabled": true, "kind": "sql#backupConfiguration", "startTime": "00:00" }, "ipConfiguration": { "ipv4Enabled": false, "privateNetwork": VPC_PSA_NETWORK_PATH, "allocatedIpRange": "RANGE_NAME", "enablePrivatePathForGoogleCloudServices": true, "pscConfig": { "allowedConsumerProjects": [ "ALLOWED_PROJECTS" ], "pscAutoConnections": [ { "consumerProject":"SERVICE_PROJECT", "consumerNetwork":"projects/SERVICE_PROJECT/global/networks/VPC_PSC_NETWORK_PATH" } ], "pscEnabled": true } }, "kind": "sql#settings", "pricingPlan": "PER_USE", "replicationType": "SYNCHRONOUS", "tier": "MACHINE_TYPE" } }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME", "status": "RUNNING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "startTime": "2023-06-14T18:48:35.499Z", "operationType": "CREATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Desactivar Private Service Connect en una instancia
Puedes desactivar Private Service Connect en una instancia que tenga habilitados tanto el acceso a servicios privados como Private Service Connect.
Cuando desactives Private Service Connect en la instancia, esta operación tardará 8 minutos y tu instancia estará inactiva durante unos 45 segundos. Una vez completada la operación, las rutas de acceso a servicios privados y de conectividad de Private Service Connect ya no coexistirán en la misma instancia. No puedes conectarte a la instancia mediante Private Service Connect.
Para desactivar Private Service Connect en una instancia, puedes usar la CLI de gcloud o la API.
gcloud
Para desactivar Private Service Connect en una instancia, usa el comando gcloud beta sql instances patch
:
gcloud beta sql instances patch INSTANCE_NAME \ --project=PROJECT_ID \ --no-enable-private-service-connect \ --clear-allowed-psc-projects
Haz las siguientes sustituciones:
- INSTANCE_NAME: el nombre de la instancia
- PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene la instancia
Terraform
Para desactivar Private Service Connect en una instancia, usa el
google_sql_database_instance
recurso de Terraform.
REST
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene la instancia
- INSTANCE_NAME: el nombre de la instancia
Método HTTP y URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Cuerpo JSON de la solicitud:
{ "kind": "sql#instance", "name": "INSTANCE_NAME", "project": "PROJECT_ID", "settings": { "ipConfiguration": { "pscConfig": { "pscEnabled": "false", "allowedConsumerProjects": [{}] } }, "kind": "sql#settings" } }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME", "status": "RUNNING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "startTime": "2023-06-14T18:48:35.499Z", "operationType": "UPDATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Habilitar Private Service Connect en una instancia
Puedes habilitar Private Service Connect en una instancia que ya tenga habilitado el acceso a servicios privados. Puedes usar Private Service Connect para conectarte a una instancia de Cloud SQL desde varias redes VPC.
Cuando habilites Private Service Connect en la instancia, esta operación tardará 8 minutos y la instancia tendrá un tiempo de inactividad de unos 45 segundos. Una vez completada la operación, las rutas de acceso a servicios privados y de conectividad de Private Service Connect coexistirán en la misma instancia.
Puedes habilitar Private Service Connect en una instancia mediante la CLI de gcloud o la API.
gcloud
Para habilitar Private Service Connect en una instancia, usa el comando gcloud beta sql instances patch
:
gcloud beta sql instances patch INSTANCE_NAME \ --project=PROJECT_ID \ --enable-private-service-connect \ --allowed-psc-projects=ALLOWED_PROJECTS \ --psc-auto-connections=network=VPC_PSC_NETWORK_PATH,project=SERVICE_PROJECT
Haz las siguientes sustituciones:
- INSTANCE_NAME: el nombre de la instancia
- PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene la instancia
ALLOWED_PROJECTS: lista de IDs o números de proyecto permitidos, separados por comas. Si un proyecto no está en esta lista, no puedes crear puntos finales de Private Service Connect en el proyecto para conectarte a la instancia.
- VPC_PSC_NETWORK_PATH: la ruta a la red de VPC desde la que se crea el endpoint de Private Service Connect. Por ejemplo:
projects/my-host-project/global/networks/default
. SERVICE_PROJECT: proyecto en el que se crea el endpoint de Private Service Connect. Si la red de VPC no es una VPC compartida, solo puede ser el proyecto del host de la red. Si se trata de una VPC compartida, puede ser el proyecto host o el proyecto de servicio.
Para saber cómo conectarte a una instancia que tiene habilitado Private Service Connect, consulta Conectarse a una instancia de Cloud SQL.
Terraform
Para habilitar Private Service Connect en una instancia, usa el
google_sql_database_instance
recurso de Terraform.
REST
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: el ID o el número de proyecto del Google Cloud proyecto que contiene la instancia.
- INSTANCE_NAME: el nombre de la instancia.
- ALLOWED_PROJECTS: lista de IDs o números de proyecto permitidos, separados por comas. Estos proyectos anulan los que ya estén configurados para usar Private Service Connect. Si un proyecto no está en esta lista, no puedes crear puntos finales de Private Service Connect en el proyecto para conectarte a la instancia.
- VPC_PSC_NETWORK_PATH: la ruta a la red de VPC desde la que se crea el endpoint de Private Service Connect. Por ejemplo:
projects/my-host-project/global/networks/default
. SERVICE_PROJECT: proyecto en el que se crea el endpoint de Private Service Connect. Si la red de VPC no es una VPC compartida, solo puede ser el proyecto del host de la red. Si se trata de una VPC compartida, puede ser el proyecto host o el proyecto de servicio.
Método HTTP y URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
Cuerpo JSON de la solicitud:
{ "kind": "sql#instance", "name": "INSTANCE_NAME", "project": "PROJECT_ID", "settings": { "ipConfiguration": { "pscConfig": { "pscAutoConnections": [ { "consumerProject":"SERVICE_PROJECT", "consumerNetwork":"projects/SERVICE_PROJECT/global/networks/VPC_PSC_NETWORK_PATH" } ], "pscEnabled": "true", "allowedConsumerProjects": [ALLOWED_PROJECTS] } }, "kind": "sql#settings" } }
Para enviar tu solicitud, despliega una de estas opciones:
Deberías recibir una respuesta JSON similar a la siguiente:
{ "kind": "sql#operation", "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME", "status": "RUNNING", "user": "user@example.com", "insertTime": "2020-01-16T02:32:12.281Z", "startTime": "2023-06-14T18:48:35.499Z", "operationType": "UPDATE", "name": "OPERATION_ID", "targetId": "INSTANCE_NAME", "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID", "targetProject": "PROJECT_ID" }
Para saber cómo conectarte a una instancia que tiene habilitado Private Service Connect, consulta Conectarse a una instancia de Cloud SQL.