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 runtime contengono librerie del sistema operativo e runtime dei linguaggi e altri pacchetti di sistema. Google mantiene tutte le immagini runtime di Cloud Functions, rilasciando patch di sicurezza e aggiornamenti di manutenzione dopo un periodo di test di stabilità.

Immagini di runtime

A ogni runtime è associata un'immagine di runtime (nota anche come immagine di esecuzione) un repository pubblico su Artifact Registry. Per un elenco completo di ID runtime e delle relative immagini di runtime, vedi i runtime.

Identifica l'immagine di runtime

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

Nei log di build, cerca google.run-image. In questo modo ottieni voce del passaggio di build che descrive la versione dell'immagine di runtime utilizzata per creare la tua funzione. Ad esempio, una voce di log per una funzione Nodejs potrebbe essere nel seguente modo:

{
  ...
  "textPayload": "Step #2 - \"build\": Adding image label google.run-image:
    us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22:nodejs20_20230924_20_6_1_RC00",
  ...
}

Criterio di aggiornamento della sicurezza

Puoi scegliere uno dei seguenti criteri di aggiornamento della sicurezza:

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

  • All'aggiornamento del deployment: vengono applicati aggiornamenti e patch di sicurezza. ai runtime solo quando viene eseguito o rieseguito il deployment delle funzioni, a meno che diversamente specificato. Gli aggiornamenti sul deployment sono disponibili Cloud Functions (1ª generazione.) e Cloud Functions (2nd gen).

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

Imposta il criterio di aggiornamento della funzione

Puoi modificare il criterio di aggiornamento della funzione includendo il parametro 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 tua funzione
  • POLICY con automatic o on-deploy

Il criterio predefinito per tutte le funzioni è automatic.

Controlla il criterio di aggiornamento della funzione

Puoi controllare 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 automatici della sicurezza attivi avranno il token 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 le tue dell'immagine runtime della funzione con una revisione più recente contenente patch e aggiornamenti. Questa modifica viene visualizzata nei log di runtime della funzione.

Nei log di runtime, l'etichetta runtime_version indica quando un nuovo l'immagine runtime viene utilizzata nella funzione. Una voce di log per una funzione Nodejs che è stato aggiornato automaticamente potrebbe avere il seguente aspetto:

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

Scansioni di sicurezza su Cloud Functions (2nd gen)

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

Puoi utilizzare gli scanner di sicurezza per monitorare le immagini di base gestite da Google che per alimentare la tua funzione. Puoi trovare l'immagine di base più recente per la tua funzione all'indirizzo REGION-docker.pkg.dev/serverless-runtimes/STACK/runtimes/RUNTIME_ID

Sostituisci:

  • REGION con la regione preferita, ad esempio us-central1
  • STACK con lo stack del sistema operativo preferito, ad esempio google-22-full
  • RUNTIME_ID con l'ID runtime utilizzato dalla tua funzione, ad esempio python310

Ad esempio, l'ultima immagine di base Node.js 20 che utilizza lo stack google-22-full, ospitati in us-central1 verrebbero indicati come riferimento con questo URL: us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22

Poiché ora l'immagine è basata su scratch, l'immagine archiviata in Artifact Registry non saranno eseguibili direttamente. Se è necessaria un'immagine eseguibile, utilizza il criterio al deployment.