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 realizzati secondo gli stessi standard di sicurezza degli altri servizi Google.
Per scoprire di più sul nostro approccio alla sicurezza, leggi il white paper Panoramica della sicurezza di Google.
L'architettura di Cloud Run contiene molti componenti dell'infrastruttura diversi. 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 tuo servizio Cloud Run tramite il tuo dominio personalizzato o direttamente al tuo 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
fai 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 tramite un canale criptato nella regione appropriata. - Google Cloud bilanciatore del carico: quando configuri Cloud Load Balancing per gestire il tuo dominio personalizzato, include la funzionalità GFE menzionata in precedenza. Puoi anche configurare i bilanciatori del carico per eseguire funzioni aggiuntive, come la gestione del traffico e controllo dell'accesso#39;accesso. Google Cloud
- Proxy HTTP:un componente zonale che bilancia il carico delle richieste HTTP in entrata alle istanze delle tue applicazioni in sandbox.
- Scheduler:seleziona i server delle app per ospitare le istanze delle tue applicazioni in sandbox.
- Server delle app:un nodo di calcolo multitenant e zonale che crea e gestisce le sandbox che eseguono le istanze del contenitore di ogni applicazione.
- Sandbox:isola il codice utente dal sistema e da altri clienti. Scopri di più nella sezione seguente Sicurezza di Compute.
- Archiviazione:espone un'interfaccia del file server per le immagini container importate dai registri container supportati.
- Server di metadati: fornisce credenziali e metadati specifici per la 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:archivia le configurazioni delle applicazioni in Spanner e Bigtable per l'accesso da parte di altri componenti, come il server delle app, lo scheduler e gli elementi di rete.
Sicurezza del calcolo
I componenti di Cloud Run vengono eseguiti sul sistema di gestione dei container di Google, Borg. Per i container, Cloud Run offre due ambienti di esecuzione:
Prima generazione:basata sulla piattaforma di sicurezza dei container gVisor, questa opzione ha un codebase di piccole dimensioni, che offre una superficie di attacco più ridotta. Ogni modifica viene esaminata dal punto di vista della sicurezza e la maggior parte viene scritta in modo sicuro per la memoria. Un ulteriore rafforzamento viene ottenuto utilizzando il filtro 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 si ottiene utilizzando il filtro delle chiamate di sistema seccomp e gli spazi dei nomi Linux di Sandbox2.
Entrambi questi ambienti di esecuzione utilizzano due livelli di sandboxing costituiti da un livello supportato dall'hardware equivalente alle singole VM (virtualizzazione x86) e un livello del kernel software, come mostrato nel seguente diagramma:
Se il tuo servizio utilizza un'infrastruttura di terze parti per proteggere i container, utilizza l'ambiente di esecuzione di seconda generazione.
Crittografia e archiviazione dei dati
Le istanze Cloud Run sono stateless. La terminazione di un'istanza ne elimina lo stato. Pertanto, tutte le nuove istanze vengono avviate da zero.
Se hai dati stateful, puoi gestirli nei seguenti modi:
- Archivia i dati stateful in servizi di archiviazione esterni, come Cloud SQL o Memorystore.
- Esegui l'integrazione con Secret Manager per l'archiviazione sicura di dati sensibili come chiavi API e password.
Oltre a questo, Cloud Run si integra con molti altri Google Cloud sistemi per gestire e accedere ai 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 container supportati e possono essere criptate facoltativamente utilizzando le chiavi di crittografia gestite dal cliente (CMEK).
In Google Cloud, tutti i tuoi dati sono criptati at-rest.
Cloud Run è conforme alle iniziative a livello di Google Cloudper la protezione e la trasparenza dei dati, tra cui la trasparenza degli accessi e la residenza dei dati.
Sicurezza della rete
Cloud Run e tutti gli altri Google Cloud servizi crittografano tutto il traffico in transito. Puoi incorporare i controlli di uscita e di ingresso nei tuoi servizi o job Cloud Run per aggiungere un ulteriore livello di restrizione. Gli amministratori dell'organizzazione possono anche applicare l'uscita e l'entrata impostando norme dell'organizzazione.
Traffico in uscita
Il traffico in uscita 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 tuo progetto utilizzando l'uscita VPC diretta o un connettore di accesso VPC serverless. Il connettore è una risorsa di regione che si trova direttamente sulla rete VPC.
- La destinazione di destinazione non si trova nella rete VPC:il traffico viene instradato direttamente alla destinazione di destinazione all'interno della rete di Google o di internet pubblico.
Controllo del traffico in 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 il traffico in uscita VPC diretto o i connettori.
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 la modalità di instradamento del traffico.
- Attiva i log di flusso VPC per esaminare 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
A differenza del traffico in uscita, il traffico in entrata di Cloud Run si trova al livello 7 dell'applicazione (HTTP).
Cloud Run accetta il traffico in entrata proveniente dalle seguenti origini:
Internet pubblico: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 l'accesso privato Google, Private Service Connect o un bilanciatore del carico delle applicazioni interno. Il traffico di questo tipo rimane sempre all'interno della rete di Google.
ServiziGoogle Cloud :il traffico viene inviato direttamente a Cloud Run da altri servizi Google Cloud , come BigQuery o Cloud Run stesso. In alcuni casi, puoi anche configurare questi servizi per il routing tramite una rete VPC. Il traffico di questo tipo rimane sempre all'interno della rete di Google.
Il modello di sicurezza di rete di Cloud Run include le seguenti proprietà del traffico in entrata:
- Indirizza il traffico all'URL
run.app
predefinito:l'URLrun.app
richiede sempre HTTPS per l'ingresso del traffico in Cloud Run. L'infrastruttura di frontend serving di Google termina TLS e poi inoltra il traffico a Cloud Run e al tuo container tramite un canale criptato. Puoi disattivare l'URL predefinito. - Traffico verso un dominio personalizzato associato al bilanciatore del carico Google Cloud : Per il traffico HTTPS, i bilanciatori del carico interni ed esterni terminano TLS e inoltrano il traffico a Cloud Run e al tuo container tramite un canale criptato.I bilanciatori del carico Google Cloud ti consentono anche di applicare funzionalità di sicurezza aggiuntive come IAP, Cloud Armor e criteri SSL. Google Cloud
Per ulteriori informazioni sulla configurazione del traffico di rete VPC a Cloud Run, consulta Ricevere richieste dalle reti VPC.
Controllo del traffico in entrata
I controlli in entrata di Cloud Run gestiscono il traffico in entrata in Cloud Run per garantire che provenga solo da origini attendibili.
Per i servizi Cloud Run che gestiscono solo client interni, puoi configurare l'impostazione "internal" in modo che solo il traffico proveniente dalle seguenti origini interne possa accedere a Cloud Run:
- Reti VPC nel tuo progetto o nel perimetro dei controlli di servizio VPC, inclusi i servizi Cloud Run che instradano tutto il traffico attraverso la rete VPC.
- La rete VPC condivisa a cui è collegato il servizio Cloud Run.
- Alcuni servizi Google Cloud , come BigQuery, che si trovano nel progetto o nel perimetro Controlli di servizio VPC.
- Traffico dai client on-premise che attraversano la rete VPC per raggiungere Cloud Run.
Se utilizzi un bilanciatore del carico esterno o interno, puoi
disattivare l'URL run.app
predefinito.
Gli amministratori dell'organizzazione possono anche applicare l'ingresso impostando norme dell'organizzazione.
Per saperne di più sul controllo del traffico in entrata, consulta Limitazione del traffico in entrata per Cloud Run.
Controllo degli accessi
I controlli dell'accesso vengono utilizzati per limitare l'accesso ai servizi e ai job Cloud Run.
Chi può gestire il tuo servizio o lavoro
Per controllare chi gestisce il tuo servizio o job Cloud Run, Cloud Run utilizza IAM per autorizzare utenti e service account.
A cosa può accedere il tuo servizio o lavoro
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 le regole firewall VPC, come descritto in precedenza nella sezione Sicurezza di rete.
Se utilizzi l'uscita VPC diretta, puoi collegare i tag di rete alla risorsa Cloud Run e fare riferimento ai tag di rete nella regola firewall. Se utilizzi l'accesso VPC serverless, puoi applicare regole 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 service account dedicato in modo da poter concedere solo le autorizzazioni necessarie per il funzionamento del workload. 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 tuo servizio o eseguire il tuo job
Cloud Run offre diverse opzioni per controllare chi richiama il tuo servizio o esegue il tuo 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
Utilizza l'autorizzazione run.routes.invoke
per configurare chi può accedere al tuo servizio Cloud Run nei seguenti modi:
Concedi l'autorizzazione per selezionare service account 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.
Seleziona Consenti accesso pubblico per disattivare il controllo IAM Invoker di Cloud Run e consentire l'accesso non autenticato. Cloud Run esegue un controllo IAM su ogni richiesta quando il controllo IAM Invoker di Cloud Run è abilitato.
Per assicurarsi che solo i membri della tua organizzazione possano richiamare 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. Seleziona Consenti accesso pubblico quando la condivisione con limitazioni del dominio è attivata per creare URL pubblici.
Scopri di più sui casi d'uso comuni per l'autenticazione e su come Cloud Run utilizza controllo dell'accesso con IAM.
Abilita Identity-Aware Proxy per un servizio Cloud Run
Abilita IAP su Cloud Run per proteggere il traffico verso un servizio Cloud Run instradandolo a IAP per l'autenticazione. Puoi anche utilizzare la federazione delle identità per la forza lavoro con IAP su Cloud Run. Scopri come configurare Identity-Aware Proxy per Cloud Run.
Funzionalità di sicurezza del bilanciatore del carico per il tuo servizio
Se hai configurato un servizio Cloud Run come backend di un bilanciatore del caricoGoogle Cloud , proteggi questo percorso utilizzando i seguenti metodi:
- Blocca il traffico diretto da internet pubblico all'URL
run.app
impostando l'ingresso su una delle opzioni interne. - Disabilita l'URL
run.app
predefinito. - Facoltativamente, puoi abilitare le funzionalità di sicurezza sul bilanciatore del carico, come Cloud Armor, IAP e policy SSL. Google Cloud
IAM per il tuo lavoro
Utilizza l'autorizzazione run.jobs.run
per configurare chi può eseguire il job Cloud Run nei seguenti modi:
Concedi l'autorizzazione per selezionare service account o gruppi per consentire l'accesso al job. Se il job viene attivato da un altro servizio, ad esempio Cloud Scheduler, il account di servizio utilizzato deve disporre dell'autorizzazione
run.jobs.run
per il job.Concedi all'utente che ha eseguito l'accesso l'autorizzazione a eseguire un job dalla console Google Cloud. Se il job viene attivato da un altro servizio, ad esempio Cloud Scheduler, il account di servizio o il gruppo utilizzato deve disporre dell'autorizzazione
run.jobs.run
per il job.
Per garantire che solo i membri della tua 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 job Cloud Run specifici.
Controlli di servizio VPC
I tuoi servizi Cloud Run possono far parte di un perimetro Controlli di servizio VPC, in modo da poter utilizzare 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 fornitura
Immagini di base gestite da buildpack di Google Cloud
I servizi di cui viene eseguito il deployment dal codice sorgente utilizzando i buildpack di Google Cloud vengono creati utilizzando 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 in poche ore.
Sicurezza della catena di fornitura interna di Cloud Run
Poiché viene eseguito su Borg, Cloud Run implementa la stessa sicurezza della supply chain standard in tutti i servizi Google, come Gmail e YouTube. Scopri di più sulle pratiche della supply chain interna di Google nei white paper BeyondProd e Autorizzazione binaria per Borg.
Autorizzazione binaria
Cloud Run supporta l'Autorizzazione binaria integrata per garantire che su Cloud Run venga eseguito il deployment solo di immagini container attendibili. Scopri di più in Panoramica della configurazione di Cloud Run.
Insight sulla sicurezza della catena di fornitura del software
Gli amministratori cloud possono visualizzare le informazioni sulla sicurezza della supply chain dei container di cui è stato eseguito il deployment direttamente da un riquadro della console Google Cloud. Scopri di più in Visualizzare gli insight sulla sicurezza della catena di fornitura del software.
Sicurezza dell'ambiente di esecuzione
Cloud Run supporta gli aggiornamenti automatici delle immagini di base con container compatibili. Gli aggiornamenti della sicurezza vengono applicati al servizio senza tempi di inattività eseguendo un rebase sull'immagine di base del container.
I servizi di cui è stato eseguito il deployment dal codice sorgente, inclusi Cloud Run, utilizzano i buildpack di Google Cloud e sono compatibili con gli aggiornamenti automatici della sicurezza.
I servizi con aggiornamenti automatici della sicurezza abilitati vengono implementati utilizzando 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 in poche ore.
Per scoprire di più sugli aggiornamenti della sicurezza dell'ambiente di esecuzione, consulta la sezione su come configurare gli aggiornamenti della sicurezza.
Passaggi successivi
Per una procedura dettagliata end-to-end su come configurare il networking, consulta la guida al networking serverless di Cloud Run.