Arquitectura
Cloud Run se ejecuta sobre Borg en el mismo entorno en el que Google implementa miles de millones de contenedores por semana, y aloja algunos de los sitios más grandes del mundo, incluidos Gmail y YouTube. Debido a que los componentes de Cloud Run comparten la misma infraestructura, se compilan con los mismos estándares de seguridad que otros servicios de Google.
Para obtener más información sobre nuestro enfoque de seguridad, lee el informe técnico Descripción general de la seguridad de Google.
La arquitectura de Cloud Run contiene muchos componentes de infraestructura diferentes. En el siguiente diagrama, se muestra cómo responden estos componentes a las solicitudes a tu servicio y a las llamadas a la API de Cloud Run Admin:
Solicitudes a tu servicio
Cuando se realiza una solicitud a tu servicio de Cloud Run a través de
tu dominio personalizado o directamente a tu URL run.app, los siguientes componentes controlan la solicitud:
- Google Front End (GFE): El servicio de infraestructura global de Google
que finaliza las conexiones TLS y aplica protecciones contra ataques DoS cuando
realizas una solicitud a la URL
run.app. Cloud Run es un servicio regional , por lo que, cuando se accede a una solicitud a través de la URLrun.app, GFE reenvía la solicitud a Cloud Run a través de un canal encriptado en la región adecuada. - Google Cloud Balanceador de cargas: Cuando configuras Cloud Load Balancing para controlar tu dominio personalizado, incluye la funcionalidad de GFE antes mencionada. También puedes configurar Google Cloud balanceadores de cargas para realizar funciones adicionales, como la administración del tráfico y el control de acceso.
- Proxy HTTP: Un componente zonal que balancea la carga de las solicitudes HTTP entrantes a las instancias de tus aplicaciones en zona de pruebas.
- Programador: Selecciona los servidores de aplicaciones para alojar instancias de tus aplicaciones en zona de pruebas.
- Servidor de aplicaciones: es un nodo de procesamiento zonal y multiusuario que crea y administra las zonas de pruebas que ejecutan las instancias del contenedor de cada aplicación.
- Zona de pruebas: aísla el código del usuario del sistema y de otros clientes. Obtén más información en la siguiente sección Seguridad de procesamiento.
- Almacenamiento: expone una interfaz de servidor de archivos para las imágenes de contenedor importadas de los registros de contenedores compatibles.
- Servidor de metadatos: Proporciona credenciales y metadatos específicos de la zona de pruebas.
- Herramientas de redes salientes: administra el tráfico saliente que inicia la zona de pruebas.
Llamadas a la API de Cloud Run Admin
Cuando se realiza una solicitud a la API de Cloud Run Admin, los siguientes componentes controlan la solicitud:
- Google Front End (GFE): es el servicio de infraestructura global de Google que finaliza las conexiones TLS y aplica protecciones contra ataques de DoS.
- Plano de control: valida y escribe las configuraciones de la aplicación en el almacenamiento.
- Almacenamiento de configuración: almacena la configuración de la aplicación en Spanner y Bigtable para acceder a otros componentes, como el servidor de aplicaciones, el programador y elementos de herramientas de redes.
Seguridad de procesamiento
Una instancia se define como la unidad en la que se ejecutan los contenedores configurados. Cuando implementas una sola imagen de contenedor, cada contenedor comienza en su propia instancia. Cuando implementas varias imágenes de contenedor (sidecars), cada instancia contiene una de cada uno de esos contenedores.
Cada instancia de Cloud Run está protegida (en zona de pruebas) de todas las demás por un límite que aplica un monitor de máquina virtual (VMM). Si bien proporcionamos cierto grado de aplicación de límites de contenedores, no es tan sólido como el límite de instancia alrededor de tus contenedores.
Entornos de ejecución
Los componentes de Cloud Run se ejecutan en el sistema de administración de contenedores de Google, Borg. Para tus contenedores, Cloud Run ofrece dos entornos de ejecución:
Primera generación: Basada en la plataforma de seguridad de contenedores gVisor, esta opción tiene una base de código pequeña, lo que proporciona una superficie de ataque más pequeña. Todos los cambios se revisan en cuanto a seguridad y la mayoría de los cambios se escriben de forma segura para la memoria. El uso del filtrado de llamadas al sistema del modo de procesamiento seguro (seccomp) permite un mayor nivel de protección.
Segunda generación: Basada en microVMs de Linux, esta opción proporciona más compatibilidad y rendimiento para las cargas de trabajo personalizadas. El uso del filtrado de llamadas al sistema seccomp y los espacios de nombres de Linux Sandbox2 permiten un mayor nivel de protección.
Ambos entornos de ejecución usan dos capas de zona de pruebas que consisten en una capa respaldada por hardware equivalente a VMs individuales (virtualización x86) y una capa de kernel de software, como se muestra en el siguiente diagrama:
Si tu servicio usa infraestructura de terceros para proteger contenedores, usa el entorno de ejecución de segunda generación.
Detección de amenazas de Cloud Run
Para supervisar continuamente el estado de tus recursos de Cloud Run para detectar ataques comunes del entorno de ejecución, como objetos binarios sospechosos o código malicioso, usa la Detección de amenazas de Cloud Run.
Encriptación y almacenamiento de datos
Las instancias de Cloud Run no tienen estado. Cuando se finaliza una instancia, se descarta su estado. Por lo tanto, todas las instancias nuevas se inician desde cero.
Si tienes datos con estado, puedes administrarlos de las siguientes maneras:
- Almacena datos con estado en servicios de almacenamiento externo, como Cloud SQL o Memorystore.
- Se integra en el Secret Manager para obtener un almacenamiento seguro de datos sensibles, como claves y las contraseñas de API.
Además, Cloud Run se integra en muchos otros Google Cloud sistemas para administrar y acceder a tus datos de las siguientes maneras:
- Los datos de configuración del servicio se almacenan en Spanner y Bigtable.
- Los datos de supervisión y registro se envían a Google Cloud Observability.
- Las imágenes de contenedor se importan desde los registros de contenedores compatibles y se pueden encriptar de forma opcional mediante claves de encriptación administradas por el cliente (CMEK).
Todos tus datos se encriptan en reposo. Google Cloud
Cloud Run cumple con Google Cloudlas iniciativas de protección y transparencia de datos en toda la empresa, incluida la transparencia de acceso y la residencia de datos.
Seguridad de red
Cloud Run y todos los demás Google Cloud servicios encriptan todo el tráfico en tránsito. Puedes incorporar controles de entrada y salida a tus servicios o trabajos de Cloud Run para agregar una capa adicional de restricción. Los administradores de la organización también pueden aplicar controles de salida y la entrada mediante la configuración de políticas de la organización.
Tráfico de salida (saliente)
El tráfico que sale de Cloud Run se trata como la capa de transporte 4 (TCP y UDP).
De forma predeterminada, el tráfico de salida toma una de las siguientes rutas de acceso cuando sale de Cloud Run:
- El destino está en la red de VPC: el tráfico se traslada a una red de VPC o a la red de VPC compartida en tu proyecto a través de la salida de VPC directa o un conector de Acceso a VPC sin servidores. El conector es un recurso regional que se ubica directamente en la red de VPC.
- El destino no está en la red de VPC: el tráfico se enruta directamente al destino dentro de la red pública de Google o la Internet pública.
Controla la salida
Para obtener control adicional sobre el tráfico de salida, usa la configuración de salida de VPC para enrutar todo el tráfico a tu red de VPC a través de los conectores o la salida de VPC directa.
Una vez que está en la red de VPC, puedes usar las herramientas de VPC para administrar el tráfico, por ejemplo:
- Aplica reglas de firewall al tráfico de tu servicio o cambia la forma en que se enruta el tráfico.
- Habilita los registros de flujo de VPC para inspeccionar el tráfico.
Los administradores de la organización también pueden aplicar restricciones de salida mediante la configuración de la lista de parámetros de configuración de salida de VPC permitida (Cloud Run).
Tráfico de entrada (entrante)
A diferencia de la salida, el tráfico de entrada de Cloud Run está en la capa 7 de aplicación (HTTP).
Cloud Run acepta el tráfico de entrada entrante de las siguientes fuentes:
Internet pública: Las solicitudes se enrutan directamente desde las fuentes públicas hacia tus servicios de Cloud Run con la opción de enrutar el tráfico a través de un balanceador de cargas HTTP(S) externo.
Red de VPC: puedes enrutar el tráfico desde una red de VPC a servicios de Cloud Run con el Acceso privado a Google, Private Service Connect o un balanceador de cargas de aplicaciones interno. El tráfico de este tipo siempre permanece dentro de la red de Google.
Google Cloud Servicios: El tráfico se dirige directamente a Cloud Run desde otros Google Cloud servicios, como BigQuery o incluso Cloud Run. En algunos casos, también puedes configurar estos servicios para enrutar a través de una red de VPC. El tráfico de este tipo siempre permanece dentro de la red de Google.
El modelo de seguridad de red de Cloud Run incluye las siguientes propiedades de tráfico de entrada:
- Dirige el tráfico a la URL
run.apppredeterminada: La URLrun.appsiempre requiere HTTPS para que el tráfico ingrese a Cloud Run. La infraestructura de servicio de frontend de Google finaliza TLS y, luego, reenvía el tráfico a Cloud Run y a tu contenedor a través de un canal encriptado. Puedes inhabilitar la URL predeterminada. - Tráfico a un dominio personalizado asociado con tu Google Cloud balanceador de cargas: Para el tráfico HTTPS, Google Cloud los balanceadores de cargas internos y externos finalizan TLS y reenvían el tráfico a Cloud Run y a tu contenedor a través de un canal encriptado. Google Cloud Los balanceadores de cargas también te permiten aplicar funciones de seguridad adicionales, como IAP, Cloud Armor y las políticas de SSL.
Para obtener más información sobre cómo configurar el tráfico de red de VPC a Cloud Run, consulta Recibe solicitudes de redes de VPC.
Controla la entrada
Los controles de entrada de Cloud Run administran el tráfico que ingresa a Cloud Run para garantizar que el tráfico provenga solo de fuentes confiables.
Para los servicios de Cloud Run que solo atienden a clientes internos, puedes configurar el parámetro de configuración “interno” de modo que solo el tráfico de las siguientes fuentes internas pueda ingresar a Cloud Run:
- Redes de VPC en tu proyecto o perímetro de Controles del servicio de VPC, incluidos los servicios de Cloud Run que enrutan todo el tráfico a través de la red de VPC
- La red de VPC compartida a la que está conectado el servicio de Cloud Run.
- Algunos Google Cloud servicios, como BigQuery, que están en el proyecto o el perímetro de los Controles del servicio de VPC.
- Tráfico de clientes locales que recorren tu red de VPC para llegar a Cloud Run.
Si usas un balanceador de cargas externo o interno, puedes
inhabilitar la URL run.app predeterminada.
Los administradores de la organización también pueden aplicar controles de entrada mediante la configuración de políticas de la organización.
Para obtener más información sobre el control de entrada, consulta Restringe el ingreso a Cloud Run.
Control de acceso
Los controles de acceso se usan para restringir quién tiene acceso a tus servicios y trabajos de Cloud Run.
Quién puede administrar tu servicio o trabajo
Para controlar quién administra tu servicio o trabajo de Cloud Run, Cloud Run usa IAM para autorizar a los usuarios y las cuentas de servicio.
A qué puede acceder tu servicio o trabajo
Para controlar a qué pueden llegar las cargas de trabajo de Cloud Run a través de la red, puedes forzar todo el tráfico a través de la red de VPC y aplicar reglas de firewall de VPC, como se describió antes en la secciónSeguridad de red.
Si usas la salida de VPC directa, puedes adjuntar etiquetas de red al recurso de Cloud Run y hacer referencia a las etiquetas de red en la regla de firewall. Si usas el Acceso a VPC sin servidores, puedes aplicar reglas de firewall a las instancias del conector.
Usa IAM para controlar a qué recursos puede acceder tu servicio o trabajo de Cloud Run. Los servicios y trabajos usan la cuenta de servicio predeterminada de Compute Engine de forma predeterminada. Para las cargas de trabajo sensibles, usa una cuenta de servicio dedicada para que puedas otorgar solo los permisos que la carga de trabajo necesita para realizar su trabajo. Obtén más información sobre el uso de la identidad por servicio para administrar una cuenta de servicio dedicada. Para obtener información sobre cómo Cloud Run recuerda a los usuarios que creen una cuenta de servicio dedicada, consulta Protege los servicios de Cloud Run con Recommender.
Quién puede invocar tu servicio o ejecutar tu trabajo
Cloud Run proporciona varias opciones diferentes para controlar quién invoca tu servicio o ejecuta tu trabajo.
Controles de entrada
Para administrar la entrada de los servicios de Cloud Run a nivel de la red, consulta Controla la entrada en la sección anterior.
Los trabajos de Cloud Run no entregan solicitudes y, por lo tanto, no usan controles de entrada cuando ejecutan trabajos.
IAM para tu servicio
Usa el run.routes.invoke
permiso para configurar quién puede acceder a tu servicio de Cloud Run
de las siguientes maneras:
Otorga el permiso para seleccionar cuentas de servicio o grupos para permitir el acceso al servicio. Todas las solicitudes deben tener un encabezado de autorización HTTP que contenga un token de ID de OpenID Connect firmado por Google para una de las cuentas de servicio autorizadas.
Selecciona Permitir acceso público para inhabilitar la verificación de IAM de Cloud Run Invoker y permitir el acceso no autenticado. Cloud Run realiza una verificación de IAM en cada solicitud cuando está habilitada la verificación de IAM de Cloud Run Invoker.
Para garantizar que solo los miembros de tu organización puedan invocar un servicio de Cloud Run, un administrador de la organización puede establecer la política de la organización Uso compartido restringido del dominio. Los administradores de la organización también pueden inhabilitar servicios específicos de Cloud Run. Selecciona Permitir acceso público cuando esté habilitado el uso compartido restringido del dominio para crear URLs públicas.
Obtén más información sobre los casos de uso comunes para la autenticación y cómo Cloud Run usa el control de acceso con IAM.
Habilita Identity-Aware Proxy para un servicio de Cloud Run
Habilita IAP en Cloud Run para proteger el tráfico a un servicio de Cloud Run enrutándolo a IAP para la autenticación. También puedes usar la federación de identidades de personal con IAP en Cloud Run. Obtén información para configurar Identity-Aware Proxy para Cloud Run.
Funciones de seguridad del balanceador de cargas para tu servicio
Si configuraste un servicio de Cloud Run para que sea un backend de un Google Cloud balanceador de cargas, protege esta ruta con los siguientes métodos:
- Para bloquear el tráfico directo desde el Internet público a la URL
run.app, configura la entrada en una de las opciones internas. - Inhabilita la URL
run.apppredeterminada. - De manera opcional, puedes habilitar las funciones de seguridad en el Google Cloud balanceador de cargas , como Cloud Armor, IAP y las políticas de SSL.
IAM para tu trabajo
Usa el permiso run.jobs.run para
configurar quién puede ejecutar tu trabajo de Cloud Run de las siguientes
maneras:
Otorga el permiso para seleccionar cuentas de servicio o grupos para permitir el acceso al trabajo. Si el trabajo se activa con otro servicio, como Cloud Scheduler, la cuenta de servicio que se usa debe tener el permiso
run.jobs.runen el trabajo.Otorga el permiso al usuario que accedió para ejecutar un trabajo desde la Google Cloud consola. Si el trabajo se activa con otro servicio, como Cloud Scheduler, la cuenta de servicio o el grupo que se usa debe tener el permiso
run.jobs.runen el trabajo.
Para garantizar que solo los miembros de tu organización puedan ejecutar un trabajo de Cloud Run, un administrador de la organización puede establecer la restricción Uso compartido restringido del dominio. Los administradores de la organización también pueden inhabilitar trabajos específicos de Cloud Run.
Controles del servicio de VPC
Los servicios de Cloud Run pueden ser parte de un perímetro de Controles del servicio de VPC para que puedas usar los Controles del servicio de VPC para controlar el acceso y mitigar el riesgo de robo de datos. Obtén más información sobre el uso de los Controles del servicio de VPC.
Seguridad de la cadena de suministro
Imágenes base administradas por paquetes de compilación de Google Cloud
Los servicios que se implementan desde el código fuente con paquetes de compilación de Google Cloud se compilan con imágenes base proporcionadas por Google. Google mantiene estas imágenes base y proporciona parches de rutina de forma semanal. En situaciones de emergencia que involucran vulnerabilidades de seguridad críticas, podemos hacer que los parches estén disponibles en cuestión de horas.
Seguridad de la cadena de suministro interna de Cloud Run
Debido a que se ejecuta en Borg, Cloud Run implementa la misma seguridad de la cadena de suministro que es estándar en todos los servicios de Google, como Gmail y YouTube. Obtén más información sobre las prácticas internas de la cadena de suministro de Google en los BeyondProd y Autorización binaria para Borg.
Autorización binaria
Cloud Run tiene compatibilidad integrada en la autorización binaria para garantizar que solo se implementen imágenes de contenedor confiables en Cloud Run. Obtén más información en Descripción general de la configuración de Cloud Run.
Estadísticas de seguridad de la cadena de suministro de software
Los administradores de Cloud pueden ver información de seguridad sobre la cadena de suministro de sus contenedores implementados directamente desde un panel en la Google Cloud consola. Obtén más información en Visualiza estadísticas de seguridad de la cadena de suministro de software.
Seguridad del entorno de ejecución
Cloud Run admite actualizaciones automáticas de imágenes base con contenedores compatibles. Las actualizaciones de seguridad se aplican sin tiempo de inactividad en el servicio mediante la ejecución de una nueva base en la imagen base del contenedor.
Los servicios que se implementan desde la fuente, que incluyen Cloud Run, usan paquetes de compilación de Google Cloud y son compatibles con las actualizaciones de seguridad automáticas.
Los servicios con actualizaciones de seguridad automáticas habilitadas se implementan con imágenes base proporcionadas por Google. Google mantiene estas imágenes base y proporciona parches de rutina después de un período de pruebas de estabilidad. En situaciones de emergencia que involucran vulnerabilidades de seguridad críticas, podemos hacer que los parches estén disponibles en cuestión de horas.
Para obtener más información sobre las actualizaciones de seguridad del entorno de ejecución, consulta cómo configurar las actualizaciones de seguridad.
¿Qué sigue?
- Para obtener un instructivo de extremo a extremo sobre cómo configurar las herramientas de redes, consulta la Guía de herramientas de redes sin servidores de Cloud Run .
- Obtén información para detectar amenazas con la Detección de amenazas de Cloud Run.