Descripción general del diseño de seguridad

Obtén información sobre cómo Cloud Run implementa las prácticas recomendadas de seguridad para proteger los datos y explora cómo usar estas funciones para cumplir con los requisitos de seguridad.

Arquitectura

Cloud Run se ejecuta en 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, como 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, lee el informe de 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 estos componentes responden a las solicitudes a tu servicio y a las llamadas a la API de Cloud Run Admin:

Diagrama de los componentes de la infraestructura de Cloud Run
Figura 1. Diagrama de los componentes de la infraestructura de Cloud Run

Solicitudes a tu servicio

Cuando se realiza una solicitud a tu servicio de Cloud Run, ya sea a través de tu dominio personalizado o directamente a tu URL run.app, los siguientes componentes la controlan:

  • 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 run.app, el GFE la reenvía 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 de tráfico y el control de acceso.
  • Proxy HTTP: Es un componente zonal que balancea las cargas de las solicitudes HTTP entrantes a las instancias de tus aplicaciones en zona de pruebas.
  • Programador: Selecciona los servidores de apps 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 metadatos y credenciales 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 Administrador de Cloud Run, 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. 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. Cada cambio se revisa en términos de seguridad, y la mayoría se escribe de una manera segura para la memoria. Se logra una mayor solidez mediante el filtrado de llamadas del sistema del modo de computación segura (seccomp).

  • Segunda generación: Basada en microVM de Linux, esta opción proporciona más compatibilidad y rendimiento para cargas de trabajo personalizadas. Se logra una mayor solidez con el filtrado de llamadas del sistema de seccomp y los espacios de nombres de Sandbox2 de Linux.

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:

En ambos entornos de ejecución, el contenedor del usuario está aislado de otras cargas de trabajo a través de dos capas de zona de pruebas.
Figura 2. En ambos entornos de ejecución, el contenedor del usuario está aislado de otras cargas de trabajo a través de dos capas de zona de pruebas.

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 cancela 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:

Además, Cloud Run se integra a muchos otros sistemas de Google Cloud para administrar tus datos y acceder a ellos de las siguientes maneras:

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 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 tus trabajos o servicios 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.
Diagrama de los componentes de la infraestructura de Cloud Run
Figura 3. El tráfico de salida se puede enviar a través de un conector a una red de VPC. También puede viajar directamente a una VPC o a una red que no sea de VPC (vista previa).

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:

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 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.

  • Servicios de Google Cloud: El tráfico se dirige 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.

Diagrama de los componentes de la infraestructura de Cloud Run
Figura 4. Tráfico de entrada de red HTTP de capa 7 (entrante) a Cloud Run.

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 URL run.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 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 provenga solo de fuentes de confianza.

En el caso de los servicios de Cloud Run que solo entregan contenido 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 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 el ingreso, 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 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 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 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 Cómo proteger 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 el acceso de los servicios de Cloud Run a nivel de la red, consulta Cómo controlar el acceso 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.

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 configurar 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 cargas de Google Cloud, protege esta ruta con los siguientes métodos:

IAM para tu trabajo

Usa el permiso run.jobs.run para configurar quién puede ejecutar tu trabajo de Cloud Run de las siguientes formas:

  • 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 permiso al usuario que accedió para ejecutar una tarea 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 condició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

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 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.

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 Consulta 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 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 de cómo configurar la red, consulta la Guía de redes sin servidores de Cloud Run.