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 según los mismos estándares de seguridad que otros servicios de Google.
Para obtener más información sobre nuestro enfoque 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 a tu servicio de Cloud Run a través de tu dominio personalizado o directamente a tu URL run.app
, la solicitud se controla con los siguientes componentes:
- 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 URL derun.app
, el 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 los balanceadores de cargas Google Cloudpara que realicen funciones adicionales, como la administración del tráfico y el control de acceso.
- Proxy HTTP: Es un componente zonal que balancea la carga de las solicitudes HTTP entrantes a las instancias de tus aplicaciones en zona de pruebas.
- Scheduler: 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 sobre la seguridad del 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 del entorno 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 la controlan:
- 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 Borg, el sistema de administración de contenedores de Google. Cloud Run ofrece dos entornos de ejecución para tus contenedores:
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 someten a una revisión de seguridad y la mayoría se escriben de forma segura para la memoria. El fortalecimiento adicional se logra con el filtrado de llamadas al sistema del modo de computación segura (seccomp).
Segunda generación: Basada en microVMs de Linux, esta opción proporciona más compatibilidad y rendimiento para las cargas de trabajo personalizadas. El fortalecimiento adicional se logra con el filtrado de llamadas al sistema seccomp y los espacios de nombres de Linux de 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 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 con muchos otrosGoogle 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).
En Google Cloud, todos tus datos están encriptados en reposo.
Cloud Run cumple con las iniciativas de Google Cloudpara la protección y la transparencia de los datos, incluidas la transparencia de acceso y la residencia de los 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 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 predeterminada de
run.app
: La URL derun.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. Puedes inhabilitar la URL predeterminada. - Tráfico a un dominio personalizado asociado con tu balanceador de cargas Google Cloud : Para el tráfico HTTPS,los balanceadores de cargas Google Cloud 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.Los balanceadores de cargas Google Cloud también te permiten aplicar funciones de seguridad adicionales, como IAP, Cloud Armor y políticas de SSL.
Para obtener más información sobre cómo configurar el tráfico de la 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 solo provenga de fuentes confiables.
En el caso de los servicios de Cloud Run que solo atienden a clientes internos, puedes configurar el parámetro de configuración "interno" 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 Google Cloud servicios, como BigQuery, que están en tu proyecto o 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 interno o externo, puedes inhabilitar la URL predeterminada de run.app
.
Los administradores de la organización también pueden aplicar controles de entrada estableciendo políticas de la organización.
Para obtener más información sobre cómo controlar el tráfico de entrada, consulta Restringe el tráfico de 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 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. De forma predeterminada, los servicios y los trabajos usan la cuenta de servicio predeterminada de Compute Engine. 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 para usar la identidad por servicio y administrar una cuenta de servicio dedicada. Para obtener información sobre cómo Cloud Run les 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 proporciona varias opciones diferentes para controlar quién invoca tu servicio o ejecuta tu trabajo.
Controles de entrada
Para administrar la entrada de servicios de Cloud Run a nivel de redes, consulta Cómo controlar 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
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 sin autenticar.
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. Obtén más información para crear servicios públicos de Cloud Run cuando se aplique el uso compartido restringido del dominio.
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.
Funciones de seguridad del balanceador de cargas para tu servicio
Si configuraste un servicio de Cloud Run para que sea un backend de un balanceador de cargasGoogle Cloud , 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.app
predeterminada. - De manera opcional, puedes habilitar las funciones de seguridad en el balanceador de cargas Google Cloud , como 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 el trabajo se activa con otro servicio, como Cloud Scheduler, la cuenta de servicio que se usa debe tener el permiso
run.jobs.run
en el trabajo.Otorga 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 use deben 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 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 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
Como 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 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 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 consola de Google Cloud. Obtén más información en Visualiza las 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 ejecutando un 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 redes, consulta la Guía de redes sin servidores de Cloud Run.