Sicurezza dell'ambiente di esecuzione

Ogni funzione viene eseguita su un'immagine di runtime con controllo delle versioni all'interno dell'ambiente di esecuzione sicuro di Cloud Functions. Le immagini di runtime contengono librerie di sistemi operativi, runtime dei linguaggi e altri pacchetti di sistema. Google gestisce tutte le immagini di runtime di Cloud Functions, rilasciando patch di sicurezza e aggiornamenti di manutenzione dopo un periodo di test di stabilità.

Immagini runtime

A ogni runtime è associata un'immagine di runtime (nota anche come immagine di esecuzione) in un repository pubblico su gcr.io. Per un elenco di ID runtime e delle relative immagini di runtime, consulta la sezione Runtime.

Identifica l'immagine di runtime

Puoi identificare l'immagine di runtime utilizzata per creare la funzione ispezionando i log di build per la tua funzione.

All'interno dei log di build, cerca google.run-image. Fornisce la voce di log del passaggio di build che descrive la versione dell'immagine di runtime utilizzata per creare la funzione. Ad esempio, una voce di log per una funzione Nodejs potrebbe avere il seguente aspetto:

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

Criterio di aggiornamento della sicurezza

Puoi scegliere uno dei seguenti criteri per l'aggiornamento della sicurezza:

  • Aggiornamenti automatici (impostazione predefinita): gli aggiornamenti e le patch di sicurezza per l'ambiente di runtime vengono pubblicati in nuove versioni dell'immagine di runtime. Dopo un periodo di test di stabilità e affidabilità, il runtime aggiornato viene implementato in tutte le funzioni, il che determina un aggiornamento senza tempi di inattività. Gli aggiornamenti automatici della sicurezza sono disponibili con Cloud Functions (1ª generazione.) e Cloud Functions (2nd gen). Per ricevere correzioni di sicurezza a livello di linguaggio, potrebbe essere necessario ricreare funzioni che utilizzano linguaggi compilati come Go o Java.

  • Al momento degli aggiornamenti del deployment: gli aggiornamenti e le patch di sicurezza vengono applicati ai runtime solo quando viene eseguito o rieseguito il deployment delle funzioni, se non diversamente specificato. Aggiornamenti sul deployment sono disponibili sia su Cloud Functions (1ª generazione.) che su Cloud Functions (2nd gen).

Il criterio di aggiornamento del runtime può essere modificato utilizzando il flag --runtime-update-policy nel comando gcloud deploy.

Imposta il criterio di aggiornamento della funzione

Puoi modificare il criterio di aggiornamento della funzione includendo il flag --runtime-update-policy nel comando gcloud deploy, come mostrato qui:

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

Sostituisci:

  • FUNCTION_NAME con il nome della funzione
  • POLICY con automatic o on-deploy

Il criterio predefinito per tutte le funzioni è automatic.

Controlla il criterio di aggiornamento della funzione

Puoi esaminare il criterio di aggiornamento della funzione con il seguente comando:

  gcloud functions describe FUNCTION_NAME \

Dove FUNCTION_NAME è il nome della funzione

  • Le funzioni con aggiornamenti della sicurezza automatici attivati avranno la chiave automaticUpdatePolicy
  • Le funzioni che si aggiornano al deployment avranno la chiave onDeployUpdatePolicy

Identifica l'immagine di runtime utilizzata dopo un aggiornamento automatico

Quando abiliti gli aggiornamenti automatici, Cloud Functions scambia l'immagine di runtime della tua funzione con una revisione più recente contenente patch e aggiornamenti di sicurezza aggiuntivi. Questa modifica viene visualizzata nei log di runtime della funzione.

All'interno dei log di runtime, l'etichetta runtime_version indica quando viene utilizzata una nuova immagine di runtime nella funzione. Una voce di log per una funzione Nodejs che è stata aggiornata automaticamente potrebbe essere la seguente:

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

Scansioni della sicurezza su Cloud Functions (2nd gen)

Cloud Functions (2nd gen) con aggiornamenti automatici abilitati si basano su un'immagine scratch. Di conseguenza, il container che rappresenta la tua funzione in Artifact Registry non avrà un'immagine di base e sarà notevolmente più piccolo delle funzioni che utilizzano aggiornamenti al deployment. L'immagine di base viene combinata con l'immagine della funzione in fase di esecuzione per creare una funzione completa.

Puoi utilizzare gli scanner di sicurezza per monitorare le immagini di base gestite da Google su cui si basa la tua funzione. Puoi trovare l'immagine di base più recente per la tua funzione all'indirizzo gcr.io/serverless-runtimes/RUNTIME_ID/run

Sostituisci:

  • RUNTIME_ID con l'ID runtime utilizzato dalla funzione, ad esempio python310

Poiché l'immagine è ora basata su scratch, non sarà possibile eseguire direttamente l'immagine archiviata in Artifact Registry. Se ti serve un'immagine eseguibile, utilizza il criterio al momento del deployment.