Arquitectura
Cloud Run se ejecuta sobre Borg en el mismo entorno en el que Google implementa miles de millones de contenedores a la 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 en materia de seguridad, consulta el informe 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 al servicio de Cloud Run a través de tu dominio personalizado o directamente a la 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 de 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 en la región adecuada. - Balanceador de cargas de Google Cloud: cuando configuras Cloud Load Balancing para controlar tu dominio personalizado, incluye la funcionalidad de GFE antes mencionada. También puedes configurar los balanceadores de cargas de Google Cloud para realizar funciones adicionales, como la administración del tráfico y el control de acceso.
- Proxy HTTP: un componente zonal que balancea las cargas de las solicitudes HTTP entrantes a las instancias de tus aplicaciones de zona de pruebas.
- Programador: selecciona los servidores de aplicaciones para alojar las instancias de tus aplicaciones de 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
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: según la plataforma de seguridad de contenedores gVisor, esta opción tiene una base de código pequeña, que proporciona una superficie de ataque más pequeña. Cada cambio se revisa de seguridad, y la mayoría de los cambios se escriben de manera segura para la memoria. Un endurecimiento adicional se logra mediante el filtrado de llamadas del sistema del Modo de procesamiento seguro (seccomp).
Segunda generación: basada en microVMs de Linux, esta opción proporciona más compatibilidad y rendimiento para las cargas de trabajo personalizadas. Se logra un mayor endurecimiento mediante el filtrado de llamadas al sistema seccomp y los espacios de nombres de Linux Sandbox2.
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.
Encriptación y almacenamiento de datos
Las instancias de Cloud Run no tienen estado. Cuando finalizas una instancia, se descarta su estado. Por lo tanto, todas las instancias nuevas se inician desde una lista limpia.
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 sistemas de Google Cloud 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).
En Google Cloud, todos tus datos están encriptados en reposo.
Cloud Run cumple con las iniciativas de Google Cloud para la protección y la transparencia de los datos, incluida la transparencia de acceso y la residencia de datos.
Seguridad de red
Cloud Run y todos los demás servicios de Google Cloud encriptan todo el tráfico en tránsito. Puedes incorporar controles de entrada y salida en los 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 los siguientes orígenes:
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.
Servicios de Google Cloud: El tráfico viaja directamente a Cloud Run desde otros servicios de Google Cloud, 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.app
: La URLrun.app
siempre 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. - Tráfico a un dominio personalizado asociado con tu balanceador de cargas de Google Cloud: Para el tráfico HTTPS, los balanceadores de cargas internos y externos de Google Cloud finalizan TLS y reenvían el tráfico a Cloud Run y a tu contenedor a través de un canal encriptado. Los balanceadores de cargas de Google Cloud también te permiten aplicar funciones de seguridad adicionales, como IAP, Google 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 en Cloud Run, consulta Recibe solicitudes de redes de VPC.
Controla la entrada
Los controles de entrada de Cloud Run administran qué tráfico ingresa a Cloud Run para garantizar que el tráfico provenga solo de fuentes confiables.
Para los servicios de Cloud Run que solo entregan clientes internos, puedes establecer la configuración “interna” para 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 servicios de Google Cloud, 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.
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 cómo controlar la entrada, consulta Restringe la entrada 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 usuarios y 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 los trabajos usan la cuenta de servicio predeterminada de Compute Engine de forma predeterminada. Para cargas de trabajo sensibles, usa una cuenta de servicio dedicada de modo que puedas otorgar solo los permisos que la carga de trabajo necesita para hacer 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 deben crear una cuenta de servicio dedicada, consulta Protege los servicios de Cloud Run con el recomendador.
Quién puede invocar tu servicio o ejecutar tu trabajo
Cloud Run ofrece varias opciones diferentes para controlar quién invoca el servicio o ejecuta el trabajo.
Controles de entrada
Para administrar la entrada de los servicios de Cloud Run a nivel de las herramientas de redes, 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 se ejecutan trabajos.
IAM para tu servicio
Cloud Run realiza una verificación de IAM en cada solicitud.
Usa el permiso run.routes.invoke
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.
Otorga el permiso a todos los usuarios para permitir el acceso no autenticado.
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 de uso compartido restringido al dominio. Los administradores de la organización también pueden inhabilitar servicios específicos de Cloud Run. Obtén información sobre cómo crear servicios públicos de Cloud Run cuando se aplica el uso compartido restringido del dominio.
Obtén más información sobre casos de uso comunes para la autenticación y cómo Cloud Run usa el control de acceso con IAM.
Funciones de seguridad del balanceador de cargas para tu servicio
Si configuraste un servicio de Cloud Run para que sea backend de un balanceador de cargas de Google Cloud, protege esta ruta mediante 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.app
predeterminada. - De manera opcional, puedes habilitar las funciones de seguridad en el balanceador de cargas de Google Cloud, como Google Cloud Armor, IAP y 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 otro servicio activa el trabajo, como Cloud Scheduler, la cuenta de servicio que se usa debe tener el permiso
run.jobs.run
en el trabajo.Otorga el permiso al usuario que accedió para ejecutar un trabajo desde la consola de Google Cloud. Si otro servicio activa el trabajo, como Cloud Scheduler, la cuenta de servicio o el grupo que se usa debe tener el permiso
run.jobs.run
en 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 de uso compartido restringido al 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 aprovechar los Controles del servicio de VPC para controlar el acceso y mitigar el riesgo de robo de datos. Obtén más información para usar 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 de la cadena de suministro interna de Google en los informes de 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 la descripción general de la configuración de Cloud Run.
Software Delivery Shield
Con Software Delivery Shield, los administradores de Cloud pueden ver la información de seguridad sobre la cadena de suministro de sus contenedores implementados directamente desde un panel en la consola de Google Cloud. Obtén más información en visualiza los detalles de Software Delivery Shield.
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 rebase 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 una explicación completa sobre cómo configurar las herramientas de redes, consulta la Guía de herramientas de redes sin servidores de Cloud Run.