En esta página se resume el proxy de autenticación de Cloud SQL y se describe cómo usarlo para establecer conexiones autorizadas, cifradas y seguras con tus instancias.
Para obtener instrucciones detalladas sobre cómo usar el proxy de autenticación de Cloud SQL, sigue el enlace correspondiente a tu entorno:
- Guía de inicio rápido para usar el proxy de autenticación de Cloud SQL
- Cómo conectarse mediante el proxy de autenticación de Cloud SQL
- Cómo conectarse mediante el proxy de autenticación de Cloud SQL desde GKE
No es necesario que uses el proxy de autenticación de Cloud SQL ni que configures SSL para conectarte a Cloud SQL desde el entorno estándar de App Engine o el entorno flexible de App Engine.
Ventajas 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 redes autorizadas ni de configurar SSL.
El proxy de autenticación de Cloud SQL y otros conectores de Cloud SQL ofrecen las siguientes ventajas:
- Conexiones seguras: el proxy de autenticación de Cloud SQL cifra automáticamente el tráfico hacia y desde la base de datos mediante TLS 1.3 con la selección de cifrado determinada por las reglas de Go. Los certificados SSL se usan para verificar las identidades de los clientes y los servidores, y son independientes de los protocolos de las bases de datos, por lo que no tendrás que gestionarlos.
- 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 tus instancias de Cloud SQL. Por lo tanto, el proxy de autenticación de Cloud SQL gestiona la autenticación con Cloud SQL, por lo que no es necesario proporcionar direcciones IP estáticas.
- Autenticación de bases de datos de gestión de identidades y accesos De forma opcional, el proxy de autenticación de Cloud SQL admite la actualización automática de tokens de acceso OAuth 2.0. Para obtener información sobre esta función, consulta Autenticación de bases de datos de gestión de identidades y accesos de Cloud SQL.
El proxy de autenticación de Cloud SQL no proporciona una nueva ruta de conectividad, sino que 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.
Limitaciones
No puedes usar el proxy de autenticación de Cloud SQL si utilizas acceso contextual y la autenticación de bases de datos de IAM. Cuando intentas iniciar sesión en la instancia, falla la autenticación de IAM.
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. Tu 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 a la instancia de Cloud SQL.
Cuando una aplicación se conecta al proxy de autenticación de Cloud SQL, comprueba si hay una conexión entre ella y la instancia de Cloud SQL de destino. Si no existe ninguna conexión, llama a las APIs Cloud SQL Admin para obtener un certificado SSL efímero y lo usa para conectarse a Cloud SQL. Los certificados SSL efímeros caducan en aproximadamente una hora. El proxy de autenticación de Cloud SQL actualiza estos certificados antes de que caduquen.
El proxy de autenticación de Cloud SQL no proporciona agrupación de conexiones, pero se puede combinar 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:
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 Admin de Cloud SQL debe estar habilitada.
- Debes proporcionar al proxy de autenticación de Cloud SQL Google Cloud credenciales de autenticación.
- Debes proporcionar al proxy de autenticación de Cloud SQL un nombre de usuario y una contraseña válidos de 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 se pueda acceder a la dirección IP pública desde ninguna dirección externa (no es necesario añadirla como dirección de red autorizada).
Si la instancia de Cloud SQL a la que te conectas usa una autoridad de certificación (CA) compartida para su ajuste serverCaMode
, en el lado del cliente debes usar el proxy de autenticación de Cloud SQL versión 2.13.0 o posterior.
Si la instancia de Cloud SQL a la que te conectas usa una CA gestionada por el cliente para su ajuste serverCaMode
, debes usar la versión 2.14.3 o posterior del proxy de autenticación de Cloud SQL en el lado del cliente.
Cuando una instancia usa una CA gestionada por el cliente como modo de CA de servidor, puedes configurar la instancia con un nombre de DNS personalizado. El nombre de DNS personalizado se proporciona en el campo de nombre alternativo del firmante (SAN) personalizado del certificado de servidor.
Después de configurar un nombre de DNS personalizado para la instancia, puedes conectarte a ella desde los conectores de lenguaje de Cloud SQL mediante el nombre de DNS.
Descargar e instalar el proxy de autenticación de Cloud SQL
Linux de 64 bits
- 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.18.2/cloud-sql-proxy.linux.amd64
- Haz que el proxy de autenticación de Cloud SQL sea ejecutable:
chmod +x cloud-sql-proxy
Linux de 32 bits
- 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.18.2/cloud-sql-proxy.linux.386
- Si no se encuentra el comando
curl
, ejecutasudo apt install curl
y repite el comando de descarga. - Haz que el proxy de autenticación de Cloud SQL sea ejecutable:
chmod +x cloud-sql-proxy
macOS de 64 bits
- 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.18.2/cloud-sql-proxy.darwin.amd64
- Haz que el proxy de autenticación de Cloud SQL sea ejecutable:
chmod +x cloud-sql-proxy
Mac M1
- 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.18.2/cloud-sql-proxy.darwin.arm64
- 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.18.2/cloud-sql-proxy.x64.exe y selecciona Guardar enlace como para descargar el proxy de autenticación de Cloud SQL. Cambia el nombre del archivo acloud-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.18.2/cloud-sql-proxy.x86.exe y selecciona Guardar enlace como para descargar el proxy de autenticación de Cloud SQL. Cambia el nombre del archivo acloud-sql-proxy.exe
.
Imagen de Docker del proxy de autenticación 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 predeterminada del proxy de autenticación de Cloud SQL usa distroless
, que no contiene ningún shell. Si necesitas un 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 imagen más reciente en tu máquina local con Docker mediante el siguiente comando:
docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.18.2
Otros SO
En el caso de otros sistemas operativos que no se incluyan aquí, puedes compilar el proxy de autenticación de Cloud SQL a partir del código 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:
- A qué instancias de Cloud SQL se deben establecer las conexiones
- Dónde escuchará los datos procedentes de tu aplicación para enviarlos 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 se debe usar, si es necesario.
Las opciones de inicio del proxy de autenticación de Cloud SQL que proporciones determinarán si 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 elijas; normalmente, el directorio /cloudsql/.
En el caso de TCP, el proxy de autenticación de Cloud SQL escucha en localhost
de forma predeterminada.
Ejecuta el archivo 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 archivos binarios del proxy de autenticación de Cloud SQL no influye en el lugar en el que escucha los datos de tu aplicación.
Para obtener más información sobre cómo iniciar el proxy de autenticación de Cloud SQL, consulta Iniciar el proxy de autenticación de Cloud SQL.
Usar una cuenta de servicio para la autenticación
El proxy de autenticación de Cloud SQL requiere que te autentiques como identidad de IAM de Cloud SQL para autorizar tus conexiones a una instancia de Cloud SQL.
La ventaja de usar una cuenta de servicio para este fin es que puedes crear un archivo de credenciales específicamente para el proxy de autenticación de Cloud SQL, que estará vinculado de forma explícita y permanente al proxy de autenticación de Cloud SQL mientras se esté ejecutando. Por este motivo, se recomienda usar una cuenta de servicio en las instancias de producción que no se ejecuten en una instancia de Compute Engine.
El archivo de credenciales se puede duplicar en una imagen del sistema si necesitas invocar el proxy de autenticación de Cloud SQL desde varias máquinas.
Para utilizar este método, es necesario crear y administrar el archivo de credenciales. Solo los usuarios con el permiso resourcemanager.projects.setIamPolicy
(como los propietarios de proyectos) pueden crear la cuenta de servicio. Si tu usuario deGoogle Cloud no tiene este permiso, debes pedirle a otra persona que cree la cuenta de servicio por ti o usar otro método para autenticar el proxy de autenticación de Cloud SQL.
Consulta cómo crear una cuenta de servicio.
Permisos obligatorios para las cuentas de servicio
Cuando usas una cuenta de servicio para proporcionar las credenciales del proxy de autenticación de Cloud SQL, debes crearla con los permisos suficientes. Si usas los roles de Gestión de Identidades y Accesos (IAM) más específicos para gestionar tus permisos de Cloud SQL, debes asignar a la cuenta de servicio un rol que incluya el permiso cloudsql.instances.connect
. Los roles de Cloud SQL predefinidos que incluyen este permiso son los siguientes:
- Cliente de Cloud SQL
- Editor de Cloud SQL
- Administrador de Cloud SQL
Si usas los roles de proyecto antiguos (Lector, Editor y Propietario), la cuenta de servicio debe tener al menos el rol Editor.
Mantener actualizado el proxy de autenticación de Cloud SQL
De vez en cuando, Google publica nuevas versiones del proxy de autenticación de Cloud SQL. Para ver la versión actual, consulta la página de lanzamientos de GitHub del proxy de autenticación de Cloud SQL. Las futuras versiones del proxy también se indicarán en el foro Google Groups Cloud SQL announce.
Uso de la API
El proxy de autenticación de Cloud SQL envía solicitudes a la API Admin de Cloud SQL. Estas solicitudes se tienen en cuenta en la cuota de la API de tu proyecto.
El uso más alto 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 instancia conectada.
Parámetros y marcas del proxy de autenticación de Cloud SQL
El proxy de autenticación de Cloud SQL acepta varias marcas y parámetros cuando se inicia. Estas opciones determinan dónde y cómo crea el proxy de autenticación de Cloud SQL los sockets que usa para comunicarse con Cloud SQL, así como el método de autenticación.
Para obtener ayuda con las opciones del proxy de autenticación de Cloud SQL, consulta la siguiente información:
- Opciones para autenticar el proxy de autenticación de Cloud SQL
- Ejemplos de invocaciones del proxy de autenticación de Cloud SQL
- Página de GitHub del proxy de autenticación de Cloud SQL
- Ayuda del proxy de autenticación de Cloud SQL, que se muestra con
./cloud-sql-proxy --help
Usar 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, puedes seguir algunos pasos para asegurarte de que el proxy de autenticación de Cloud SQL proporcione la disponibilidad necesaria para tu aplicación.
Asegúrate de que el proxy de autenticación de Cloud SQL se ejecute como un servicio persistente
Si se detiene el proceso del proxy de autenticación de Cloud SQL, se eliminarán todas las conexiones existentes a través de él y tu aplicación no podrá crear más conexiones a la instancia 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 para que, si se cierra por cualquier motivo, se reinicie automáticamente. Para ello, puedes usar 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. En general, asegúrate 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 aplicación. Muchos procesos de aplicación pueden compartir un único proceso de proxy de autenticación de Cloud SQL. Ejecuta un proceso de cliente del proxy de autenticación de Cloud SQL por cada estación de trabajo o máquina virtual.
Si usas el escalado automático de 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 para que, cada vez que se inicie una nueva máquina virtual, tenga su propio proceso de proxy de autenticación de Cloud SQL.
Tú decides cuántas conexiones necesita la aplicación limitándolas o agrupándolas. El proxy de autenticación de Cloud SQL no impone ningún límite en las tasas de nuevas conexiones ni en el número de conexiones persistentes.
Reducir la salida del proxy de autenticación de Cloud SQL
Si necesitas reducir el tamaño del registro del proxy de autenticación de Cloud SQL, puedes hacerlo configurando --quiet
al iniciar el proxy de autenticación de Cloud SQL. Sin embargo, ten en cuenta que, al hacerlo, se reduce la eficacia de la salida del proxy de autenticación de Cloud SQL a la hora de diagnosticar problemas de conexión.
Cómo afecta la conmutación por error al proxy de autenticación de Cloud SQL
Si ejecutas el proxy de autenticación de Cloud SQL en una instancia configurada para alta disponibilidad y se produce una conmutación por error, las conexiones a través del proxy de autenticación de Cloud SQL se verán afectadas de la misma forma que las conexiones a través de IP: se perderán todas las conexiones existentes y la aplicación deberá establecer nuevas conexiones. Sin embargo, no es necesario que intervengas manualmente, ya que la aplicación puede seguir usando las mismas cadenas de conexión que antes.
Mantener actualizada la imagen 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 haya una nueva versión del proxy de autenticación de Cloud SQL, extrae la nueva versión de la imagen Docker del proxy de autenticación de Cloud SQL para mantener tu entorno actualizado. Puedes consultar la versión actual del proxy de autenticación de Cloud SQL en la página de lanzamientos de GitHub del proxy de autenticación de Cloud SQL.
Cómo obligar a usar el proxy de autenticación de Cloud SQL
Puede aplicar el uso del proxy de autenticación de Cloud SQL en las conexiones de instancias de Cloud SQL mediante ConnectorEnforcement. Con la aplicación de conectores, se rechazan las conexiones directas a bases de datos.
Para usar la validación de conectores, se usa el campo ConnectorEnforcement
en la API instances
.
Si usas una instancia habilitada para Private Service Connect, hay una limitación. Si la instancia tiene habilitada la aplicación de conectores, no puedes crear réplicas de lectura para la instancia. Del mismo modo, si la instancia tiene réplicas de lectura, no puedes habilitar la aplicación de conectores en ella.
Para obtener más información sobre cómo obligar a usar solo el proxy de autenticación de Cloud SQL o los conectores de lenguaje de Cloud SQL para conectarse a una instancia, consulta Obligar a usar el proxy de autenticación de Cloud SQL.
Información sobre el operador del proxy de Cloud SQL
Cloud SQL Proxy Operator es un operador de Kubernetes de código abierto que automatiza la conexión de cargas de trabajo de un clúster de GKE a bases de datos de Cloud SQL. El operador de proxy de autenticación de Cloud SQL utiliza un recurso personalizado AuthProxyWorkload que especifica la configuración del proxy de autenticación de Cloud SQL para una carga de trabajo concreta. El operador del proxy de autenticación de Cloud SQL lee este recurso y añade un contenedor del proxy de autenticación de Cloud SQL con la configuración necesaria a las cargas de trabajo correspondientes.
Cuando instales el operador en tu clúster de GKE y configures tus cargas de trabajo y tus instancias de Cloud SQL, el operador del proxy de autenticación de Cloud SQL configurará automáticamente el proxy de autenticación de Cloud SQL y conectará las cargas de trabajo de GKE a tus instancias de Cloud SQL.
El operador del proxy de autenticación de Cloud SQL también comprueba el estado del proxy de autenticación de Cloud SQL. Si el proxy de autenticación de Cloud SQL no puede conectarse, el operador del proxy de autenticación de Cloud SQL genera información de depuración y te proporciona instrucciones para solucionar y corregir problemas de configuración habituales.
Para obtener más información, consulta Conectarse mediante el operador del proxy de Cloud SQL.