Conectarse a una instancia de Cloud SQL desde fuera de su VPC

En esta página se describe cómo conectarse a una instancia de Cloud SQL desde fuera de su nube privada virtual (VPC) configurada.

Antes de empezar

Antes de empezar, asegúrate de completar las siguientes acciones:

  1. Crea una instancia de Cloud SQL.
  2. Configura tu instancia para que use una dirección IP interna en lugar de una dirección IP externa.

Acerca de las conexiones externas

Tu instancia de Cloud SQL consta de varios nodos dentro de una VPC gestionada por Google. Cuando creas una instancia, también configuras el acceso a servicios privados o Private Service Connect entre una de tus VPCs y la VPC gestionada por Google que contiene tu nueva instancia. Esta conexión de emparejamiento te permite usar direcciones IP internas para acceder a los recursos de la VPC de la instancia como si formaran parte de tu propia VPC.

En las siguientes situaciones, conéctate a tu instancia desde fuera de una VPC conectada:

  • Tu aplicación se ejecuta fuera de la VPC que has usado para conectarte a tu instancia mediante el acceso a servicios privados o Private Service Connect.

  • Tu aplicación se ejecuta en una VPC que está fuera de la red de Google.

  • Tu aplicación se ejecuta en una máquina que se encuentra en otro lugar de Internet pública.

En todos estos casos, debes configurar un servicio adicional para habilitar este tipo de conexión externa a tu instancia de Cloud SQL.

Te recomendamos las siguientes soluciones para establecer conexiones externas, en función de tus necesidades:

  • Para el desarrollo o la creación de prototipos de proyectos, o para un entorno de producción relativamente económico, configura una máquina virtual (VM) intermediaria, también conocida como bastión, en tu VPC. Hay varios métodos para usar esta máquina virtual intermedia y convertirla en una conexión segura entre un entorno de aplicación externo y tu instancia de Cloud SQL.

  • En los entornos de producción que requieren alta disponibilidad, te recomendamos que establezcas una conexión permanente entre la VPC y tu aplicación mediante Cloud VPN o Cloud Interconnect.

En las siguientes secciones se describen estas soluciones.

Conectarse a través de una VM intermediaria

Para establecer una conexión con una instancia de Cloud SQL desde fuera de su VPC mediante herramientas de código abierto y un mínimo de recursos adicionales, ejecuta un servicio de proxy en una VM intermedia configurada en esa VPC. Puedes configurar una máquina virtual o usar una que ya esté en ejecución en la VPC de tu instancia de Cloud SQL.

Como solución autogestionada, el uso de una máquina virtual intermediaria suele costar menos y tiene un tiempo de configuración más rápido que usar un producto de conectividad de red. También tiene inconvenientes: la disponibilidad, la seguridad y el rendimiento de los datos de la conexión dependen de la VM intermediaria, que debes mantener como parte de tu proyecto.

Conectarse a través de IAP

Con Identity-Aware Proxy (IAP), puedes conectarte a tu instancia de Cloud SQL de forma segura sin tener que exponer la dirección IP interna de la VM intermediaria. Para limitar el acceso a través de esta ruta, se usa una combinación de reglas de firewall y gestión de identidades y accesos (IAM). Por eso, las compras en la aplicación son una buena solución para usos no productivos, como el desarrollo y la creación de prototipos.

Arquitectura de Identity-Aware Proxy

En este diagrama, IAP actúa como pasarela entre el cliente externo que está fuera de la VPC y la VM intermediaria que está en la VPC. El cliente crea un túnel SSH a IAP. El proxy de autenticación de Cloud SQL cifra el tráfico entre la VM y la instancia de Cloud SQL. A través de estos dos proxies, se establece la comunicación entre el cliente y la instancia.

Para configurar el acceso de IAP a tu instancia, sigue estos pasos:

  1. En tu cliente externo, instala gcloud CLI.

  2. En la VM intermediaria, descarga e instala el proxy de autenticación de Cloud SQL.

  3. En la VM intermediaria, inicia el proxy de autenticación de Cloud SQL.

    Como tu máquina virtual está configurada con una dirección IP interna, cuando inicies el proxy de autenticación de Cloud SQL, debes proporcionar la opción --private-ip.

  4. En tu Google Cloud proyecto, habilita el reenvío de TCP de IAP.

    Al definir la nueva regla de cortafuegos, permite el tráfico TCP de entrada al puerto 22 (SSH). Si usas la red predeterminada de tu proyecto con la regla default-allow-ssh predefinida habilitada, no tienes que definir ninguna regla adicional.

  5. Configura la redirección de puertos entre tu cliente externo y la VM intermediaria mediante SSH a través de IAP:

    gcloud compute ssh VM_NAME \
    --tunnel-through-iap \
    --zone=ZONE_NAME \
    --ssh-flag="-L 5432:localhost:5432"

    Haz las siguientes sustituciones:

    • VM_NAME: el nombre de la VM
    • ZONE_NAME: el nombre de la zona asociada a la VM
  6. En tu cliente externo, prueba la conexión con psql.

Conectarse a través de un proxy SOCKS

Ejecutar un servicio SOCKS en la VM intermediaria proporciona una conexión flexible y escalable a tu instancia de Cloud SQL, con cifrado de extremo a extremo proporcionado por el proxy de autenticación de Cloud SQL.

Para obtener más información sobre cómo usar un proxy SOCKS para conectarte a tu instancia de Cloud SQL, consulta Conectarse mediante un proxy intermedio (SOCKS5).

Conectar con un pooler

Si necesitas instalar y ejecutar el proxy de autenticación de Cloud SQL en la VM intermediaria, en lugar de en un cliente externo, puedes habilitar conexiones seguras a ella emparejándola con un proxy compatible con protocolos, también conocido como agrupador. Entre los gestores de conexiones de código abierto más populares para PostgreSQL se incluyen Pgpool-II y PgBouncer.

En esta solución, ejecutas tanto el proxy de autenticación de Cloud SQL como el agrupador en la VM intermediaria. Tu cliente o aplicación podrá conectarse de forma segura directamente al pooler a través de SSL, sin necesidad de ejecutar ningún servicio adicional. El agrupador se encarga de transferir las consultas de PostgreSQL a tu instancia de Cloud SQL a través del proxy de autenticación de Cloud SQL.

Como cada instancia de Cloud SQL tiene una dirección IP interna independiente, cada servicio de proxy solo puede comunicarse con una instancia específica: la instancia principal, la de espera o un grupo de lectura. Por lo tanto, en cada instancia, debe ejecutar un servicio de agrupador independiente con un certificado SSL configurado correctamente.

Conectarse a través de Cloud VPN o Cloud Interconnect

Para el trabajo de producción que requiera alta disponibilidad, recomendamos usar un producto de Google Cloud conectividad de red, como Cloud VPN o Cloud Interconnect, en función de las necesidades de tu servicio externo y de la topología de red. A continuación, configure Cloud Router para que anuncie las rutas adecuadas.

Para obtener más información sobre las soluciones de conectividad de red, consulta el artículo Elegir un producto de conectividad de red.

Siguientes pasos