Información general sobre el diseño de seguridad

Descubre cómo implementa Cloud Run las prácticas recomendadas de seguridad para proteger tus datos y cómo usar estas funciones para cumplir tus requisitos de seguridad.

Arquitectura

Cloud Run se ejecuta sobre Borg en el mismo entorno en el que Google implementa miles de millones de contenedores a la semana, que alojan algunos de los sitios más grandes del mundo, como Gmail y YouTube. Como los componentes de Cloud Run comparten la misma infraestructura, se han creado con los mismos estándares de seguridad que otros servicios de Google.

Para obtener más información sobre nuestro enfoque de 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 responden estos componentes a las solicitudes a tu servicio y a las llamadas a la API Admin de Cloud Run:

Ilustración de los componentes de la infraestructura de Cloud Run
Imagen 1. Diagrama de los componentes de la infraestructura de Cloud Run.

Solicitudes a tu servicio

Cuando se envía 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 gestiona mediante los siguientes componentes:

  • Google Front End (GFE): el servicio de infraestructura global de Google que termina las conexiones TLS y aplica protecciones contra ataques de DoS cuando haces 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 reenvía la solicitud a Cloud Run a través de un canal cifrado en la región correspondiente.
  • Google Cloud Balanceador de carga: cuando configuras Cloud Load Balancing para gestionar tu dominio personalizado, incluye la función de GFE mencionada anteriormente. También puede configurar Google Cloudbalanceadores de carga para que realicen funciones adicionales, como la gestió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 un espacio aislado.
  • Programador: selecciona los servidores de aplicaciones para alojar instancias de tus aplicaciones en un espacio aislado.
  • Servidor de aplicaciones: un nodo de computación zonal y multiinquilino que crea y gestiona los entornos aislados que ejecutan las instancias del contenedor de cada aplicación.
  • Entorno de pruebas: aísla el código de usuario del sistema y de otros clientes. Consulta más información en la siguiente sección sobre seguridad de Compute.
  • Almacenamiento: expone una interfaz de servidor de archivos para las imágenes de contenedor importadas de registros de contenedores admitidos.
  • Servidor de metadatos: proporciona credenciales y metadatos específicos del sandbox.
  • Redes salientes: gestiona el tráfico saliente iniciado por el sandbox.

Llamadas a la API Admin de Cloud Run

Cuando se envía una solicitud a la API Admin de Cloud Run, la solicitud se gestiona mediante los siguientes componentes:

  • Google Front End (GFE): el servicio de infraestructura global de Google que termina las conexiones TLS y aplica protecciones contra ataques DoS.
  • Plano de control: valida y escribe las configuraciones de tu aplicación en el almacenamiento.
  • Almacenamiento de configuración: almacena las configuraciones de las aplicaciones en Spanner y Bigtable para que otros componentes puedan acceder a ellas, como el servidor de aplicaciones, el programador y los elementos de red.

Seguridad de Compute

Los componentes de Cloud Run se ejecutan en el sistema de gestión de contenedores de Google, Borg. En el caso de los 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 menor. Todos los cambios se someten a una revisión de seguridad y la mayoría se escriben de forma segura para la memoria. El refuerzo adicional se consigue mediante el filtrado de llamadas al sistema modo de computación seguro (seccomp).

  • Segunda generación: esta opción se basa en micro-máquinas virtuales Linux y ofrece más compatibilidad y rendimiento para cargas de trabajo personalizadas. El refuerzo adicional se consigue mediante 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 aislamiento que constan de una capa basada en hardware equivalente a máquinas virtuales 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 de usuario está aislado de otras cargas de trabajo mediante dos capas de sandboxing.
Imagen 2. En ambos entornos de ejecución, el contenedor de usuario está aislado de otras cargas de trabajo mediante dos capas de sandboxing.

Si tu servicio utiliza infraestructura de terceros para proteger los contenedores, usa el entorno de ejecución de segunda generación.

Encriptado y almacenamiento de datos

Las instancias de Cloud Run no tienen estado. Si finaliza una instancia, se descartará su estado. Por lo tanto, todas las instancias nuevas se inician desde cero.

Si tienes datos con estado, puedes gestionarlos de las siguientes formas:

Además, Cloud Run se integra con muchos otros sistemas para gestionar y acceder a tus datos de las siguientes formas:Google Cloud

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

Cloud Run cumple las iniciativas de Google Clouda nivel mundial para proteger los datos y ofrecer transparencia, como la transparencia de acceso y la residencia de datos.

Seguridad de la red

Cloud Run y todos los demás Google Cloud servicios cifran todo el tráfico en tránsito. Puedes incorporar controles de salida y de entrada en tus servicios o trabajos de Cloud Run para añadir una capa adicional de restricción. Los administradores de la organización también pueden aplicar la salida y la entrada configurando políticas de la organización.

Tráfico de salida

El tráfico de salida que sale de Cloud Run se trata como capa de transporte 4 (TCP y UDP).

De forma predeterminada, el tráfico de salida sigue una de las siguientes rutas al salir de Cloud Run:

  • El destino está en una red de VPC: el tráfico se dirige a una red de VPC o a una red de VPC compartida de tu proyecto mediante la salida de VPC directa o un conector de acceso a VPC sin servidor. El conector es un recurso regional que se encuentra directamente en la red de VPC.
  • El destino no está en la red de VPC: el tráfico se dirige directamente al destino dentro de la red de Google o de Internet pública.
Diagrama de los componentes de la infraestructura de Cloud Run
Imagen 3. El tráfico de salida se puede enviar a través de un proxy mediante un conector a una red de VPC. También puede ir directamente a una VPC o a una red que no sea de VPC (vista previa).

Controlar la salida

Para tener más control sobre el tráfico de salida, usa el ajuste de salida de VPC para dirigir todo el tráfico a tu red de VPC mediante la salida de VPC directa o conectores.

Una vez que esté en la red de VPC, puedes usar las herramientas de VPC para gestionar el tráfico. Por ejemplo:

Los administradores de la organización también pueden aplicar la salida configurando la restricción de lista Configuración de salida de VPC permitida (Cloud Run).

Tráfico de entrada

A diferencia del tráfico de salida, el tráfico de entrada de Cloud Run se encuentra en la capa de aplicación 7 (HTTP).

Cloud Run acepta el tráfico de entrada entrante de las siguientes fuentes:

  • Internet público: las solicitudes se dirigen directamente desde fuentes públicas a tus servicios de Cloud Run. También puedes dirigir el tráfico a través de un balanceador de carga HTTP(S) externo.

  • Red de VPC: puedes enrutar el tráfico de una red de VPC a los servicios de Cloud Run mediante el acceso privado de Google, Private Service Connect o un balanceador de carga de aplicaciones interno. El tráfico de este tipo siempre permanece en la red de Google.

  • Google Cloud services: 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 que se enruten a través de una red de VPC. El tráfico de este tipo siempre permanece en la red de Google.

Diagrama de los componentes de la infraestructura de Cloud Run
Imagen 4. Tráfico de entrada de red HTTP de capa 7 a Cloud Run.

El modelo de seguridad de red de Cloud Run incluye las siguientes propiedades del tráfico de entrada:

  • Dirige el tráfico a la URL run.app predeterminada: la URL run.app siempre requiere HTTPS para que el tráfico entre en Cloud Run. La infraestructura de servicio frontend de Google finaliza la conexión TLS y, a continuación, reenvía el tráfico a Cloud Run y a tu contenedor a través de un canal cifrado. Puedes inhabilitar la URL predeterminada.
  • Tráfico a un dominio personalizado asociado a tu Google Cloud balanceador de carga: en el caso del tráfico HTTPS,los Google Cloud balanceadores de carga internos y externos finalizan la conexión TLS y reenvían el tráfico a Cloud Run y a tu contenedor a través de un canal cifrado. Google Cloud Los balanceadores de carga 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 red de VPC a Cloud Run, consulta el artículo Recibir solicitudes de redes de VPC.

Controlar el tráfico de entrada

Los controles de entrada de Cloud Run gestionan el tráfico que entra en Cloud Run para asegurarse de que solo proceda de fuentes de confianza.

En el caso de los servicios de Cloud Run que solo atienden a clientes internos, puede configurar el ajuste "internal" para que solo pueda acceder a Cloud Run el tráfico procedente de las siguientes fuentes internas:

  • Redes VPC de tu proyecto o perímetro de Controles de Servicio de VPC, incluidos los servicios de Cloud Run que dirigen todo su tráfico a través de la red VPC.
  • La red de VPC compartida a la que está asociado el servicio de Cloud Run.
  • Algunos Google Cloud servicios, como BigQuery, que se encuentran en tu proyecto o en el perímetro de Controles de Servicio de VPC.
  • Tráfico de clientes on‐premise que atraviesa tu red de VPC para llegar a Cloud Run.

Si utilizas un balanceador de carga externo o interno, puedes inhabilitar la URL run.app predeterminada.

Los administradores de la organización también pueden aplicar el acceso configurando políticas de organización.

Para obtener más información sobre cómo controlar el tráfico de entrada, consulta Restringir el tráfico de entrada en 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 gestionar tu servicio o trabajo

Para controlar quién gestiona 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 acceder tus 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 cortafuegos de VPC, como se ha descrito anteriormente en la sección Seguridad de la 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 Acceso a VPC sin servidor, 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 el caso de las cargas de trabajo sensibles, utiliza una cuenta de servicio específica para conceder solo los permisos que la carga de trabajo necesite para realizar su tarea. Consulta más información sobre cómo usar la identidad por servicio para gestionar una cuenta de servicio específica. Para obtener información sobre cómo recuerda Cloud Run a los usuarios que deben crear una cuenta de servicio específica, consulta Protege los servicios de Cloud Run con Recommender.

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 gestionar el tráfico entrante de los servicios de Cloud Run a nivel de red, consulta Controlar el tráfico entrante en la sección anterior.

Los trabajos de Cloud Run no sirven solicitudes y, por lo tanto, no usan controles de entrada al ejecutar trabajos.

Gestión de identidades y accesos para tu servicio

Usa el permiso run.routes.invoke para configurar quién puede acceder a tu servicio de Cloud Run de las siguientes formas:

  • Concede 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 comprobación de IAM de invocador de Cloud Run y permitir el acceso no autenticado. Cloud Run realiza una comprobación de IAM en cada solicitud cuando la comprobación de IAM de invocador de Cloud Run está habilitada.

Para asegurarse de que solo los miembros de su organización puedan invocar un servicio de Cloud Run, un administrador de la organización puede definir la política de organización Compartir con dominio restringido. Los administradores de la organización también pueden inhabilitar servicios de Cloud Run específicos. Selecciona Permitir acceso público cuando esté habilitado el uso compartido restringido por dominio para crear URLs públicas.

Consulta más información sobre los casos prácticos habituales de autenticación y sobre cómo usa Cloud Run el control de acceso con IAM.

Habilitar Identity-Aware Proxy en 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 Workforce Identity Federation con IAP en Cloud Run. Consulta cómo configurar Identity-Aware Proxy para Cloud Run.

Funciones de seguridad del balanceador de carga de tu servicio

Si has configurado un servicio de Cloud Run como backend de un Google Cloud balanceador de carga, protege esta ruta con los siguientes métodos:

Gestión de identidades y accesos para tu trabajo

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

  • Concede 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 utilice debe tener el permiso run.jobs.run en el trabajo.

  • Concede al usuario que ha iniciado sesión el permiso para ejecutar un trabajo desde la consola Google Cloud. Si el trabajo se activa mediante otro servicio, como Cloud Scheduler, la cuenta de servicio o el grupo que se utilice debe tener el permiso run.jobs.run en el trabajo.

Para asegurarse de que solo los miembros de su organización puedan ejecutar un trabajo de Cloud Run, un administrador de la organización puede definir la restricción Compartir restringido por dominio. Los administradores de la organización también pueden inhabilitar trabajos de Cloud Run específicos.

Controles de Servicio de VPC

Tus servicios de Cloud Run pueden formar parte de un perímetro de Controles de Servicio de VPC para que puedas usar Controles de Servicio de VPC para controlar el acceso y mitigar el riesgo de filtración externa. Consulta más información sobre cómo usar Controles de Servicio de VPC.

Seguridad de la cadena de suministro

Imágenes base gestionadas por buildpacks de Google Cloud

Los servicios que se implementan a partir de código fuente con buildpacks de Google Cloud se compilan con imágenes base proporcionadas por Google. Google mantiene estas imágenes base y proporciona parches rutinarios semanalmente. En situaciones de emergencia que impliquen vulnerabilidades de seguridad críticas, podemos ofrecer parches 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. Consulta 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 con la autorización binaria para asegurarse de que solo se despliegan imágenes de contenedor de confianza en Cloud Run. Consulta más información en el artículo Descripción general de la configuración de Cloud Run.

Información valiosa sobre la 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 de la consola de Google Cloud. Consulta más información en Ver 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 al servicio sin tiempo de inactividad mediante la ejecución de un rebase en la imagen base del contenedor.

Los servicios que se despliegan desde la fuente, incluido Cloud Run, utilizan los paquetes de compilación de Google Cloud y son compatibles con las actualizaciones de seguridad automáticas.

Los servicios con las actualizaciones de seguridad automáticas habilitadas se despliegan mediante imágenes base proporcionadas por Google. Google mantiene estas imágenes base y proporciona parches rutinarios después de un periodo de pruebas de estabilidad. En situaciones de emergencia que impliquen vulnerabilidades de seguridad críticas, podemos ofrecer parches 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.

Siguientes pasos

Para ver un tutorial completo sobre cómo configurar la red, consulta la guía de redes sin servidor de Cloud Run.