Architettura
Cloud Run viene eseguito su Borg nello stesso ambiente in cui Google esegue il deployment di miliardi di container a settimana, ospitando alcuni dei siti più grandi al mondo, tra cui Gmail e YouTube. Poiché i componenti di Cloud Run condividono la stessa infrastruttura, sono costruiti secondo gli stessi standard di sicurezza di altri servizi Google.
Per scoprire di più sul nostro approccio alla sicurezza, leggi il white paper sulla panoramica della sicurezza di Google.
L'architettura di Cloud Run contiene molti diversi componenti dell'infrastruttura. Il seguente diagramma mostra come questi componenti rispondono alle richieste al tuo servizio e alle chiamate all'API Cloud Run Admin:
Richieste al tuo servizio
Quando viene effettuata una richiesta al servizio Cloud Run tramite il tuo dominio personalizzato o direttamente all'URL run.app
, la richiesta viene gestita dai seguenti componenti:
- Google Front End (GFE): il servizio di infrastruttura globale di Google che termina le connessioni TLS e applica protezioni contro gli attacchi DoS quando effettui una richiesta all'URL
run.app
. Cloud Run è un servizio regionale, quindi quando si accede a una richiesta tramite l'URLrun.app
, il GFE inoltra la richiesta a Cloud Run nella regione appropriata. - Bilanciatore del carico Google Cloud: quando configuri Cloud Load Balancing per gestire il tuo dominio personalizzato, viene inclusa la funzionalità GFE menzionata in precedenza. Puoi anche configurare i bilanciatori del carico Google Cloud per eseguire funzioni aggiuntive, come la gestione del traffico e controllo dell'accesso.
- Proxy HTTP:un componente zonale che esegue il bilanciamento del carico delle richieste HTTP in entrata alle istanze delle applicazioni in sandbox.
- Pianificatore:seleziona i server app per ospitare le istanze delle tue applicazioni in sandbox.
- Server app:un nodo di calcolo zonale e multi-tenant che crea e gestisce le sandbox in cui vengono eseguite le istanze del contenitore di ogni applicazione.
- Sandbox:isola il codice utente dal sistema e dagli altri clienti. Scopri di più nella sezione Sicurezza informatica che segue.
- Archiviazione:espone un'interfaccia del file server per le immagini container importate da registri dei container supportati.
- Server di metadati:fornisce credenziali e metadati specifici della sandbox.
- Networking in uscita:gestisce il traffico in uscita avviato dalla sandbox.
Chiamate all'API Cloud Run Admin
Quando viene effettuata una richiesta all'API Cloud Run Admin, la richiesta viene gestita dai seguenti componenti:
- Google Front End (GFE): il servizio di infrastruttura globale di Google che termina le connessioni TLS e applica protezioni contro gli attacchi DoS.
- Control plane:convalida e scrive le configurazioni dell'applicazione nello spazio di archiviazione.
- Archiviazione della configurazione: memorizza le configurazioni delle applicazioni in Spanner e Bigtable per l'accesso da parte di altri componenti, come app server, pianificatore ed elementi di rete.
Sicurezza di Compute
I componenti di Cloud Run vengono eseguiti su Borg, il sistema di gestione dei container di Google. Per i container, Cloud Run offre due ambienti di esecuzione:
Prima generazione: basata sulla piattaforma di sicurezza dei container gVisor, questa opzione ha una base di codice ridotta, che offre una superficie di attacco più piccola. Ogni modifica viene esaminata per la sicurezza e la maggior parte viene scritta in modo sicuro per la memoria. Un'ulteriore mitigazione viene ottenuta utilizzando il filtraggio delle chiamate di sistema della modalità di calcolo sicuro (seccomp).
Seconda generazione: basata su microVM Linux, questa opzione offre maggiore compatibilità e prestazioni per i carichi di lavoro personalizzati. Un ulteriore rafforzamento viene ottenuto utilizzando il filtro delle chiamate di sistema seccomp e gli spazi dei nomi Linux Sandbox2.
Entrambi questi ambienti di esecuzione utilizzano due livelli di sandboxing costituiti da un livello basato su hardware equivalente a singole VM (virtualizzazione x86) e un livello del kernel software, come mostrato nel seguente diagramma:
Se il tuo servizio utilizza l'infrastruttura di terze parti per la protezione dei contenitori, utilizza l'ambiente di esecuzione di seconda generazione.
Crittografia e archiviazione dei dati
Le istanze Cloud Run sono stateless. L'interruzione di un'istanza ne elimina lo stato. Pertanto, tutte le nuove istanze vengono avviate da un sistema pulito.
Se hai dati con stato, puoi gestirli nei seguenti modi:
- Archivia i dati con stato in servizi di archiviazione esterni, come Cloud SQL o Memorystore.
- Esegui l'integrazione con Secret Manager per la memorizzazione sicura di dati sensibili come chiavi API e password.
Inoltre, Cloud Run si integra con molti altri sistemi Google Cloud per gestire e accedere ai tuoi dati nei seguenti modi:
- I dati di configurazione del servizio vengono archiviati in Spanner e Bigtable.
- I dati di monitoraggio e logging vengono inviati a Google Cloud Observability.
- Le immagini container vengono importate dai registri dei container supportati e possono essere facoltativamente criptate utilizzando le chiavi di crittografia gestite dal cliente (CMEK).
In Google Cloud, tutti i tuoi dati sono criptati quando sono inattivi.
Cloud Run è conforme alle iniziative di Google Cloud per la protezione e la trasparenza dei dati, inclusa la trasparenza degli accessi e la residenza dei dati.
Sicurezza della rete
Cloud Run e tutti gli altri servizi Google Cloud criptano tutto il traffico in transito. Puoi incorporare i controlli in entrata e in uscita nei servizi o nei job Cloud Run per aggiungere un ulteriore livello di limitazione. Gli amministratori dell'organizzazione possono anche applicare il traffico in entrata e in uscita impostando i criteri dell'organizzazione.
Traffico in uscita
Il traffico in uscita che esce da Cloud Run viene trattato come livello di trasporto 4 (TCP e UDP).
Per impostazione predefinita, il traffico in uscita segue uno dei seguenti percorsi quando esce da Cloud Run:
- La destinazione di destinazione si trova nella rete VPC: il traffico viene inviato a una rete VPC o a una rete VPC condiviso nel progetto utilizzando l'uscita VPC diretta o un connettore Accesso VPC serverless. Il connettore è una risorsa di regione che si trova direttamente sulla rete VPC.
- La destinazione di destinazione non è nella rete VPC: il traffico viene indirizzato direttamente alla destinazione di destinazione all'interno della rete di Google o della rete internet pubblica.
Controllo dell'uscita
Per un maggiore controllo sul traffico in uscita, utilizza l'impostazione di traffico in uscita VPC per indirizzare tutto il traffico alla rete VPC utilizzando i connettori o il traffico in uscita VPC diretto.
Una volta nella rete VPC, puoi utilizzare gli strumenti VPC per gestire il traffico, ad esempio:
- Applica regole firewall al traffico del tuo servizio o modifica il modo in cui il traffico viene instradato.
- Attiva i log di flusso VPC per ispezionare il traffico.
Gli amministratori dell'organizzazione possono anche applicare il traffico in uscita impostando il vincolo dell'elenco Impostazioni di traffico VPC in uscita consentite (Cloud Run).
Traffico in entrata (ingress)
A differenza del traffico in uscita, il traffico in entrata di Cloud Run si trova al livello 7 dell'applicazione (HTTP).
Cloud Run accetta traffico in entrata proveniente dalle seguenti fonti:
Rete internet pubblica: le richieste vengono instradate direttamente da origini pubbliche ai tuoi servizi Cloud Run con la possibilità di instradare il traffico tramite un bilanciatore del carico HTTP(S) esterno.
Rete VPC: puoi instradare il traffico da una rete VPC ai servizi Cloud Run utilizzando Accesso privato Google, Private Service Connect o un Application Load Balancer interno. Il traffico di questo tipo rimane sempre all'interno della rete di Google.
Servizi Google Cloud: il traffico arriva direttamente a Cloud Run da altri servizi Google Cloud, come BigQuery o persino Cloud Run stesso. In alcuni casi, puoi anche configurare questi servizi in modo che passino attraverso una rete VPC. Il traffico di questo tipo rimane sempre all'interno della rete di Google.
Il modello di sicurezza della rete di Cloud Run include le seguenti proprietà del traffico in entrata:
- Indirizza il traffico all'URL
run.app
: l'URLrun.app
richiede sempre HTTPS per consentire al traffico di entrare in Cloud Run. L'infrastruttura di servizio frontend di Google termina il protocollo TLS e poi inoltra il traffico a Cloud Run e al tuo contenitore tramite un canale criptato. - Traffico verso un dominio personalizzato associato al bilanciatore del carico Google Cloud: per il traffico HTTPS, i bilanciatori del carico interni ed esterni di Google Cloud terminano TLS e inoltrano il traffico a Cloud Run e al tuo contenitore tramite un canale criptato. I bilanciatori del carico di Google Cloud ti consentono inoltre di applicare funzionalità di sicurezza aggiuntive come IAP, Google Cloud Armor e criteri SSL.
Per ulteriori informazioni sulla configurazione del traffico di rete VPC per Cloud Run, consulta Ricevere richieste dalle reti VPC.
Controllo del traffico in entrata
I controlli in entrata di Cloud Run gestiscono il traffico che entra in Cloud Run per assicurarsi che provenga solo da origini attendibili.
Per i servizi Cloud Run che servono solo clienti interni, puoi configurare l'impostazione "internal" in modo che solo il traffico proveniente dalle seguenti origini interne possa entrare in Cloud Run:
- Le reti VPC nel progetto o nel perimetro dei Controlli di servizio VPC, inclusi i servizi Cloud Run che indirizzano tutto il loro traffico tramite la rete VPC.
- La rete VPC condivisa a cui è collegato il servizio Cloud Run.
- Alcuni servizi Google Cloud, come BigQuery, che si trovano nel perimetro del progetto o di Controlli di servizio VPC.
- Il traffico proveniente dai client on-premise che attraversa la rete VPC per raggiungere Cloud Run.
Gli amministratori dell'organizzazione possono anche applicare l'ingresso impostando i criteri dell'organizzazione.
Per ulteriori informazioni sul controllo del traffico in entrata, consulta Limitare il traffico in entrata per Cloud Run.
Controllo degli accessi
I controlli di accesso vengono utilizzati per limitare chi ha accesso ai servizi e ai job Cloud Run.
Chi può gestire il tuo servizio o job
Per controllare chi gestisce il servizio o il job Cloud Run, Cloud Run utilizza IAM per autorizzare gli utenti e gli account di servizio.
Contenuti e dispositivi a cui può accedere il tuo servizio o job
Per controllare ciò che i carichi di lavoro Cloud Run possono raggiungere tramite la rete, puoi forzare tutto il traffico attraverso la rete VPC e applicare regole firewall VPC, come descritto in precedenza nella sezione Sicurezza di rete.
Se utilizzi l'uscita VPC diretto, puoi associare i tag di rete alla risorsa Cloud Run e fare riferimento ai tag di rete nella regola del firewall. Se utilizzi Accesso VPC serverless, puoi applicare le regole del firewall alle istanze del connettore.
Utilizza IAM per controllare a quali risorse può accedere il tuo servizio o job Cloud Run. Per impostazione predefinita, i servizi e i job utilizzano l'account di servizio predefinito di Compute Engine. Per i workload sensibili, utilizza un account di servizio dedicato in modo da poter concedere solo le autorizzazioni necessarie per il loro funzionamento. Scopri di più sull'utilizzo dell'identità per servizio per gestire un account di servizio dedicato. Per informazioni su come Cloud Run ricorda agli utenti di creare un account di servizio dedicato, consulta Proteggere i servizi Cloud Run con Recommender.
Chi può richiamare il servizio o eseguire il job
Cloud Run offre diverse opzioni per controllare chi invoca il servizio o esegue il job.
Controlli Ingress
Per gestire l'ingresso dei servizi Cloud Run a livello di rete, consulta Controllo dell'ingresso nella sezione precedente.
I job Cloud Run non gestiscono le richieste e, pertanto, non utilizzano i controlli di ingresso durante l'esecuzione dei job.
IAM per il tuo servizio
Cloud Run esegue un controllo IAM su ogni richiesta.
Utilizza l'autorizzazione run.routes.invoke
per configurare chi può accedere al tuo servizio Cloud Run nei seguenti modi:
Concedi l'autorizzazione a selezionare account di servizio o gruppi per consentire l'accesso al servizio. Tutte le richieste devono avere un'intestazione di autorizzazione HTTP contenente un token ID OpenID Connect firmato da Google per uno degli account di servizio autorizzati.
Concedi l'autorizzazione a tutti gli utenti per consentire l'accesso non autenticato.
Per assicurarsi che solo i membri dell'organizzazione possano invocare un servizio Cloud Run, un amministratore dell'organizzazione può impostare il criterio dell'organizzazione Condivisione limitata per i domini. Gli amministratori dell'organizzazione possono anche disattivare servizi Cloud Run specifici. Scopri come creare servizi Cloud Run pubblici quando è impostata la condivisione limitata per i domini.
Scopri di più sui casi d'uso comuni per l'autenticazione e su come Cloud Run utilizza controllo dell'accesso con IAM.
Funzionalità di sicurezza del bilanciatore del carico per il servizio
Se hai configurato un servizio Cloud Run come backend per un bilanciatore del carico Google Cloud, metti al sicuro questo percorso utilizzando i seguenti metodi:
- Blocca il traffico diretto dalla rete internet pubblica all'URL
run.app
impostando l'ingresso su una delle opzioni interne. - Disattiva l'URL
run.app
predefinito. - Facoltativamente, puoi attivare le funzionalità di sicurezza sul bilanciatore del carico Google Cloud, ad esempio Google Cloud Armor, IAP e criteri SSL.
IAM per il tuo lavoro
Utilizza l'autorizzazione run.jobs.run
per configurare chi può eseguire il tuo job Cloud Run nei seguenti modi:
Concedi l'autorizzazione a selezionare account di servizio o gruppi per consentire l'accesso al job. Se il job viene attivato da un altro servizio, ad esempio Cloud Scheduler, l'account di servizio utilizzato deve disporre dell'autorizzazione
run.jobs.run
sul job.Concedi all'utente che ha eseguito l'accesso l'autorizzazione per eseguire un job dalla console Google Cloud. Se il job viene attivato da un altro servizio, ad esempio Cloud Scheduler, l'account di servizio o il gruppo utilizzato deve disporre dell'autorizzazione
run.jobs.run
sul job.
Per assicurarsi che solo i membri dell'organizzazione possano eseguire un job Cloud Run, un amministratore dell'organizzazione può impostare il vincolo Condivisione limitata per i domini. Gli amministratori dell'organizzazione possono anche disattivare determinati job Cloud Run.
Controlli di servizio VPC
I servizi Cloud Run possono far parte di un perimetro Controlli di servizio VPC per consentirti di utilizzare i Controlli di servizio VPC per controllare l'accesso e mitigare il rischio di esfiltrazione. Scopri di più sull'utilizzo dei Controlli di servizio VPC.
Sicurezza della catena di approvvigionamento
Immagini di base gestite da Buildpacks di Google Cloud
I servizi di cui viene eseguito il deployment dal codice sorgente utilizzando i buildpack di Google Cloud vengono creati utilizzando le immagini di base fornite da Google. Google gestisce queste immagini di base e fornisce patch di routine su base settimanale. In situazioni di emergenza che coinvolgono vulnerabilità di sicurezza critiche, siamo in grado di rendere disponibili le patch entro poche ore.
Sicurezza della catena di approvvigionamento interna di Cloud Run
Poiché funziona su Borg, Cloud Run implementa tutte le stesse misure di sicurezza della catena di approvvigionamento standard di tutti i servizi Google, come Gmail e YouTube. Scopri di più sulle pratiche della catena di approvvigionamento interna di Google nei white paper BeyondProd e Autorizzazione binaria per Borg.
Autorizzazione binaria
Cloud Run supporta la funzionalità integrata Autorizzazione binaria per garantire che in Cloud Run vengano eseguiti il deployment solo di immagini container attendibili. Scopri di più nella panoramica della configurazione per Cloud Run.
Approfondimenti sulla sicurezza della catena di fornitura del software
Gli amministratori di Cloud possono visualizzare le informazioni sulla sicurezza della catena di approvvigionamento dei loro container di cui è stato eseguito il deployment direttamente da un riquadro nella console Google Cloud. Scopri di più su come visualizzare gli approfondimenti sulla sicurezza della catena di fornitura del software.
Sicurezza dell'ambiente di esecuzione
Cloud Run supporta gli aggiornamenti automatici delle immagini di base con i container compatibili. Gli aggiornamenti della sicurezza vengono applicati senza tempi di inattività del servizio mediante l'esecuzione di un nuovo aggiornamento dell'immagine di base del container.
I servizi implementati dall'origine, tra cui Cloud Run, utilizzano i buildpack di Google Cloud e sono compatibili con gli aggiornamenti di sicurezza automatici.
I servizi con aggiornamenti di sicurezza automatici abilitati vengono di cui vengono eseguiti il deployment utilizzando le immagini di base fornite da Google. Google gestisce queste immagini di base e fornisce patch di routine dopo un periodo di test della stabilità. In situazioni di emergenza che coinvolgono vulnerabilità di sicurezza critiche, siamo in grado di rendere disponibili le patch entro poche ore.
Per scoprire di più sugli aggiornamenti della sicurezza dell'ambiente di esecuzione, scopri come configurare gli aggiornamenti della sicurezza.
Passaggi successivi
Per una procedura dettagliata end-to-end su come configurare la rete, consulta la guida al networking serverless di Cloud Run.