Proteggi la funzione Cloud Run

Questa pagina fornisce una panoramica generale dei modi in cui puoi controllare le interazioni con le risorse Cloud Run Functions.

Controllo dell'accesso

Esistono due approcci per controllare l'accesso a Cloud Run Functions:

Protezione dell'accesso con l'identità

Un modo per controllare l'accesso a una funzione è richiedere all'entità richiedente di identificarsi utilizzando una credenziale. Una credenziale è una sorta di "nome", protetto da un secret che l'entità conosce o a cui ha accesso, come una password o un dongle hardware. Per impostazione predefinita, le funzioni vengono implementate come private e richiedono credenziali di questo tipo, anche se è possibile eseguire il deployment di una funzione come pubblica, ovvero senza richiedere credenziali.

La prima fase del processo consiste nel convalidare le credenziali per assicurarsi che il richiedente sia chi dice di essere e che presenti la giusta combinazione di nome e secret. Questa fase è chiamata (Authentication).

Una volta autenticata l'identità del richiedente, è possibile valutare il suo livello di accesso, ovvero le autorizzazioni che sono state concesse a questa identità. Questa fase è chiamata (Authorization).

Autenticazione

Cloud Run Functions supporta due diversi tipi di identità, dette anche entità:

  • Service account: si tratta di account speciali che fungono da identità non corrispondenti a una persona, ad esempio una funzione, un'applicazione o una VM. Ti offrono un modo per autenticare questi tipi di identità.
  • Account utente: questi account rappresentano persone, sia come proprietari di Account Google individuali sia come parte di un'entità controllata da Google, come un gruppo Google.

Per i service account e gli account utente, la parte corrispondente al nome delle credenziali è in genere un indirizzo email associato all'account. Il secret di un account utente è in genere una password, mentre quello di un service account è in genere la chiave privata della coppia di chiavi creata insieme all'account.

Tuttavia, le password utente e le chiavi dei service account sono di per sé molto potenti: possono fornire un accesso ad ampio raggio a dati e funzionalità e rimangono valide finché non vengono revocate o modificate attivamente. Per limitare i potenziali danni che potrebbero verificarsi in caso di fuga di credenziali, in Google Cloud questa credenziale principale viene sostituita da una credenziale a breve termine basata su questa, detta token, che ha una durata limitata e viene creata all'istante nell'ambito della sequenza di richieste. Il token viene passato con la richiesta e serve per autenticare in modo sicuro l'account.

In Cloud Run Functions vengono utilizzati due tipi di token: token di accesso e token ID. I token di accesso vengono in genere utilizzati per autenticare le chiamate API, mentre i token ID vengono utilizzati per autenticare le chiamate al codice creato dallo sviluppatore, come nel caso di una funzione che chiama un'altra funzione. I token stessi vengono creati mediante il framework OAuth 2 e la relativa estensione, Open Identity Connect, ma la sequenza è complessa e soggetta a errori. Pertanto, è consigliabile utilizzare le librerie client di Cloud per gestire il processo.

Autorizzazione

Una volta confermata l'identità dell'entità richiedente, è necessario valutare cosa è consentito fare al richiedente. Questa valutazione si basa sulle autorizzazioni concesse all'account autenticato al momento della configurazione. A questo scopo, Cloud Run Functions utilizza Identity and Access Management (IAM). I ruoli, ovvero set di singole autorizzazioni raggruppate per comodità, vengono assegnati all'account direttamente o tramite una configurazione detta policy. Ogni singola autorizzazione nel set di ruoli corrisponde in genere a una singola chiamata API REST esposta dal servizio richiesto. Per saperne di più su questo processo, consulta Autorizzazione dell'accesso tramite IAM.

Controllo dell'accesso basato sulla rete

Puoi anche limitare l'accesso specificando le impostazioni della rete per le singole funzioni. Ciò consente un controllo preciso del traffico di rete in entrata e in uscita rispettivamente verso e dalle tue funzioni.

Isolamento e sandboxing

Internamente, le istanze di funzione sono isolate l'una dall'altra tramite la piattaforma di sandboxing gVisor. Per il modo in cui sono progettate, le funzioni non possono accedere agli ambienti operativi di altre funzioni.

Aggiornamenti dell'ambiente di esecuzione

Google crea patch di sicurezza e aggiornamenti per la manutenzione disponibili dopo un periodo di test della stabilità. Cloud Run Functions potrebbe applicare aggiornamenti ad altri aspetti dell'ambiente di esecuzione, come il sistema operativo o i pacchetti inclusi. Questi aggiornamenti contribuiscono a mantenere sicuro l'ambiente di esecuzione della tua funzione.

Aggiornamenti della sicurezza di Cloud Run Functions

Puoi scegliere una delle seguenti policy di 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 dei livelli di stabilità e affidabilità, il runtime aggiornato viene implementato in tutte le funzioni, garantendo un aggiornamento senza tempi di inattività. Gli aggiornamenti della sicurezza automatici sono disponibili con Cloud Run Functions (1ª gen.) e Cloud Run Functions. Per applicare le correzioni di sicurezza a livello di linguaggio, potrebbe essere necessario ricompilare le funzioni che utilizzano linguaggi compilati come Go o Java.

  • Aggiornamenti in fase di 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 indicato. Gli aggiornamenti in fase di deployment sono disponibili sia per Cloud Run Functions (1ª gen.) sia per Cloud Run Functions.

La policy di aggiornamento del runtime può essere modificata utilizzando il flag --runtime-update-policy nel comando gcloud functions deploy.

Per scoprire di più sugli aggiornamenti della sicurezza dell'ambiente di esecuzione, consulta le policy di aggiornamento della sicurezza.