Herramientas de redes privadas y Cloud Run

En esta página, se analizan las opciones de configuración para incluir los servicios de Cloud Run en tu red privada.

Para aprovechar al máximo este contenido, debes estar familiarizado con los siguientes conceptos:

Para proteger el tráfico de red de sus servicios y aplicaciones, muchas organizaciones usan una red privada en Google Cloud con controles perimetrales para evitar el robo de datos. Tu red privada puede tener las siguientes propiedades:

  • Es posible que tengas una serie de recursos, como VMs, que se ubican en una o más redes de VPC.
  • Estas VMs pueden pertenecer a muchos proyectos diferentes y pueden conectarse entre sí con una VPC compartida.
  • Es posible que tengas cargas de trabajo locales o cargas de trabajo en otras nubes conectadas a este entorno mediante Cloud VPN o Cloud Interconnect.
  • Es posible que hayas habilitado un perímetro de Controles del servicio de VPC para reducir el riesgo de robo de datos.
  • Puedes tener varias redes privadas, una para cada uno de varios entornos diferentes, como uno para la producción, uno para la etapa de pruebas y otro para el desarrollo.

A diferencia de las VM, los servicios de Cloud Run no están asociados a ninguna red de VPC en particular de forma predeterminada. En esta página, se explica cómo incorporar los servicios de Cloud Run en tu red privada.

Narrativa de herramientas de red sin servidores

A fin de explorar una variedad de configuraciones empresariales comunes para las redes públicas y privadas, lee nuestra Narrativa de herramientas de redes sin servidores.

En este punto de partida, se presentan las siguientes situaciones de Cloud Run básicas a avanzadas:

  • Implementa de forma segura un mensaje “Hello, World!” app que usa un dominio personalizado
  • Desarrolla microservicios y aplicaciones empresariales
  • Accede a bases de datos y sistemas de archivos de manera pública o privada
  • Conéctate con proveedores de SaaS
  • Aplica controles de seguridad

Consulta la lista de los módulos de Terraform correspondientes.

Recibe solicitudes de tu red privada

Para recibir solicitudes de tu red privada, se requiere una configuración basada en las siguientes condiciones:

  • De dónde proviene la solicitud.
  • Si el servicio de Cloud Run solo permite solicitudes de tu red privada.

Por ejemplo, recibir solicitudes de redes de VPC puede requerir una configuración diferente a recibir solicitudes de recursos locales y otras nubes.

Recibe solicitudes de otros servicios de Cloud Run, App Engine y funciones de Cloud Run.

Cuando el servicio de destino de Cloud Run recibe tráfico de otros servicios de Cloud Run, App Engine o funciones de Cloud Run, y usa la configuración de entrada “interna” o de “balanceo de cargas interno”, el tráfico debe usar la red de VPC para que se considere interna.

Para recibir solicitudes de otros servicios de Cloud Run, App Engine o funciones de Cloud Run, sigue estos pasos:

  1. Configura el servicio de origen para usar la salida de VPC directa o un conector.

  2. Asegúrate de que el tráfico a Cloud Run se enrute a través de la red de VPC con una de las siguientes opciones:

    • Configura el servicio de origen para enviar todo el tráfico a través de la red de VPC y habilita el Acceso privado a Google en la subred asociada con la salida de VPC directa o el conector.
    • Configura Private Service Connect o un balanceador de cargas de aplicaciones interno para dirigir el servicio de Cloud Run de destino. Con esta configuración, accedes a Cloud Run a través de direcciones IP internas, por lo que las solicitudes se enrutan a través de la red de VPC.
    • Habilita el acceso privado a Google en la subred asociada al servicio de origen y configura DNS para resolver las URLs run.app en los rangos private.googleapis.com, 199.36.153.8/30 o restricted.googleapis.com (199.36.153.4/30). Las solicitudes a estos rangos se enrutan a través de la red de VPC.

Recibe solicitudes de redes de VPC

De forma predeterminada, solo los recursos de VPC que tienen direcciones IP públicas o que usan Cloud NAT pueden acceder directamente a Internet y a los servicios de Google Cloud, como Pub/Sub y Cloud Run. Para otros recursos de VPC, existen algunas opciones que permiten habilitar la ruta de tráfico hacia Cloud Run:

  1. La ruta más directa es habilitar el Acceso privado a Google en las subredes que alojan tus recursos de VPC. Una vez habilitados, los recursos en las subredes pueden acceder a tus servicios de Cloud Run en la URL run.app predeterminada. El tráfico de tu VPC a Cloud Run permanece en la red de Google. En ese caso, el rango de IP para las solicitudes enviadas al servicio de Cloud Run es 0.0.0.0/32. Esto significa que, en las entradas de registro de solicitudes, el atributo remoteIp de HttpRequest será 0.0.0.0.
  2. Si necesitas que el servicio de Cloud Run (junto con otras APIs de Google) se exponga como una dirección IP interna en la red de VPC, considera usar Private Service Connect. Una vez habilitado, los recursos de VPC pueden acceder a los servicios de Cloud Run en la URL run.app predeterminada con la dirección IP interna.
  3. Si necesitas capacidades y controles de balanceo de cargas, considera usar un balanceador de cargas de aplicaciones interno. Con este enfoque, los recursos de VPC acceden a los servicios de Cloud Run mediante la URL asociada con el balanceador de cargas de aplicaciones interno.
  4. Si deseas exponer tu servicio a clientes internos como un servicio administrado y poder controlar qué proyectos pueden acceder a él, puedes alojarlo con un balanceador de cargas de aplicaciones interno y publicarlo con Private Service Connect. Los proyectos que necesitan consumir el servicio también pueden acceder a él a través de Private Service Connect.

Las respuestas se muestran con la misma ruta que pasó la solicitud.

Consideraciones especiales para la VPC compartida

Si usas controles de entrada de Cloud Run para forzar que todo el tráfico provenga de tu red privada (con la configuración internal), ten en cuenta que el tráfico de la VPC compartida solo se reconoce como “interno” en las siguientes situaciones:

  • El servicio de Cloud Run se ejecuta en el proyecto host de la VPC compartida.

  • Entrada de VPC compartida: el servicio de Cloud Run está conectado a una red de VPC compartida. En este caso, ten en cuenta las siguientes consideraciones:

    • Solo las revisiones del servicio que configuraron la salida de VPC directa o que configuraron un conector de Acceso a VPC sin servidores para enviar tráfico a la red de VPC compartida también aceptan tráfico de esa misma red de VPC compartida.

    • Las solicitudes usan diferentes rutas según la dirección del tráfico. Las solicitudes enviadas de Cloud Run a la red de VPC compartida se enrutan a través de la salida de VPC directa o el conector. Sin embargo, las solicitudes enviadas desde la red de VPC compartida a Cloud Run usan la ruta de entrada estándar.

    • Para desconectar un servicio de Cloud Run de la red de VPC compartida, vuelve a implementarlo sin acceso a la red de VPC o con el servicio configurado para enviar tráfico a una red de VPC diferente.

  • Estás usando un balanceador de cargas de aplicaciones interno como proxy para el tráfico.

  • Colocaste el host de VPC compartida y todos los proyectos de servicio dentro del mismo perímetro de Controles del servicio de VPC. Para configurar los Controles del servicio de VPC, consulta Usa los Controles del servicio de VPC (VPC SC).

Consideraciones especiales para otras VPC fuera del proyecto

Si usas controles de entrada de Cloud Run para aplicar todo el tráfico que proviene de tu red privada (con la configuración internal), ten en cuenta que el tráfico procedente de otras VPC fuera de tu proyecto no se reconocen como “interno”, excepto en las siguientes situaciones:

  • Controles del servicio de VPC se configura para permitir el tráfico con run.googleapis.com como un servicio restringido, y el Acceso privado a Google está habilitado en la subred de origen.
  • Tu servicio de Cloud Run se publica como un servicio administrado mediante Private Service Connect (requiere un balanceador de cargas de aplicaciones interno) y se accede a él desde la otra red de VPC.

El intercambio de tráfico de una VPC fuera de tu proyecto no permite que el tráfico se reconozca como “interno”.

Recibe solicitudes de otros servicios de Google Cloud

Las solicitudes a Cloud Run desde los servicios de Google Cloud, como Pub/Sub, permanecen en la red de Google.

Hay algunas consideraciones especiales si configuraste los controles de entrada de Cloud Run para permitir solo el tráfico “interno”:

  • Las solicitudes de Cloud Scheduler, Cloud Tasks, Eventarc, Pub/Sub, supervisores sintéticos (incluidas las verificaciones de tiempo de actividad) y flujos de trabajo en el mismo proyecto o perímetro de Controles del servicio de VPC se reconocen como “internos”.
  • Las solicitudes de Cloud Run, App Engine y funciones de Cloud Run que se envían desde el mismo proyecto o perímetro de Controles del servicio de VPC requieren una configuración adicional antes de que se reconozcan como “interna”. Para obtener más información, consulta la sección Recibe solicitudes de otros servicios de Cloud Run, App Engine y funciones de Cloud Run.
  • Si el servicio de Google Cloud elegido no puede acceder a los servicios de Cloud Run que tienen entrada configurada como internal, ten en cuenta que muchos admiten la autenticación en Cloud Run, como Pub/Sub (admite internal y la autenticación), API Gateway y Dialogflow CX. Según tus necesidades de seguridad, puede ser suficiente que el servicio de destino de Cloud Run requiera autenticación en lugar de entrada “interna”.
  • Las solicitudes de servicios de Google Cloud que no se mencionaron antes no se reconocen como internas y no pueden recibirlas los servicios de Cloud Run que tienen entrada configurada como internal o internal-and-cloud-load-balancing.

Recibe solicitudes de entornos locales o de otras nubes

Existen varias formas de recibir solicitudes de recursos privados y otras nubes de forma privada.

  1. Configuración básica: Para que las solicitudes de recursos locales y otras nubes recorran la red privada, configura el Acceso privado a Google para hosts locales.
  2. Expón el servicio de Cloud Run con una dirección IP interna: Para llamar a los servicios de Cloud Run mediante una dirección IP interna, configura Private Service Connect para hosts locales. Agregar Private Service Connect para hosts locales te permite exponer tu servicio de Cloud Run a tu red de VPC como una dirección IP interna. Private Service Connect genera costos.
  3. Con capacidades de balanceo de cargas: Si necesitas capacidades y controles de balanceo de cargas, usa un balanceador de cargas de aplicaciones interno.
  4. Entre límites administrativos: Si deseas exponer tu servicio a clientes internos como un servicio administrado y poder controlar qué proyectos pueden acceder a él, puedes publicarlo mediante Private Service Connect. Para consumirlo, consulta Usa Private Service Connect desde hosts locales (requiere un balanceador de cargas de aplicaciones interno).

Exige que las solicitudes provengan de tu red privada

Para evitar el tráfico entrante (entrada) desde fuentes externas, puedes especificar una configuración de entrada restrictiva. La configuración de entrada más restrictiva es internal. Si configuras la entrada como internal, el servicio solo permite solicitudes del proyecto, las redes de VPC compartidas a las que está conectado el proyecto y el perímetro de los Controles del servicio de VPC. Esta configuración tiene algunas limitaciones según el origen de las solicitudes. Para obtener información sobre estas limitaciones y cómo navegarlas, consulta la sección Recibe solicitudes de tu red privada.

Puedes especificar la configuración de entrada para cada servicio de Cloud Run o aplicar el uso de tu configuración de entrada preferida a todos los servicios de Cloud Run de tu organización.

  • A fin de especificar la configuración de entrada para cada servicio, consulta Configura la entrada.
  • A fin de aplicar una configuración de entrada particular a todos los servicios de Cloud Run en tu proyecto, organización o carpeta, configura la restricción de política de la organización run.allowedIngress. Si deseas obtener información sobre cómo hacerlo, consulta Personaliza políticas para restricciones de lista.

Envía solicitudes a tu red privada

Si tu servicio de Cloud Run necesita acceder a un recurso de tu red privada, puedes configurar una ruta de acceso para solicitudes privadas a la red. La configuración depende del destino final de la solicitud.

Envía solicitudes a tu red de VPC

Para enviar solicitudes a una red de VPC, debes configurar la salida de VPC directa o un conector de Acceso a VPC sin servidores. Comparar la salida de VPC directa y los conectores de VPC: Revisa los precios para comprender los costos.

Cuando se configuran la salida de VPC directa o los conectores de Acceso a VPC sin servidores, se aplican las siguientes consideraciones de forma predeterminada:

  • Todas las consultas de DNS se envían al servidor DNS configurado para la red de VPC asociada a tu configuración de salida de red de VPC.

  • Las solicitudes a direcciones IP interna se enrutan a la red de VPC a través de la salida de VPC directa o un conector. Las solicitudes a destinos públicos se enrutan directamente a Internet, a menos que tu configuración de salida esté configurada de otra manera.

Con las solicitudes enrutadas con la salida de VPC directa o los conectores de Acceso a VPC sin servidores, las respuestas se muestran con la ruta que pasó por la solicitud. Las solicitudes desde tu VPC a Cloud Run se habilitan a través de otras tecnologías y no se enrutan a través del Acceso a VPC sin servidores ni la salida de VPC directa, y las respuestas a esas solicitudes se muestran con la misma ruta. Para obtener más información sobre cómo enviar solicitudes de VPC a Cloud Run, consulta la sección Recibe solicitudes de redes de VPC.

Envía solicitudes a una red de VPC fuera de tu proyecto

Para enviar solicitudes a una red de VPC fuera de tu proyecto, realiza los siguientes pasos:

  1. Para los usuarios de VPC compartida, consulta Conéctate a una red de VPC compartida.
  2. Para otras VPC, configura la salida de VPC directa o un conector de Acceso a VPC sin servidores para conectarte a una VPC en tu proyecto.
    • VPC con intercambio de tráfico: para enviar a una VPC que intercambia tráfico con una VPC que usa la salida de red de VPC, no se requiere ninguna configuración adicional. Sin embargo, las VMs en la subred que aloja la salida de red de VPC deben poder alcanzar la red de VPC de destino.
    • Otras VPC: para las redes de VPC fuera del proyecto que no forman parte del mismo entorno de VPC compartida o que intercambian tráfico a la VPC del proyecto, configura Private Service Connect después de configurar la salida de red de VPC.

Envía solicitudes a otros servicios de Cloud Run y de Google Cloud

Las solicitudes de un servicio de Cloud Run a otro o a otros servicios de Google Cloud permanecen dentro de la red interna de Google y están sujetas a Controles del servicio de VPC.

Para las solicitudes a los servicios de Cloud Run con una configuración de entrada restrictiva, se requiere una configuración adicional. Consulta Recibe solicitudes de otros servicios de Cloud Run, App Engine y funciones de Cloud Run.

Envía solicitudes a recursos locales y otras nubes

Para enviar solicitudes a recursos locales y otras nubes a través de tu red privada, debes hacer lo siguiente:

  1. Asegúrate de que tu red de VPC esté configurada para enrutar el tráfico de forma privada al destino, por ejemplo, a través de un túnel VPN.
  2. Configura tu servicio para enviar solicitudes a tu red de VPC.
  3. Luego, exige que todas las solicitudes vayan a la red de VPC.

Exige que todas las solicitudes vayan a tu red de VPC

Para solicitar que todas las solicitudes de tu servicio de Cloud Run vayan a tu red de VPC, especifica la configuración de salida "todo el tráfico" de la red VPC. Puedes especificar la configuración de salida para cada servicio de Cloud Run que usa la salida de red VPC o puedes aplicar el uso de tu configuración de salida preferida a todos los servicios de Cloud Run en tu proyecto, organización o carpeta.

Esto es útil en las siguientes situaciones:

  1. Deseas configurar una dirección IP saliente estática para tu servicio de Cloud Run.
  2. Deseas aplicar reglas de firewall para todas las salidas de un servicio de Cloud Run.
  3. Deseas enviar solicitudes a recursos locales y otras nubes a través de tu red privada.

Si tu servicio de Cloud Run realiza solicitudes a destinos finales fuera de tu red de VPC, requerir que todas las solicitudes vayan a tu red de VPC aumenta el uso del ancho de banda en tu conector de Acceso a VPC sin servidores (si está configurado) y puede aumentar los costos en consecuencia. Los conectores del Acceso a VPC sin servidores escalan de forma automática cuando el tráfico aumenta, pero no lo hacen si el tráfico disminuye. Revisa los precios para comprender los costos.

  • A fin de especificar la configuración de salida para servicios individuales de Cloud Run, consulta Controla el tráfico del servicio de salida.
  • A fin de aplicar una configuración de salida particular a todos los servicios de Cloud Run en tu proyecto, organización o carpeta, configura la restricción de política de la organización run.allowedVPCEgress. Si deseas obtener información sobre cómo hacerlo, consulta Personaliza políticas para restricciones de lista.

Controles adicionales

  • Controles perimetrales: A fin de reducir el riesgo de robo de datos para un grupo de recursos, colócalos en un perímetro adaptado al contexto mediante los Controles del servicio de VPC.
  • Controles detallados: Para controlar el acceso al tráfico desde un recurso específico dentro de tu red privada, como un servicio específico de Cloud Run o una máquina virtual de Compute Engine, usa cuentas de servicio para realizar lo siguiente: controlar los permisos y la autenticación.

¿Qué sigue?

Si usas Terraform, el código de muestra de Terraform está disponible para configurar servicios de Cloud Run en una red privada.