Panoramica sulla progettazione della sicurezza

Scopri come Cloud Run implementa le best practice di sicurezza per proteggere i tuoi dati e come usare queste funzionalità per soddisfare i tuoi requisiti di sicurezza.

Architettura

Cloud Run viene eseguito su Borg nello stesso ambiente in cui Google esegue il deployment di miliardi di container alla settimana, ospitando alcuni dei più grandi siti al mondo, tra cui Gmail e YouTube. Poiché i componenti di Cloud Run condividono la stessa infrastruttura, sono basati sugli stessi standard di sicurezza degli altri servizi Google.

Per saperne di più sul nostro approccio alla sicurezza, leggi il white paper Panoramica sulla sicurezza di Google.

L'architettura di Cloud Run contiene molti componenti di infrastruttura diversi. Il seguente diagramma mostra in che modo questi componenti rispondono alle richieste al servizio e alle chiamate API Cloud Run Admin:

Diagramma dei componenti dell'infrastruttura Cloud Run
Figura 1. Diagramma dei componenti dell'infrastruttura Cloud Run.

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 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 invii una richiesta all'URL run.app. Cloud Run è un servizio a livello di regione, per cui quando si accede a una richiesta tramite l'URL run.app, GFE inoltra la richiesta a Cloud Run nella regione appropriata.
  • Bilanciatore del carico Google Cloud: quando configuri Cloud Load Balancing per la gestione del tuo dominio personalizzato, include 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 di zona che bilancia il carico delle richieste HTTP in entrata nelle istanze delle applicazioni con sandbox.
  • Scheduler:seleziona i server delle app per ospitare le istanze delle tue applicazioni con 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 seguente sezione Sicurezza del computing.
  • Archiviazione: espone un'interfaccia del file server per le immagini container importate dai registri di container supportati.
  • Server 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 Google che termina le connessioni TLS e applica protezioni contro gli attacchi DoS.
  • Piano di controllo:convalida e scrive le configurazioni dell'applicazione nello spazio di archiviazione.
  • Config Storage: archivia le configurazioni delle applicazioni in Spanner e Bigtable per l'accesso da parte di altri componenti, come server di app, scheduler ed elementi di networking.

Sicurezza del computing

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 ridotto, che offre una superficie di attacco più ridotta. Ogni modifica viene sottoposta a un controllo di sicurezza e la maggior parte delle modifiche viene scritta in modo sicuro in memoria. È possibile rafforzare ulteriormente il livello di protezione utilizzando il filtro delle chiamate di sistema modalità Secure Computing (seccomp).

  • Seconda generazione: basata sulle microVM Linux, questa opzione offre maggiori compatibilità e prestazioni per carichi di lavoro personalizzati. È possibile rafforzare ulteriormente la protezione 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, composti da un livello supportato dall'hardware equivalente alle singole VM (virtualizzazione x86) e da un livello kernel del software, come mostrato nel seguente diagramma:

In entrambi gli ambienti di esecuzione, il container utente viene isolato dagli altri carichi di lavoro attraverso due livelli di sandboxing.
Figura 2. In entrambi gli ambienti di esecuzione, il container utente viene isolato dagli altri carichi di lavoro attraverso due livelli di sandboxing.

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 di Cloud Run sono stateless. La chiusura di un'istanza ne elimina lo stato. Di conseguenza, tutte le nuove istanze vengono avviate da uno slate chiaro.

Se disponi di dati stateful, puoi gestirli nei seguenti modi:

Inoltre, Cloud Run si integra con molti altri sistemi Google Cloud per gestire e accedere ai tuoi dati nei seguenti modi:

In Google Cloud, tutti i dati sono criptati at-rest.

Cloud Run è conforme alle iniziative su scala Google Cloud per la protezione e la trasparenza dei dati, tra cui trasparenza degli accessi e 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 uscita e in entrata nei tuoi servizi o job Cloud Run per aggiungere un ulteriore livello di limitazione. Gli amministratori dell'organizzazione possono anche applicare il traffico in uscita e in entrata impostando i criteri dell'organizzazione.

Traffico in uscita (in uscita)

Il traffico in uscita da Cloud Run è considerato come il livello di trasporto 4 (TCP e UDP).

Per impostazione predefinita, il traffico in uscita prende uno dei seguenti percorsi quando esce da Cloud Run:

  • La destinazione di destinazione è in rete VPC: il traffico passa a una rete VPC o a una rete VPC condiviso nel tuo progetto utilizzando il traffico VPC diretto in uscita 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 indirizza direttamente alla destinazione all'interno della rete Google o della rete internet pubblica.
Diagramma dei componenti dell'infrastruttura Cloud Run
Figura 3. Il traffico in uscita può essere inviato tramite proxy a una rete VPC attraverso un connettore. Può anche viaggiare direttamente verso un VPC o una rete non VPC (anteprima).

Controllo del traffico in uscita

Per un ulteriore controllo sul traffico in uscita, utilizza l'impostazione In uscita VPC per instradare tutto il traffico alla rete VPC utilizzando connettori o connettori VPC diretti in uscita.

Una volta nella rete VPC, puoi utilizzare gli strumenti VPC per gestire il traffico, ad esempio:

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 (in entrata)

A differenza del traffico in entrata di Cloud Run, 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 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 l'accesso privato Google, Private Service Connect o un Application Load Balancer interno. Il traffico di questo tipo rimane sempre all'interno della rete Google.

  • Servizi Google Cloud: il traffico passa direttamente a Cloud Run da altri servizi Google Cloud, come BigQuery o Cloud Run stesso. In alcuni casi, puoi anche configurare questi servizi per l'instradamento tramite una rete VPC. Il traffico di questo tipo rimane sempre all'interno della rete Google.

Diagramma dei componenti dell'infrastruttura Cloud Run
Figura 4. Traffico (in entrata) di rete HTTP di livello 7 verso Cloud Run.

Il modello di sicurezza di rete di Cloud Run include le seguenti proprietà del traffico in entrata:

  • Traffico diretto all'URL run.app: l'URL run.app richiede sempre HTTPS affinché il traffico entri in Cloud Run. L'infrastruttura di servizio di frontend di Google termina il protocollo TLS, quindi inoltra il traffico a Cloud Run e al tuo container attraverso 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 container tramite un canale criptato. I bilanciatori del carico Google Cloud consentono inoltre di applicare funzionalità di sicurezza aggiuntive come IAP, Google Cloud Armor e criteri 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 in entrata di Cloud Run gestiscono il traffico che entra in Cloud Run per garantire che il traffico 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 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 è associato il servizio Cloud Run.
  • Alcuni servizi Google Cloud, come BigQuery, che si trovano nel progetto o nel perimetro dei Controlli di servizio VPC.
  • Traffico dai client on-premise che attraversano la tua rete VPC per raggiungere Cloud Run.

Gli amministratori dell'organizzazione possono anche applicare il traffico in entrata impostando i criteri dell'organizzazione.

Per ulteriori informazioni sul controllo del traffico in entrata, consulta Limitazione del traffico in entrata per Cloud Run.

Controllo dell'accesso

I controlli dell'accesso vengono utilizzati per limitare chi può accedere 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 account di servizio.

A cosa può accedere il tuo servizio o job

Per controllare gli elementi 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 della rete.

Se utilizzi il traffico in uscita da un 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 può accedere il servizio o il job Cloud Run. I servizi e i job utilizzano l'account di servizio predefinito di Compute Engine per impostazione predefinita. Per i carichi di lavoro sensibili, utilizza un account di servizio dedicato in modo da poter concedere solo le autorizzazioni necessarie per il suo 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 il motore per suggerimenti.

Chi può richiamare il tuo servizio o eseguire il tuo job

Cloud Run offre varie opzioni per controllare chi chiama il servizio o esegue il job.

Controlli Ingress

Per gestire il traffico in entrata dei servizi Cloud Run a livello di networking, 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

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 garantire 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 specifici servizi Cloud Run. Scopri come creare servizi Cloud Run pubblici quando viene applicata 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 tuo servizio

Se hai configurato un servizio Cloud Run come backend per un bilanciatore del carico Google Cloud, proteggi questo percorso utilizzando i seguenti metodi:

IAM per il tuo job

Utilizza l'autorizzazione run.jobs.run per configurare chi può eseguire il 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, come Cloud Scheduler, l'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, come Cloud Scheduler, l'account o il gruppo di servizio utilizzato deve disporre dell'autorizzazione run.jobs.run nel job.

Per garantire che solo i membri della tua organizzazione possano eseguire un job Cloud Run, un amministratore dell'organizzazione può impostare il vincolo di condivisione limitata per i domini. Gli amministratori dell'organizzazione possono anche disattivare specifici job Cloud Run.

Controlli di servizio VPC

I servizi Cloud Run possono far parte di un perimetro dei Controlli di servizio VPC, in modo da poter sfruttare i Controlli di servizio VPC per limitare l'accesso e ridurre 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 da 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 con vulnerabilità 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 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 white paper su BeyondProd e Autorizzazione binaria per Borg.

Autorizzazione binaria

Cloud Run dispone del supporto integrato per l'Autorizzazione binaria, in modo da garantire che venga eseguito il deployment in Cloud Run solo delle immagini container attendibili. Per saperne di più, consulta la pagina Panoramica della configurazione per Cloud Run.

Software Delivery Shield

Con Software Delivery Shield, gli amministratori di Cloud possono visualizzare informazioni sulla sicurezza della catena di fornitura dei container di cui è stato eseguito il deployment direttamente da un riquadro nella console Google Cloud. Per maggiori informazioni, consulta Visualizzare i dettagli di Software Delivery Shield.

Passaggi successivi

Per una procedura dettagliata end-to-end della configurazione del networking, consulta la Guida al networking serverless di Cloud Run.