Panoramica sulla progettazione della sicurezza

Scopri in che modo Cloud Run implementa le best practice di sicurezza per proteggere i tuoi dati ed esplora come utilizzare 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 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:

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

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'URL run.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:

In entrambi gli ambienti di esecuzione, il container utente è isolato dagli altri workload tramite due livelli di sandboxing.
Figura 2. In entrambi gli ambienti di esecuzione, il container utente è isolato dagli altri workload tramite 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.

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:

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

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.
Percorso di networking di Cloud Run verso reti VPC e non VPC
Figura 3. Il traffico in uscita può viaggiare verso una rete VPC o non VPC utilizzando il traffico VPC diretto in uscita o un connettore.

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:

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.

Diagramma dei componenti dell'infrastruttura di Cloud Run
Figura 4. Traffico di rete HTTP in entrata 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 predefinito:l'URL run.app richiede 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:

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.run sul 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.run sul 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