Acerca del proxy de Cloud SQL Auth

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

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

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

Pruébalo tú mismo

Si es la primera vez que usas Google Cloud, crea una cuenta para evaluar el rendimiento de Cloud SQL en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.

Probar Cloud SQL gratis

Qué proporciona el proxy de Cloud SQL Auth

El proxy de autenticación 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 autenticación de Cloud SQL ofrece las siguientes ventajas:

  • Conexiones seguras: el proxy de autenticación de Cloud SQL encripta automáticamente el tráfico hacia y desde la base de datos mediante el uso de TLS 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 de autenticación de Cloud SQL controla la autenticación con Cloud SQL, por lo que ya no es necesario proporcionar direcciones IP estáticas.

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

Cómo funciona el proxy de autenticación de Cloud SQL

El proxy de autenticación de Cloud SQL funciona con un cliente local que se ejecuta en el entorno local. La aplicación se comunica con el proxy de autenticación de Cloud SQL mediante el protocolo de base de datos estándar que usa tu base de datos. El proxy de autenticación de Cloud SQL usa un túnel seguro para comunicarse con el proceso complementario que se ejecuta en el servidor. Cada conexión establecida a través del proxy de autenticación de Cloud SQL crea una conexión con la instancia de Cloud SQL. El proxy de autenticación de Cloud SQL no proporciona agrupación de conexiones, pero se puede sincronizar con otras agrupaciones de conexiones para aumentar la eficiencia.

Si bien el proxy de autenticación de Cloud SQL puede escuchar en cualquier puerto, solo crea conexiones salientes a tu instancia de Cloud SQL en el puerto 3307. Si tu máquina cliente tiene una política de firewall saliente, asegúrate de permitir conexiones salientes al puerto 3307 en la IP de tu instancia de Cloud SQL.

En el siguiente diagrama, se muestra cómo se conecta el proxy de autenticación de Cloud SQL a Cloud SQL:

Diagrama del proxy de autenticación de Cloud SQL que se conecta desde el software del cliente a una instancia de SQL

Requisitos para usar el proxy de autenticación de Cloud SQL

Para usar el proxy de autenticación de Cloud SQL, debes cumplir los siguientes requisitos:

  • La API de Administrador de Cloud SQL debe estar habilitada.
  • Debes proporcionar al proxy de autenticación de Cloud SQL las credenciales de autenticación de Google Cloud.
  • Debes proporcionar al proxy de autenticación de Cloud SQL una cuenta de usuario y una contraseña válidas para la base de datos.
  • 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).

Descarga y, luego, instala el proxy de autenticación de Cloud SQL

Linux de 64 bits

  1. Descarga el proxy de autenticación de Cloud SQL:
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 -O cloud_sql_proxy
    
  2. Haz que el proxy de autenticación de Cloud SQL sea ejecutable:
    chmod +x cloud_sql_proxy
    

Linux de 32 bits

  1. Descarga el proxy de autenticación de Cloud SQL:
    wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.386 -O cloud_sql_proxy
    
  2. Si no se encuentra el comando wget, ejecuta sudo apt-get install wget y repite el comando de descarga.
  3. Haz que el proxy de autenticación de Cloud SQL sea ejecutable:
    chmod +x cloud_sql_proxy
    

macOS de 64 bits

  1. Descarga el proxy de autenticación de Cloud SQL:
    curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.amd64
    
  2. Haz que el proxy de autenticación de Cloud SQL sea ejecutable:
    chmod +x cloud_sql_proxy
    

macOS de 32 bits

  1. Descarga el proxy de autenticación de Cloud SQL:
    curl -o cloud_sql_proxy https://dl.google.com/cloudsql/cloud_sql_proxy.darwin.386
    
  2. Haz que el proxy de autenticación de Cloud SQL sea ejecutable:
    chmod +x cloud_sql_proxy
    

Windows de 64 bits

Para descargar el proxy de autenticación de Cloud SQL, haz clic con el botón derecho en https://dl.google.com/cloudsql/cloud_sql_proxy_x64.exe y selecciona Guardar vínculo como. Cambia el nombre del archivo por cloud_sql_proxy.exe.

Windows de 32 bits

Para descargar el proxy de autenticación de Cloud SQL, haz clic derecho en https://dl.google.com/cloudsql/cloud_sql_proxy_x86.exe y selecciona Guardar vínculo como. Cambia el nombre del archivo por cloud_sql_proxy.exe.

Imagen de Docker del proxy de Cloud SQL Auth

Para mayor comodidad, varias imágenes de contenedor que contienen el proxy de autenticación de Cloud SQL están disponibles en GitHub en el repositorio del proxy de autenticación de Cloud SQL. Puedes extraer la última imagen a tu máquina local usando Docker mediante el siguiente comando:
docker pull gcr.io/cloudsql-docker/gce-proxy:1.19.1

Otro SO

Para otros sistemas operativos que no se incluyen aquí, puedes compilar el proxy de Cloud SQL Auth desde la fuente.

Opciones de inicio del proxy de Cloud SQL Auth

Cuando inicias el proxy de autenticación de Cloud SQL, le proporcionas 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 de autenticación de Cloud SQL 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 el caso de las conexiones TCP, el proxy de autenticación de Cloud SQL 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 de autenticación de Cloud SQL en cualquier lugar de tu entorno local. La ubicación de los objetos binarios del proxy de autenticación de Cloud SQL no influye en dónde se escuchan los datos de tu aplicación.

Usa una cuenta de servicio para la autenticación

El proxy de autenticación de Cloud SQL requiere autenticación. La ventaja de usar una cuenta de servicio para este propósito es que puedes crear un archivo de credenciales específico para el proxy de autenticación de Cloud SQL, que se vincula de manera explícita y permanente al proxy de autenticación de Cloud SQL, siempre que se ejecute. 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 autenticación 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 autenticación de Cloud SQL 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 de autenticación de Cloud SQL.

Aprende a crear una cuenta de servicio.

Permisos necesarios para las cuentas de servicio

Cuando usas una cuenta de servicio para proporcionar credenciales al proxy de autenticación de Cloud SQL, 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 de autenticación de Cloud SQL a qué instancias deseas conectarte. Algunas son explícitas y otras, implícitas. En algunas configuraciones, no tienes que indicarle al proxy de autenticación de Cloud SQL con anticipación las instancias a las que deseas conectarte, ya que el proxy de autenticación de Cloud SQL se conecta 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
FUSE
(Sistema de archivos en el espacio del usuario)
Creación de socket dinámico según los requisitos de la conexión. No es necesario reiniciar el proxy, ya que las instancias cambian. Se debe instalar FUSE. Compatible No No Usa la marca -fuse.
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 de autenticación de Cloud SQL. Se debe tener instalado y autenticado el SDK de Cloud con una configuración de proyecto predeterminada. Se debe reiniciar el proxy de autenticación de Cloud SQL para agregar una instancia nueva. Admitido 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 de autenticación de Cloud SQL. Se debe tener instalado y autenticado el SDK de Cloud. Se debe reiniciar el proxy de autenticación de Cloud SQL para agregar una instancia nueva. Admitido No No Usa el parámetro -projects. No se recomienda en instancias de producción.
Instancias especificadas en la invocación del proxy de autenticación de Cloud SQL Lista de instancias conocidas y estáticas. Se debe reiniciar el proxy de autenticación de Cloud SQL para agregar una instancia nueva. Admitido 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 Se puede actualizar la lista de instancias con solo cambiar el valor de los metadatos sin reiniciar el proxy de autenticación de Cloud SQL. 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 Auth

En ocasiones, Google lanza versiones nuevas del proxy de autenticación de Cloud SQL Puedes consultar la página de versiones GitHub del proxy de autenticación 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 autenticación 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 de autenticación de Cloud SQL, en especial, si usas el descubrimiento automático de instancias o el parámetro -projects. Mientras el proxy de Cloud SQL Auth está en ejecución, emite 2 llamadas a la API por hora, por cada instancia conectada.

Información sobre cómo crear una cuenta de usuario especial para el proxy de Cloud SQL Auth

Cuando te conectas a tu instancia con el proxy de Cloud SQL Auth, proporcionas una cuenta de usuario que se usa para acceder a la instancia. Para esto, puedes usar cualquier cuenta de usuario de base de datos. Sin embargo, debido a que el proxy de Cloud SQL Auth siempre se conecta desde un nombre de host al que solo se puede acceder mediante el proxy de Cloud SQL Auth, puedes crear una cuenta de usuario para que use solo el proxy de Cloud SQL Auth. La ventaja de hacer esto es que puedes especificar la cuenta sin una contraseña y no comprometes la seguridad de tu instancia o de tus datos.

Si quieres crear una cuenta de usuario para las conexiones de proxy de Cloud SQL Auth, especifica el nombre de host como 'cloudsqlproxy~[IP_ADDRESS]'. También puedes usar el comodín de dirección IP, que daría como resultado 'cloudsqlproxy~%'. El nombre completo de la cuenta de usuario sería el siguiente:

'[USER_NAME]'@'cloudsqlproxy~%'

o

'[USER_NAME]'@'cloudsqlproxy~[IP_ADDRESS]'

Para obtener ayuda con la creación de un usuario, consulta Cómo crear y administrar usuarios. Para obtener información sobre cómo funciona Cloud SQL con cuentas de usuario, consulta Usuarios de MySQL. Para obtener información sobre las cuentas de usuario de MySQL, consulta la página sobre cómo asegurar las cuentas iniciales de MySQL en la documentación de MySQL.

Parámetros y marcas del proxy de Cloud SQL Auth

El proxy de autenticación de Cloud SQL acepta diversos marcadores y parámetros cuando se inicia. Estas opciones determinan dónde y cómo el proxy de autenticación 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 de autenticación de Cloud SQL, consulta la siguiente información:

Cómo se usa FUSE con el proxy de Cloud SQL Auth

FUSE significa “Filesystem in User Space” (Sistema de archivos en el espacio del usuario). Según cómo se invoque el proxy de Cloud SQL Auth, este tiene la opción de usar FUSE para crear los sockets que utiliza con el fin de conectarse con Cloud SQL.

Si te conectas desde Compute Engine o entornos de desarrollo locales, el proxy de Cloud SQL Auth utiliza FUSE para acceder a las instancias de Cloud SQL de la siguiente manera:

  • El directorio “/cloudsql” se activa como un sistema de archivos en el espacio del usuario, o FUSE, mediante el proxy de Cloud SQL Auth.

  • Un proceso (por ejemplo, mysql) intenta buscar un archivo llamado $INSTANCE.

  • El proxy de Cloud SQL Auth intercepta la solicitud y muestra que /cloudsql/$INSTANCE es un vínculo simbólico que apunta a un socket Unix ubicado en cualquier otro lugar del sistema de archivos.

  • El proceso (por ejemplo, mysql) sigue el vínculo, abre el socket Unix y se conecta.

Instala FUSE

Para Linux:

Para funcionar, FUSE requiere el programa fusermount y un módulo de kernel. Para verificar si el programa está instalado, busca el archivo /dev/fuse/. Si fusermount no está en el sistema, puedes instalarlo con un administrador de paquetes o mediante la compilación desde la fuente.

Para macOS:

Instala FUSE para macOS.

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

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

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

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

Cuántas copias del proxy de autenticación 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 un solo proceso de proxy de autenticación de Cloud SQL. Ejecuta un proceso de cliente del proxy de autenticación de Cloud SQL por estación de trabajo o por máquina virtual.

Si usas el ajuste de escala automático para máquinas virtuales, asegúrate de que el proxy de autenticación de Cloud SQL 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 de autenticación de Cloud SQL.

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

Reduce el resultado del proxy de autenticación de Cloud SQL

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

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

Si estás ejecutando el proxy de autenticación de Cloud SQL en una instancia configurada para alta disponibilidad y ocurre una conmutación por error, las conexiones mediante el proxy de autenticación de Cloud SQL 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.

Mantén actualizada la imagen de Docker del proxy de autenticación de Cloud SQL

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

¿Qué sigue?