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 del mondo, tra cui Gmail e YouTube. Poiché i componenti di Cloud Run condividono la stessa infrastruttura, sono creati 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 di 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 all'URL run.app, la richiesta viene gestita da
i 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 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 Google Cloud i bilanciatori del carico per eseguire funzioni aggiuntive, come la gestione del traffico e il controllo dell'accesso.
- Proxy HTTP: un componente zonale che bilancia il carico delle richieste HTTP in entrata alle istanze delle applicazioni in sandbox.
- Scheduler: seleziona i server delle app per ospitare le istanze delle applicazioni in sandbox.
- Server delle app: un nodo di calcolo zonale e multi-tenant che crea e gestisce le sandbox che eseguono le istanze del container di ogni applicazione.
- Sandbox: isola il codice utente dal sistema e da altri clienti. Scopri di più nella sezione Sicurezza di Compute di seguito.
- Archiviazione: espone un'interfaccia del file server per le immagini container importate da registri 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 nell'archiviazione.
- Archiviazione della configurazione: archivia le configurazioni dell'applicazione in Spanner e Bigtable per l'accesso da parte di altri componenti, come server delle app, scheduler ed elementi di rete.
Sicurezza di Compute
Un'istanza è definita come l'unità in cui vengono eseguiti i container configurati. Quando esegui il deployment di una singola immagine container, ogni container viene avviato nella propria istanza. Quando esegui il deployment di più immagini container (sidecar), ogni istanza contiene una di ciascuno di questi container.
Ogni istanza Cloud Run è protetta (in sandbox) da tutte le altre da un limite applicato da un monitor della macchina virtuale (VMM). Sebbene forniamo un certo grado di applicazione dei limiti dei container, non è così forte come il limite dell'istanza intorno ai container.
Ambienti di esecuzione
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 una codebase ridotta, che fornisce una superficie di attacco più piccola. Ogni modifica viene sottoposta a revisione della sicurezza e la maggior parte delle modifiche viene scritta in modo sicuro per la memoria. Un ulteriore rafforzamento si ottiene 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 Sandbox2 Sandbox2.
Entrambi questi ambienti di esecuzione utilizzano due livelli di sandbox costituiti da un livello con supporto 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.
Cloud Run Threat Detection
Per monitorare continuamente lo stato delle risorse Cloud Run per rilevare attacchi di runtime comuni, come file binari sospetti o codice dannoso, utilizza Cloud Run Threat Detection.
Crittografia e archiviazione dei dati
Le istanze Cloud Run sono stateless. La terminazione di un'istanza ne elimina lo stato. Di conseguenza, tutte le nuove istanze vengono avviate da zero.
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 l'archiviazione sicura di dati sensibili come chiavi API e password.
Inoltre, Cloud Run si integra con molti altri Google Cloud sistemi 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 container supportati e possono essere criptate facoltativamente utilizzando le chiavi di crittografia gestite dal cliente (CMEK).
Tutti i tuoi dati vengono criptati a riposo. Google Cloud
Cloud Run è conforme alle iniziative a livello di Google per la protezione dei dati e la trasparenza, tra cui Access Transparency e la residenza dei dati. Google Cloud
Sicurezza della rete
Cloud Run e tutti gli altri Google Cloud servizi criptano tutto il traffico in transito. Puoi incorporare i controlli del traffico in uscita e in entrata nei servizi o nei job Cloud Run per aggiungere un ulteriore livello di restrizione. Gli amministratori dell'organizzazione possono anche applicare il traffico in uscita e in entrata impostando le policy 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 passa a una rete VPC o a una rete VPC condiviso nel tuo progetto utilizzando il traffico in uscita VPC diretto 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 controllo aggiuntivo sul traffico in uscita, utilizza l' impostazione del traffico in uscita VPC per instradare tutto il traffico alla rete VPC utilizzando il traffico in uscita VPC diretto o i connettori.
Una volta sulla 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 routing del traffico.
- Abilita i log di flusso VPC per ispezionare il traffico.
Gli amministratori dell'organizzazione possono anche applicare il traffico in uscita impostando il vincolo di 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 dell'applicazione 7 (HTTP).
Cloud Run accetta il traffico in entrata in entrata dalle seguenti origini:
Internet pubblico: le richieste vengono instradate direttamente dalle origini pubbliche ai 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.
Google Cloud Servizi: il traffico passa direttamente a Cloud Run da altri Google Cloud servizi, come BigQuery o persino 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:
- Traffico diretto all'URL
run.apppredefinito: l'URLrun.apprichiede sempre HTTPS per l'ingresso del traffico in Cloud Run. L'infrastruttura di gestione del frontend di Google termina TLS e poi inoltra il traffico a Cloud Run e al container tramite un canale criptato. Puoi disattivare l'URL predefinito. - Traffico verso un dominio personalizzato associato al Google Cloud bilanciatore del carico: per il traffico HTTPS, Google Cloud i bilanciatori del carico interni ed esterni terminano TLS e inoltrano il traffico a Cloud Run e al container tramite un canale criptato. Google Cloud I bilanciatori del carico consentono anche di applicare funzionalità di sicurezza aggiuntive come IAP, Cloud Armor e policy SSL.
Per saperne di più sulla configurazione del traffico di rete VPC verso Cloud Run, consulta Ricevere richieste dalle reti VPC.
Controllo del traffico in entrata
I controlli del traffico in entrata di Cloud Run gestiscono il traffico che entra 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 "interna" in modo che solo il traffico proveniente dalle seguenti origini interne possa entrare in Cloud Run:
- Reti VPC nel progetto o nel perimetro dei Controlli di servizio VPC, inclusi i servizi Cloud Run che instradano tutto il traffico tramite la rete VPC.
- La rete VPC condivisa a cui è collegato il servizio Cloud Run.
- Alcuni Google Cloud servizi, come BigQuery, che si trovano nel tuo progetto o nel perimetro dei Controlli di servizio VPC.
- Traffico proveniente da 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 il traffico in entrata impostando le policy dell'organizzazione.
Per saperne di più sul controllo del traffico in entrata, consulta Limitare il traffico in entrata per Cloud Run.
Controllo degli accessi
I controlli degli accessi 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 tuo servizio o job Cloud Run, Cloud Run utilizza IAM per autorizzare utenti e service account.
A cosa può accedere il tuo servizio o job
Per controllare a cosa possono accedere i carichi di lavoro Cloud Run 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 della rete.
Se utilizzi il traffico in uscita VPC diretto, 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 le risorse a cui il tuo servizio o job Cloud Run può accedere. Per impostazione predefinita, i servizi e i job utilizzano il service account predefinito di Compute Engine. Per i carichi di lavoro sensibili, utilizza un service account dedicato in modo da poter concedere solo le autorizzazioni necessarie al carico di lavoro per svolgere il proprio lavoro. 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 del traffico in entrata
Per la gestione del traffico in entrata dei servizi Cloud Run a livello di rete, consulta la sezione Controllo del traffico in entrata nella sezione precedente.
I job Cloud Run non gestiscono le richieste e pertanto non utilizzano i controlli del traffico in entrata durante l'esecuzione dei job.
IAM per il tuo servizio
Utilizza l'run.routes.invoke
autorizzazione 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 HTTP Authorization contenente un token ID OpenID Connect firmato da Google per uno dei service account autorizzati.
Seleziona Consenti accesso pubblico per disattivare il controllo IAM di Cloud Run Invoker e consentire l'accesso non autenticato. Cloud Run esegue un controllo IAM su ogni richiesta quando il controllo IAM di Cloud Run Invoker è abilitato.
Per assicurarsi che solo i membri della tua organizzazione possano richiamare un servizio Cloud Run service, un amministratore dell'organizzazione può impostare la Condivisione limitata dei domini policy dell'organizzazione. Gli amministratori dell'organizzazione possono anche disattivare servizi Cloud Run specifici. Seleziona Consenti accesso pubblico quando la condivisione limitata dei domini è abilitata 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.
Abilitare 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 Google Cloud bilanciatore del carico, proteggi questo percorso utilizzando i seguenti metodi:
- Blocca il traffico diretto da internet pubblico all'
run.appURL impostando il traffico in entrata su una delle opzioni interne. - Disattiva l'URL
run.apppredefinito. - Facoltativamente, puoi abilitare le funzionalità di sicurezza sul Google Cloud bilanciatore del carico, come Cloud Armor, IAP e policy SSL.
IAM per il tuo job
Utilizza l'autorizzazione run.jobs.run per
configurare chi può eseguire il tuo 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, come Cloud Scheduler, il account di servizio utilizzato deve disporre dell'autorizzazione
run.jobs.runper il job.Concedi all'utente che ha eseguito l'accesso l'autorizzazione per eseguire un job dalla Google Cloud console. Se il job viene attivato da un altro servizio, come Cloud Scheduler, il account di servizio o il gruppo utilizzato deve disporre dell'autorizzazione
run.jobs.runper il job.
Per assicurarsi che solo i membri della tua organizzazione possano eseguire un job Cloud Run, un amministratore dell'organizzazione può impostare il vincolo Condivisione limitata dei 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 dei Controlli di servizio VPC in modo da poter 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 fornitura
Immagini di base gestite dai buildpack di Google Cloud
I servizi di cui è stato 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 entro poche ore.
Sicurezza della catena di fornitura interna di Cloud Run
Poiché viene eseguito su Borg, Cloud Run implementa la stessa sicurezza della catena di fornitura standard per tutti i servizi Google, come Gmail e YouTube. Scopri di più sulle pratiche della catena di fornitura interna di Google nei BeyondProd e Autorizzazione binaria per Borg.
Autorizzazione binaria
Cloud Run ha il supporto integrato per l'autorizzazione binaria per garantire che solo le immagini container attendibili vengano sottoposte a deployment su Cloud Run. Scopri di più in Panoramica della configurazione per Cloud Run.
Insight sulla sicurezza della catena di fornitura del software
Gli amministratori cloud possono visualizzare le informazioni sulla sicurezza relative alla catena di fornitura dei container di cui è stato eseguito il deployment direttamente da un riquadro nella Google Cloud console. 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 i container compatibili. Gli aggiornamenti della sicurezza vengono applicati senza tempi di inattività sul servizio eseguendo un rebase sull'immagine di base del container.
I servizi di cui è stato eseguito il deployment dall'origine, che includono 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 sottoposti a deployment 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 entro 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 la rete, consulta la Guida alla rete serverless di Cloud Run .
- Scopri come rilevare le minacce utilizzando Cloud Run Threat Detection.