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 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 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. - Bilanciatore del caricoGoogle Cloud : 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 Google Cloudper eseguire funzioni aggiuntive, come la gestione del traffico e controllo dell'accesso.
- Proxy HTTP: un componente di zona che bilancia il carico delle richieste HTTP in entrata verso le istanze delle tue applicazioni in sandbox.
- Scheduler: seleziona i server delle applicazioni per ospitare le istanze delle tue applicazioni in modalità sandbox.
- Server app: un nodo di computing a livello di zona 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 Container Registry supportati.
- Server dei metadati: fornisce credenziali e metadati specifici della sandbox.
- Networking in uscita: gestisce il traffico in uscita avviato dalla sandbox.
Chiamate 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 server delle app, scheduler ed elementi di networking.
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 istanza esegue un singolo container. Quando esegui il deployment di più immagini container (sidecar), ogni istanza contiene l'insieme di container.
Ogni istanza Cloud Run è protetta (sandbox) da tutte le altre da un confine applicato da un monitor di macchine virtuali (VMM). Sebbene forniamo un certo livello di applicazione dei limiti dei container, non è così forte come il limite dell'istanza attorno al container o ai container.
Ambienti di esecuzione
I componenti di Cloud Run vengono eseguiti su Borg, il sistema di gestione dei container di Google. Cloud Run offre due ambienti di esecuzione:
Prima generazione: basata sulla piattaforma di sicurezza dei container gVisor, questa opzione ha un codebase ridotto, che offre una superficie di attacco più piccola. Ogni modifica viene sottoposta a una 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 Secure Computing Mode (seccomp).
Seconda generazione: basata su microVM Linux, questa opzione offre maggiore compatibilità e prestazioni per i workload personalizzati. Un ulteriore rafforzamento si ottiene 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 supportato dall'hardware equivalente a singole VM (virtualizzazione x86) e un livello 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. 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.
- Integrazione con Secret Manager per l'archiviazione sicura di dati sensibili come chiavi API e password.
Inoltre, Cloud Run si integra con molti altri sistemiGoogle 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 da Container Registry supportati e possono essere criptate facoltativamente utilizzando chiavi di crittografia gestite dal cliente (CMEK).
In Google Cloud, tutti i tuoi dati sono crittografati at-rest.
Cloud Run è conforme alle iniziative di Google Cloudper la protezione dei dati e la trasparenza, tra cui Access Transparency e la residenza dei dati.
Sicurezza di rete
Cloud Run e tutti gli altri servizi Google Cloud criptano tutto il traffico in transito. Puoi incorporare controlli sia in uscita che in entrata nei tuoi servizi o 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 target si trova nella rete VPC: il traffico viaggia verso una rete VPC o 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 target non si trova nella rete VPC: il traffico viene instradato direttamente alla destinazione target all'interno della rete di Google o della rete internet pubblica.
Controllo del traffico in uscita
Per un maggiore controllo sul traffico in uscita, utilizza l'impostazione del traffico VPC in uscita per instradare tutto il traffico alla rete VPC utilizzando il traffico VPC diretto in uscita o i connettori.
Una volta sulla rete VPC, puoi utilizzare gli strumenti VPC per gestire il traffico, ad esempio:
- Applica le regole firewall al traffico del servizio o modifica il modo in cui il traffico viene instradato.
- Abilita 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 di applicazione 7 (HTTP).
Cloud Run accetta il traffico in entrata dalle seguenti origini:
Internet pubblico: le richieste vengono indirizzate direttamente da origini pubbliche ai tuoi servizi Cloud Run con l'opzione 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 viaggia direttamente verso Cloud Run da altri servizi Google Cloud , come BigQuery o anche Cloud Run stesso. In alcuni casi, puoi anche configurare questi servizi in modo che il traffico venga instradato attraverso 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'accesso del traffico a Cloud Run. L'infrastruttura di gestione del frontend 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 tuo bilanciatore del carico Google Cloud : per il traffico HTTPS, i bilanciatori del carico interni ed esterni Google Cloud terminano TLS e inoltrano il traffico a Cloud Run e al tuo container tramite un canale criptato. Google Cloud I bilanciatori del carico consentono inoltre 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 Ricevi 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 garantire che provenga solo da origini attendibili.
Per i servizi Cloud Run che gestiscono solo client interni, puoi configurare l'impostazione "interno" 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 tuo progetto o nel perimetro dei Controlli di servizio VPC.
- Traffico proveniente da client on-premise che attraversa 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 Limitazione del traffico in entrata per Cloud Run.
Controllo degli accessi
I controlli di 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.
Contenuti a cui il tuo servizio o job può accedere
Per controllare ciò che i workload di 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 il traffico VPC diretto in uscita, 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 il service account predefinito di Compute Engine. Per i workload sensibili, utilizza un service account dedicato in modo da concedere solo le autorizzazioni necessarie per l'esecuzione 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 Proteggi i servizi Cloud Run con il motore per suggerimenti.
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 in entrata
Per gestire il traffico in entrata dei servizi Cloud Run a livello di rete, consulta Controllo del traffico in entrata nella sezione precedente.
I job Cloud Run non gestiscono le richieste e pertanto non utilizzano i controlli in entrata 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 a service account o gruppi selezionati 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 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 è abilitato il controllo IAM Invoker di Cloud Run.
Per garantire che solo i membri della tua organizzazione possano richiamare un servizio Cloud Run, un amministratore dell'organizzazione può impostare la policy dell'organizzazione Condivisione limitata dei domini. Gli amministratori dell'organizzazione possono anche disattivare servizi Cloud Run specifici. Seleziona Consenti accesso pubblico quando la condivisione limitata per dominio è 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.
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 dalla rete internet pubblica all'URL
run.appimpostando il traffico in entrata su una delle opzioni interne. - Disattiva l'URL
run.apppredefinito. - Facoltativamente, puoi attivare le funzionalità di sicurezza sul bilanciatore del carico Google Cloud , come Cloud Armor, IAP e le policy SSL.
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 a 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.runsul job.Concedi l'autorizzazione all'utente che ha eseguito l'accesso per 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.runsul 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 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 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 nel giro di 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 relative alla catena di fornitura interna di Google nei white paper BeyondProd e Autorizzazione binaria per Borg.
Autorizzazione binaria
Cloud Run ha il supporto integrato per Autorizzazione binaria per garantire che in Cloud Run venga eseguito il deployment solo di immagini container attendibili. Scopri di più nella panoramica della configurazione per Cloud Run.
Insight sulla sicurezza della catena di fornitura del software
Gli amministratori cloud possono visualizzare le informazioni sulla sicurezza della catena di fornitura dei container di cui è stato eseguito il deployment direttamente da un riquadro della console Google Cloud. Scopri di più in Visualizza 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 senza tempi di inattività del servizio eseguendo un rebase sull'immagine di base del container.
I servizi di cui viene eseguito il deployment dall'origine, tra cui Cloud Run, utilizzano i buildpack di Google Cloud e sono compatibili con gli aggiornamenti della sicurezza automatici.
Il deployment dei servizi con aggiornamenti automatici della sicurezza abilitati viene eseguito 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 nel giro di poche ore.
Per scoprire di più sugli aggiornamenti della sicurezza dell'ambiente di esecuzione, consulta 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.
- Scopri come rilevare le minacce utilizzando Cloud Run Threat Detection.