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:
- 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 con el proxy de autenticación de Cloud SQL desde GKE
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 gratisBeneficios 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.
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:
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).
Si la instancia de Cloud SQL a la que te conectas usa una autoridad certificadora (AC) compartida para su configuración de serverCaMode
, en el lado del cliente, debes usar la versión 2.13.0 o una posterior del proxy de autenticación de Cloud SQL.
El modo de AC compartido está en (versión preliminar).
Descarga y, luego, instala el proxy de Cloud SQL Auth
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.14.1/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.14.1/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.14.1/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.14.1/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.14.1/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 porcloud-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.14.1/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 porcloud-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.14.1
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.
Información sobre cómo crear una cuenta de usuario especial para el proxy de autenticación de Cloud SQL
Cuando te conectas a tu instancia con el proxy de autenticación de Cloud SQL, 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 autenticación de Cloud SQL siempre se conecta desde un nombre de host al que solo se puede acceder mediante el proxy de autenticación de Cloud SQL, puedes crear una cuenta de usuario para que use solo el proxy de autenticación de Cloud SQL. 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 del proxy de autenticación de Cloud SQL, 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 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:
- Opciones para autenticar el proxy de autenticación de Cloud SQL
- Invocaciones del proxy de autenticación de Cloud SQL de ejemplo
- Página de GitHub del proxy de autenticación de Cloud SQL
- La ayuda del proxy de autenticación de Cloud SQL que se muestra con
./cloud-sql-proxy --help
Cómo se usa FUSE con el proxy de autenticación de Cloud SQL
FUSE significa “Filesystem in User Space” (Sistema de archivos en el espacio del usuario). Según cómo se invoque el proxy de autenticación de Cloud SQL, 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 autenticación de Cloud SQL 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 autenticación de Cloud SQL.
Un proceso (por ejemplo,
mysql
) intenta buscar un archivo llamado $INSTANCE.El proxy de autenticación de Cloud SQL 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 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
.
Si usas una instancia habilitada para Private Service Connect, existe una limitación. Si la instancia tiene habilitada la aplicación forzosa de conectores, no puedes crear réplicas de lectura para ella. Del mismo modo, si la instancia tiene réplicas de lectura, no puedes habilitar la aplicación forzosa de conectores para la instancia.
Para obtener más información sobre cómo aplicar el uso solo del proxy de autenticación de Cloud SQL o los conectores de lenguaje de Cloud SQL para conectarse a una instancia, consulta Aplica el uso del proxy de autenticación de Cloud SQL.
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.