Seguridad del entorno de ejecución

Cada función se ejecuta sobre una imagen de entorno de ejecución con versión dentro del entorno de ejecución seguro de Cloud Functions. Las imágenes del entorno de ejecución contienen bibliotecas del sistema operativo, entornos de ejecución de lenguaje y otros paquetes del sistema. Google mantiene todas las imágenes del entorno de ejecución de Cloud Functions y lanza parches de seguridad y actualizaciones de mantenimiento después de un período de pruebas de estabilidad.

Imágenes del entorno de ejecución

Cada entorno de ejecución tiene una imagen de entorno de ejecución asociada (también conocida como imagen de ejecución) en un repositorio público en gcr.io. Para obtener uno de los ID de entorno de ejecución y sus imágenes de entorno de ejecución, consulta Entornos de ejecución.

Identifica la imagen del entorno de ejecución

Puedes identificar la imagen del entorno de ejecución que se usa para crear tu función mediante la inspección de los registros de compilación de tu función.

En los registros de compilación, busca google.run-image. Esto te brinda la entrada de registro del paso de compilación que describe la versión de la imagen del entorno de ejecución que se usa para compilar tu función. Por ejemplo, una entrada de registro para una función de Nodejs podría verse de la siguiente manera:

{
  ...
  "textPayload": "Step #2 - \"build\": Adding image label google.run-image:
    us.gcr.io/gae-runtimes/buildpacks/nodejs20/run:nodejs20_20230924_20_6_1_RC00",
  ...
}

Política de actualización de seguridad

Puedes elegir una de las siguientes políticas de actualización de seguridad:

  • Actualizaciones automáticas (predeterminadas): Las actualizaciones y los parches de seguridad del entorno de ejecución se publican en versiones nuevas de la imagen del entorno de ejecución. Después de un período de prueba de estabilidad y confiabilidad, el entorno de ejecución actualizado se implementa en todas las funciones, lo que da como resultado una actualización sin tiempo de inactividad. Las actualizaciones automáticas de seguridad están disponibles con Cloud Functions (1st gen) y Cloud Functions (2nd gen). Para implementar correcciones de seguridad a nivel del lenguaje, es posible que debas volver a compilar funciones que usen lenguajes compilados, como Go o Java.

  • Actualizaciones de implementación: Las actualizaciones y los parches de seguridad se aplican a los entornos de ejecución solo cuando se implementan o vuelven a implementar funciones, a menos que se indique lo contrario. Las actualizaciones en la implementación están disponibles en Cloud Functions (1st gen) y Cloud Functions (2nd gen).

La política de actualización del entorno de ejecución se puede cambiar con la marca --runtime-update-policy en el comando gcloud deploy.

Configura la política de actualización de tu función

Para cambiar la política de actualización de tu función, incluye la marca --runtime-update-policy en el comando gcloud deploy como se muestra aquí:

  gcloud functions deploy FUNCTION_NAME \
    --runtime-update-policy=POLICY ...

Reemplaza lo siguiente:

  • FUNCTION_NAME por el nombre de la función
  • POLICY por automatic o on-deploy

La política predeterminada para todas las funciones es automatic.

Inspecciona la política de actualización de tu función

Puedes inspeccionar la política de actualización de la función con el siguiente comando:

  gcloud functions describe FUNCTION_NAME \

Donde FUNCTION_NAME es el nombre de tu función.

  • Las funciones con actualizaciones de seguridad automáticas habilitadas tendrán la clave automaticUpdatePolicy
  • Las funciones que se actualizan en la implementación tendrán la clave onDeployUpdatePolicy

Identifica la imagen del entorno de ejecución que se usa después de una actualización automática

Cuando habilitas las actualizaciones automáticas, Cloud Functions cambia la imagen del entorno de ejecución de la función por una revisión más reciente que contenga parches y actualizaciones de seguridad adicionales. Este cambio aparece en los registros del entorno de ejecución de tu función.

Dentro de los registros del entorno de ejecución, la etiqueta runtime_version te indica cuándo se usa una imagen de entorno de ejecución nueva en tu función. Una entrada de registro para una función de Nodejs que se actualizó de forma automática podría verse así:

{
  ...
  "labels:" {
    runtime_version: nodejs20_20230924_20_6_1_RC00
    execution_id: ...
  }
  ...
}

Análisis de seguridad en Cloud Functions (2nd gen)

Las funciones de Cloud Functions (2nd gen) que tienen habilitadas las actualizaciones automáticas se compilan sobre una imagen de scratch. Como resultado, el contenedor que representa tu función en Artifact Registry no tendrá una imagen base y será considerablemente más pequeño que las funciones que usan actualizaciones en la implementación. La imagen base se combina con la imagen de la función en el tiempo de ejecución para crear una función completa.

Puedes usar analizadores de seguridad para supervisar las imágenes base administradas por Google que potencian tu función. Puedes encontrar la imagen base más reciente de tu función en gcr.io/serverless-runtimes/RUNTIME_ID/run.

Reemplaza lo siguiente:

  • RUNTIME_ID por el ID del entorno de ejecución que usa la función, por ejemplo, python310.