Acerca del proxy de Cloud SQL Auth

En esta página, se resume el proxy de autenticación de Cloud SQL y se describe cómo usarlo para establecer conexiones autorizadas, encriptadas y seguras a tus instancias.

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.

Beneficios del proxy de autenticación de Cloud SQL

El proxy de autenticación de Cloud SQL es un conector de Cloud SQL que proporciona acceso seguro a tus instancias sin necesidad de usar Redes autorizadas ni de configurar SSL.

El proxy de autenticación de Cloud SQL y otros conectores de Cloud SQL tienen 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 a través de TLS 1.3 con la selección del algoritmo de cifrado que determinan las reglas de Go. Los certificados SSL se usan para verificar las identidades del cliente y del servidor, y son independientes de los protocolos de base de datos; no necesitarás administrar certificados SSL.
  • Autorización de conexión más sencilla: el proxy de autenticación de Cloud SQL usa permisos de IAM para controlar quién y qué puede conectarse a las instancias de Cloud SQL. Por lo tanto, 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.
  • Autenticación de la base de datos de IAM. De manera opcional, el proxy de autenticación de Cloud SQL admite una actualización automática de tokens de acceso de OAuth 2.0. Para obtener información sobre esta funcionalidad, consulta Autenticación de la base de datos de IAM de Cloud SQL.

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 con 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 a través del 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.

Cuando una aplicación se conecta al proxy de autenticación de Cloud SQL, este verifica si hay una conexión existente entre ella y la instancia de Cloud SQL de destino. Si no existe una conexión, llama a las API de Cloud SQL Admin para obtener un certificado SSL efímero y lo usa para conectarse a Cloud SQL. Los certificados SSL efímeros vencen en una hora aproximadamente. El proxy de autenticación de Cloud SQL actualiza estos certificados antes de que venzan.

Si bien el proxy de autenticación de Cloud SQL puede escuchar en cualquier puerto, crea conexiones salientes o de salida a tu instancia de Cloud SQL solo en el puerto 3307. Debido a que el proxy de autenticación de Cloud SQL llama a las APIs a través del nombre de dominio sqladmin.googleapis.com, que no tiene una dirección IP fija, se deben permitir todas las conexiones de TCP de salida en el puerto 443. Si tu máquina cliente tiene una política de firewall saliente, asegúrate de que permita conexiones salientes al puerto 3307 en la IP de tu instancia de Cloud SQL.

El proxy de autenticación de Cloud SQL no proporciona agrupación de conexiones, pero se puede vincular con otras agrupaciones de conexiones para aumentar la eficiencia.

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 Cloud SQL Admin 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:
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.13.0/cloud-sql-proxy.linux.amd64
  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:
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.13.0/cloud-sql-proxy.linux.386
  2. Si no se encuentra el comando curl, ejecuta sudo apt install curl 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://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.13.0/cloud-sql-proxy.darwin.amd64
  2. Haz que el proxy de autenticación de Cloud SQL sea ejecutable:
    chmod +x cloud-sql-proxy

Mac M1

  1. Descarga el proxy de autenticación de Cloud SQL:
      curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.13.0/cloud-sql-proxy.darwin.arm64
      
  2. Haz que el proxy de autenticación de Cloud SQL sea ejecutable:
      chmod +x cloud-sql-proxy
      

Windows de 64 bits

Haz clic con el botón derecho en https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.13.0/cloud-sql-proxy.x64.exe y selecciona Guardar vínculo como para descargar el proxy de autenticación de Cloud SQL. Cambia el nombre del archivo por cloud-sql-proxy.exe.

Windows de 32 bits

Haz clic con el botón derecho en https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.13.0/cloud-sql-proxy.x86.exe y selecciona Guardar vínculo como para descargar el proxy de autenticación de Cloud SQL. Cambia el nombre del archivo por cloud-sql-proxy.exe.

Imagen de Docker del proxy de Cloud SQL 

El proxy de autenticación de Cloud SQL tiene diferentes imágenes de contenedor, como distroless, alpine y buster. La imagen de contenedor del proxy de autenticación de Cloud SQL predeterminada usa distroless, que no contiene shell. Si necesitas una shell o herramientas relacionadas, descarga una imagen basada en alpine o buster. Para obtener más información, consulta Imágenes de contenedor del proxy de autenticación de Cloud SQL.

Puedes extraer la última imagen a tu máquina local con Docker a través del siguiente comando:

docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.13.0

Otro SO

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

Opciones de inicio del proxy de autenticación de Cloud SQL

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 de TCP o en un socket de 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 de 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.

Para obtener más información para iniciar el proxy de autenticación de Cloud SQL, consulta Inicia el proxy de autenticación de Cloud SQL.

Usa una cuenta de servicio para la autenticación

El proxy de autenticación de Cloud SQL requiere la autenticación como identidad de IAM de Cloud SQL para autorizar las conexiones a una instancia de Cloud SQL.

La ventaja de usar una cuenta de servicio con 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, siempre que se esté ejecutando. 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 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 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.

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 Cloud SQL Admin. 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. Mientras el proxy de autenticación de Cloud SQL está en ejecución, emite 2 llamadas a la API por hora, por cada instancia conectada.

Parámetros y marcas del proxy de autenticación de Cloud SQL

El proxy de autenticación de Cloud SQL acepta marcas y parámetros diversos 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:

Usa el proxy de autenticación de Cloud SQL 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 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 automáticamente. 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 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 --quiet 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 Cloud SQL Auth se basa en una versión específica del proxy de Cloud SQL Auth. 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. Para ver la versión actual del proxy de autenticación de Cloud SQL, consulta la página de versiones de GitHub del proxy de autenticación de Cloud SQL.

Cómo aplicar el uso del proxy de autenticación de Cloud SQL

Puedes aplicar el uso del proxy de autenticación de Cloud SQL en conexiones de instancias de Cloud SQL mediante ConnectorEnforcement. Con la aplicación del conector, se rechaza la conexión directa a la base de datos.

Para usar la aplicación del conector, utiliza el campo ConnectorEnforcement en la API de instances.

Para obtener más información, consulta Edita instancias.

Acerca del operador de proxy de Cloud SQL

El operador de proxy de Cloud SQL es un operador de Kubernetes de código abierto que automatiza la conexión de cargas de trabajo en un clúster de GKE con las bases de datos de Cloud SQL. El operador de proxy de autenticación de Cloud SQL usa un recurso AuthProxyWorkload personalizado que especifica la configuración del proxy de autenticación de Cloud SQL para una carga de trabajo específica. El operador de proxy de autenticación de Cloud SQL lee este recurso y agrega un contenedor de proxy de autenticación de Cloud SQL con la configuración necesaria a las cargas de trabajo adecuadas.

Cuando instalas el operador en tu clúster de GKE y configuras tus cargas de trabajo y las instancias de Cloud SQL, el operador de proxy de autenticación de Cloud SQL configura automáticamente el proxy de autenticación de Cloud SQL y conecta las cargas de trabajo de GKE a tus instancias de Cloud SQL.

El operador de proxy de autenticación de Cloud SQL también verifica el estado del proxy de autenticación de Cloud SQL. Si el proxy de autenticación de Cloud SQL no puede conectarse, el operador de proxy de autenticación de Cloud SQL genera información de depuración y te proporciona orientación para solucionar y reparar problemas comunes de configuración.

Para obtener más información, consulta Conéctate mediante el operador de proxies de Cloud SQL.

¿Qué sigue?