Descripción general del diseño de seguridad

Aprende cómo Cloud Run implementa 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 por 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 con los mismos estándares de seguridad que otros servicios de Google.

Si deseas obtener más información sobre nuestro enfoque para la 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 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 al servicio de Cloud Run, ya sea a través del dominio personalizado o directamente a la URL run.app, la solicitud se controla mediante 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 run.app, 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 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 instancias de tus aplicaciones en la 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 Administrador de Cloud Run

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 los contenedores, Cloud Run ofrece dos entornos de ejecución:

  • Primera generación: Según la plataforma de seguridad del contenedor gVisor, esta opción tiene una base de código pequeña, que proporciona una superficie de ataque más pequeña. Todos los cambios se revisan para la seguridad y la mayoría de los cambios se escribieron de manera segura para la memoria. El endurecimiento adicional se logra mediante el filtrado de llamadas del sistema Secure Computing Mode (seccomp).

  • Segunda generación: Según las VM de Linux, esta opción proporciona más compatibilidad y rendimiento para las cargas de trabajo personalizadas. El endurecimiento adicional se logra mediante el filtrado de llamadas del 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:

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 finalizas una instancia, se descarta su estado. Por lo tanto, todas las instancias nuevas se inician desde una cortinilla de video limpia.

Si tienes datos con estado, puedes administrarlos de las siguientes maneras:

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

En Google Cloud, todos tus datos están encriptados en reposo.

Cloud Run cumple con las iniciativas de Google Cloud en toda 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 a 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.
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).

En Cloud Run, se 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.

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

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 entrega de frontend de Google finaliza TLS y, luego, reenvía el tráfico a Cloud Run y al 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 la configuración del 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 qué tráfico ingresa a Cloud Run para garantizar que el tráfico solo provenga de fuentes confiables.

En el caso de los servicios de Cloud Run que entregan solo 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 la 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 trabajo o servicio de Cloud Run, Cloud Run usa IAM a fin de 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. En cargas de trabajo sensibles, usa una cuenta de servicio dedicada a fin de que puedas otorgar solo los permisos que la carga de trabajo necesita para hacer su trabajo. Obtén más información sobre cómo usar la identidad por servicio para administrar una cuenta de servicio dedicada. Para obtener información sobre cómo Cloud Run les recuerda a los usuarios crear una cuenta de servicio dedicada, consulta Protege 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 tu servicio o ejecuta tu trabajo.

Controles de entrada

Para administrar la entrada de servicios de Cloud Run a nivel de 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 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 Uso compartido restringido al dominio. Los administradores de la organización también pueden inhabilitar servicios específicos de Cloud Run. Obtén más 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 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 mediante 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 maneras:

  • Otorga el permiso para seleccionar cuentas de servicio o grupos a fin de permitir el acceso al trabajo. Si otro servicio, como Cloud Scheduler, activa el trabajo, la cuenta de servicio que se use 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, como Cloud Scheduler, activa el trabajo, 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 configurar la restricción 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

Tus 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 a fin de evitar el acceso y mitigar el riesgo de robo de datos. Obtén más información sobre cómo 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 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.

Software Delivery Shield

Con Software Delivery Shield, los administradores de Cloud pueden ver información de seguridad sobre la cadena de suministro de los contenedores implementados directamente desde un panel en la consola de Google Cloud. Obtén más información en Visualiza los detalles del Software Delivery Shield.

¿Qué sigue?

Para obtener una explicación completa de cómo configurar las Herramientas de redes, consulta la Guía de Herramientas de redes sin servidores de Cloud Run.