Acerca del proxy de Cloud SQL

En esta página se ofrece una introducción básica al proxy de Cloud SQL y se describen las opciones del proxy.

Si deseas obtener instrucciones paso a paso para usar el proxy de Cloud SQL, sigue el vínculo correspondiente a tu entorno:

No necesitas usar el proxy ni configurar SSL para conectarte a Cloud SQL desde el entorno estándar de App Engine o conectarte a Cloud SQL desde el entorno flexible de App Engine.

Qué proporciona el proxy

El proxy de Cloud SQL proporciona acceso seguro a tus instancias sin necesidad de tener redes autorizadas ni de configurar SSL.

Acceder a tu instancia de Cloud SQL con el proxy de Cloud SQL ofrece las siguientes ventajas:

  • Conexiones seguras: el proxy encripta automáticamente el tráfico hacia y desde la base de datos mediante el uso de TLS 1.2 con un algoritmo de cifrado AES de 128 bits. Se usan certificados SSL para verificar las identidades del cliente y del servidor.
  • Administración de conexión más sencilla: el proxy controla la autenticación con Cloud SQL, por lo que ya no es necesario proporcionar direcciones IP estáticas.

El proxy no proporciona una ruta de conectividad nueva, sino que se basa en la conectividad IP existente. Para conectarse a una instancia de Cloud SQL mediante una IP privada, el proxy debe estar en un recurso que tenga acceso a la misma red de VPC que la instancia.

Cómo funciona el proxy de Cloud SQL

El proxy de Cloud SQL funciona con un cliente local, llamado proxy, que se ejecuta en el entorno local. La aplicación se comunica con el proxy a través del protocolo de base de datos estándar que usa tu base de datos. El proxy usa un túnel seguro para comunicarse con el proceso complementario que se ejecuta en el servidor.

Si bien el proxy puede escuchar en cualquier puerto, solo crea conexiones salientes a tu instancia de Cloud SQL en el puerto 3307. Si tienes una política de firewall saliente, asegúrate de que permita conexiones al puerto 3307 en la IP de tu instancia de Cloud SQL.

En el siguiente diagrama se explica cómo se conecta el proxy con Cloud SQL:

Diagrama de la conexión del proxy desde el software del cliente a una instancia de SQL

Requisitos para usar el proxy de Cloud SQL

Para usar el proxy, debes cumplir con los siguientes requisitos:

  • La API de Administrador de Cloud SQL debe estar habilitada.
  • Debes proporcionar al proxy credenciales de autenticación de Google Cloud.
  • Debes proporcionar una cuenta de usuario y una contraseña válidas para la base de datos al proxy.
  • La instancia debe tener una dirección IPv4 pública o estar configurada para usar una IP privada.

    No es necesario que la dirección IP pública sea accesible para ninguna dirección externa (no es necesario agregarla como una dirección de red autorizada).

Opciones de inicio del proxy

Cuando inicias el proxy, le brindas la siguiente información:

  • Con qué instancias de Cloud SQL se deben establecer conexiones
  • Dónde escuchará los datos que vienen desde tu aplicación y que se enviarán a Cloud SQL.
  • Dónde encontrará las credenciales que usará para autenticar tu aplicación en Cloud SQL.
  • El tipo de dirección IP que usará, si fuera necesario.

Las opciones de inicio del proxy que proporciones determinan si el proxy escuchará en un puerto TCP o en un socket Unix. Si lo hace en un socket Unix, creará el socket en la ubicación que elegiste, que suele ser el directorio /cloudsql/. En TCP, el proxy escucha en localhost de forma predeterminada.

Inicia el ejecutable cloud_sql_proxy con el argumento --help para ver la lista completa de opciones de inicio.

Puedes instalar el proxy en cualquier parte de tu entorno local. La ubicación de los objetos binarios del proxy no afecta el lugar en el que se escuchan los datos desde tu aplicación.

Usa una cuenta de servicio para la autenticación

El proxy requiere autenticación. La ventaja de usar una cuenta de servicio en este caso es que puedes crear un archivo de credenciales específico para el proxy, que quedará vinculado a él de manera explícita y permanente mientras esté en ejecución. Por este motivo, el uso de una cuenta de servicio es el método recomendado para autenticar las instancias de producción que no se ejecutan en una instancia de Compute Engine.

Si necesitas invocar el proxy de Cloud SQL desde varias máquinas, puedes duplicar el archivo de credenciales en una imagen del sistema.

Para usar este método, debes crear y administrar el archivo de credenciales; Solo los usuarios que tengan el permiso resourcemanager.projects.setIamPolicy (como los propietarios de proyectos) pueden crear la cuenta de servicio. Si tu usuario de Google Cloud no tiene este permiso, debes hacer que otra persona cree la cuenta de servicio por ti o debes usar otro método para autenticar el proxy.

Para obtener ayuda con la creación de un archivo de credenciales, consulta la sección sobre cómo crear una cuenta de servicio y genera un archivo de claves.

Permisos necesarios para las cuentas de servicio

Cuando usas una cuenta de servicio para proporcionar credenciales al proxy, debes crearla con los permisos necesarios. Si usas las funciones más detalladas de Identity Access and Management (IAM) para administrar tus permisos de Cloud SQL, debes otorgar a la cuenta de servicio una función que incluya el permiso cloudsql.instances.connect. A continuación, se enumeran las funciones predefinidas de Cloud SQL que incluyen este permiso:

  • Cliente de Cloud SQL
  • Editor de Cloud SQL
  • Administrador de Cloud SQL

Si usas las funciones de proyecto heredadas (Lector, Editor, Propietario), la cuenta de servicio debe tener, al menos, la función de Editor.

Opciones para especificar las instancias de Cloud SQL

Existen varias formas de indicarle al proxy a qué instancias deseas conectarte. Algunas son explícitas y otras, implícitas. En algunas configuraciones, no tienes que indicarle al proxy con anticipación las instancias a las que deseas que se conecte porque lo hace según las solicitudes de conexión.

Las opciones para especificación de instancias dependen de tu sistema operativo y de tu entorno:

Opción Beneficios Advertencias y requisitos Linux/macOS
(sockets Unix)
Java Windows Notas
Descubrimiento automático de instancias No es necesario especificar instancias; los sockets se crean para todas las instancias en el proyecto predeterminado. Aumenta el uso de la API del proxy. Se debe tener instalado y autenticado el SDK de Cloud con una configuración de proyecto predeterminada. Se debe reiniciar el proxy para agregar una instancia nueva. Compatible No No No se recomienda en instancias de producción.
Descubrimiento del proyecto No es necesario especificar instancias; los sockets se crean para todas las instancias en proyectos específicos. Aumenta el uso de la API del proxy. Se debe tener instalado y autenticado el SDK de Cloud. Se debe reiniciar el proxy para agregar una instancia nueva. Compatible No No Usa el parámetro -projects. No se recomienda en instancias de producción.
Instancias especificadas en la invocación del proxy Lista de instancias conocidas y estáticas. Se debe reiniciar el proxy para agregar una instancia nueva. Compatible Compatible con los sockets TCP. Compatible con los sockets TCP. Usa el parámetro -instances. Cuando haya varias instancias, usa una lista separada por comas, sin espacios. Más información
Instancias especificadas con metadatos de Compute Engine La lista de instancias se puede actualizar solo con cambiar el valor de los metadatos, sin reiniciar el proxy. Disponible solo en Compute Engine. Compatible Compatible con los sockets TCP. Compatible con los sockets TCP. Usa la marca -instances_metadata. Obtén más información.

Consulta los ejemplos de invocaciones y strings de conexión.

Mantén actualizado el proxy de Cloud SQL

En ocasiones, Google lanza versiones nuevas del proxy. Puedes consultar la página de versiones GitHub del proxy de Cloud SQL para saber cuál es la versión actual. Las próximas versiones también se especificarán en el foro de anuncios de Cloud SQL de Grupos de Google.

Uso de la API

El proxy de Cloud SQL envía solicitudes a la API de Administrador de Cloud SQL. Estas solicitudes se deducen de la cuota de API para tu proyecto.

El mayor uso de la API se produce cuando inicias el proxy, en especial, si usas el descubrimiento automático de instancias o el parámetro -projects. Mientras el proxy está en ejecución, emite dos llamadas a la API por hora, por cada instancia conectada.

Parámetros y marcadores del proxy de Cloud SQL

El proxy de Cloud SQL acepta diversos marcadores y parámetros cuando inicia. Estas opciones determinan dónde y cómo el proxy de Cloud SQL crea los sockets que usa para comunicarse con Cloud SQL y cómo los autentica.

Para obtener ayuda con las opciones del proxy, consulta la siguiente información:

Usa el proxy de Cloud SQL en un entorno de producción

Cuando usas el proxy de Cloud SQL en un entorno de producción, debes seguir algunos pasos para asegurarte de que el proxy proporcione la disponibilidad que tu aplicación necesita.

Asegúrate de que el proxy de Cloud SQL se ejecute como un servicio persistente

Si se detiene el proceso del proxy, se descartan todas las conexiones existentes durante el proceso y tu aplicación no podrá crear más conexiones en la instancia de Cloud SQL con el proxy. Para evitar esta situación, asegúrate de ejecutar el proxy como un servicio persistente, de modo que si el proxy se cierra por algún motivo, se reinicie automáticamente. Esto se puede lograr mediante un servicio como systemd, upstart o supervisor. En el sistema operativo Windows, ejecuta el proxy como un servicio de Windows. En general, asegúrate de que el proxy tenga los mismos requisitos de tiempo de actividad que el proceso de tu aplicación.

Cuántas copias del proxy de Cloud SQL necesita tu aplicación

No es necesario crear un proceso de proxy para cada proceso de la aplicación. Muchos procesos de la aplicación pueden compartir el mismo proceso de proxy. Ejecuta un proceso de cliente proxy por estación de trabajo o máquina virtual.

Si usas el ajuste de escala automático para máquinas virtuales, asegúrate de que el proxy esté incluido en la configuración de tu máquina virtual. De esta forma, cada vez que se inicie una máquina virtual nueva, tendrá su propio proceso de proxy.

Depende de ti administrar la cantidad de conexiones que necesita tu aplicación, ya sea limitando o agrupando las conexiones. El proxy no impone ningún límite a las tasas de conexiones nuevas o al recuento de conexiones persistentes.

Cómo reducir el resultado del proxy de Cloud SQL

Si necesitas reducir el tamaño del registro del proxy, puedes configurar -verbose=false cuando inicies el proxy. Sin embargo, recuerda que esta acción reducirá la efectividad del resultado del proxy para diagnosticar problemas de conexión.

Cómo afecta la conmutación por error al proxy de Cloud SQL

Si estás ejecutando el proxy en una instancia configurada para alta disponibilidad y ocurre una conmutación por error, las conexiones mediante el proxy se verán afectadas de la misma manera que las conexiones por IP: se pierden todas las conexiones existentes y la aplicación debe establecer conexiones nuevas. Sin embargo, no se necesita intervención manual; la aplicación puede continuar con las mismas strings de conexión que antes.

Cómo mantener actualizada la imagen de Docker del proxy

La imagen de Docker del proxy se basa en una versión específica del proxy de Cloud SQL. Cuando esté disponible una versión nueva del proxy de Cloud SQL, extrae la versión nueva de la imagen de Docker del proxy para mantener actualizado el entorno. Puedes ver la versión actual del proxy de Cloud SQL si consultas la página de versiones GitHub del proxy de Cloud SQL.

¿Qué sigue?