Panoramica sulla progettazione della sicurezza

Scopri come Cloud Run implementa le best practice per la sicurezza per proteggere ed esplorare come usare queste funzionalità per soddisfare i 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, che ospita alcuni dei più grandi siti al mondo, compresi Gmail e YouTube. Poiché i componenti di Cloud Run condividono la stessa infrastruttura, sono realizzati in base agli stessi standard di sicurezza degli altri servizi Google.

Per saperne di più sul nostro approccio alla sicurezza, consulta le White paper sulla panoramica della sicurezza di Google.

L'architettura di Cloud Run contiene molte infrastrutture diverse componenti. Il seguente diagramma mostra come questi componenti rispondono richieste al tuo servizio e 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 al tuo dominio personalizzato o direttamente all'URL run.app, la richiesta viene gestita i seguenti componenti:

  • Google Front End (GFE): il servizio di infrastruttura globale di Google che termina le connessioni TLS e applica le protezioni contro Attacchi DoS quando effettua una richiesta all'URL run.app. Cloud Run è un servizio di gestione in modo che, quando si accede a una richiesta tramite l'URL run.app, il GFE inoltra 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 Google Cloud bilanciatori del carico per l'esecuzione di funzioni aggiuntive, come la gestione del traffico e controllo dell'accesso.
  • proxy HTTP: componente di zona che bilancia il carico delle richieste HTTP in entrata le istanze delle tue applicazioni con sandbox.
  • Strumento di pianificazione:seleziona i server delle app su cui ospitare le istanze della tua sandbox diverse applicazioni.
  • App server: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. Impara nella sezione Sicurezza del calcolo di seguito.
  • Archiviazione: espone un'interfaccia file server per le immagini container importate dei 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 di Google che termina le connessioni TLS e applica le protezioni contro gli attacchi DoS.
  • Piano di controllo: convalida e scrive le configurazioni dell'applicazione in archiviazione.
  • Archiviazione configurazione: archivia le configurazioni delle applicazioni in Spanner e Bigtable per l'accesso da parte di altri componenti, come l'app server, scheduler e di rete.

Sicurezza dei 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 sul container gVisor piattaforma di sicurezza, questa opzione ha un piccolo codebase che superficie di attacco. Ogni modifica viene esaminata sulla sicurezza e la maggior parte delle modifiche viene scritta che utilizzano la memoria. Un ulteriore rafforzamento si ottiene utilizzando Modalità Secure Computing (seccomp) il filtro delle chiamate di sistema.

  • Seconda generazione: basata su microVM Linux, questa opzione offre più informazioni la compatibilità e le prestazioni per carichi di lavoro personalizzati. L'ulteriore protezione è ottenuti usando il filtro delle chiamate di sistema seccomp Sandbox2 degli spazi dei nomi Linux.

Entrambi questi ambienti di esecuzione utilizzano due livelli di sandbox costituiti un livello basato sull'hardware equivalente alle singole VM (virtualizzazione x86) livello di kernel software, come mostrato nel seguente diagramma:

Sia in esecuzione
      ambienti, il container utente è isolato da altri carichi di lavoro
      due livelli di sandbox.
Figura 2. Sia in esecuzione ambienti, il container utente è isolato dagli altri carichi di lavoro due livelli di sandbox.

Se il tuo servizio utilizza un'infrastruttura di terze parti per proteggere i container, l'ambiente di esecuzione di seconda generazione.

Crittografia e archiviazione dei dati

Le istanze Cloud Run sono stateless. La chiusura di un l'istanza ignora il proprio stato. Di conseguenza, tutte le nuove istanze vengono avviate da un ardesia.

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

Inoltre, Cloud Run si integra con molti altri Sistemi Google Cloud per la gestione e l'accesso ai dati nei seguenti modi:

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

Cloud Run rispetta le iniziative a livello di Google Cloud per Protezione e trasparenza dei dati, inclusa la trasparenza degli accessi e residente dei dati.

Sicurezza della rete

Cloud Run e tutti gli altri servizi Google Cloud criptare tutto il traffico in transito. Puoi incorporare i controlli in entrata e in uscita nel tuo Cloud Run o job per aggiungere un ulteriore livello di restrizione. Organizzazione gli amministratori possono anche imporre il traffico in entrata e in uscita impostando criteri dell'organizzazione.

Traffico in uscita

Il traffico in uscita che esce da Cloud Run viene trattato come Transport Layer 4 (TCP e UDP).

Per impostazione predefinita, il traffico in uscita segue uno dei seguenti percorsi all'uscita da Cloud Run:

  • La destinazione di destinazione si trova nella rete VPC: il traffico arriva a una la rete VPC o la rete VPC condiviso nel progetto utilizzando Traffico VPC diretto in uscita o Connettore Accesso VPC serverless. La è una risorsa di regione che si trova direttamente sul VPC in ogni rete.
  • La destinazione di destinazione non si trova nella rete VPC: route di traffico direttamente alla destinazione all'interno della rete Google o del pubblico internet.
. Diagramma dei componenti dell'infrastruttura Cloud Run
Figura 3. Il traffico in uscita può tramite proxy a una rete VPC tramite proxy. Può passano direttamente a un VPC rete (anteprima).

Controllo del traffico in uscita

Per un ulteriore controllo sul traffico in uscita, utilizza la classe Impostazione del traffico in uscita VPC verso instradare tutto il traffico alla rete VPC utilizzando VPC diretto in uscita o connettori.

Una volta che è sulla rete VPC, puoi usare VPC strumenti per la gestione del traffico, ad esempio:

Gli amministratori dell'organizzazione possono anche imporre il traffico in uscita impostando Impostazioni di traffico VPC in uscita consentite (Cloud Run) dell'elenco.

Traffico in entrata (in entrata)

A differenza del traffico in uscita, il traffico in entrata di Cloud Run è al livello dell'applicazione 7 (HTTP).

Cloud Run accetta il traffico in entrata in entrata dai seguenti fonti:

  • Internet pubblica: le richieste vengono indirizzate direttamente da fonti pubbliche al tuo ai servizi Cloud Run con la possibilità di instradare il traffico attraverso un bilanciatore del carico HTTP(S) esterno.

  • Rete VPC: puoi instradare il traffico da un VPC la rete ai servizi Cloud Run mediante l'accesso privato Google, Private Service Connect oppure Application Load Balancer interno. Il traffico di questo tipo rimane sempre all'interno della rete Google.

  • Servizi Google Cloud: il traffico viaggia direttamente verso Cloud Run. da altri servizi Google Cloud, come BigQuery o anche e Cloud Run. In alcuni casi, puoi anche configurare questi da indirizzare attraverso una rete VPC. Traffico di questo tipo rimane sempre all'interno della rete Google.

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

Il modello di sicurezza di rete di Cloud Run include il seguente traffico in entrata proprietà del traffico:

  • Indirizza il traffico all'URL run.app: l'URL run.app richiede sempre HTTPS per il traffico verso Cloud Run. Gestione frontend di Google che termina TLS e inoltra il traffico a Cloud Run. e al tuo contenitore tramite un canale criptato.
  • Traffico verso un dominio personalizzato associato al bilanciatore del carico Google Cloud: Per il traffico HTTPS, bilanciatori del carico interni ed esterni di Google Cloud termina TLS e inoltra il traffico a Cloud Run e al container attraverso un canale criptato. I bilanciatori del carico Google Cloud consentono inoltre e 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 Richieste di ricezione da reti VPC.

Controllo del traffico in entrata

Controlli in entrata di Cloud Run gestire il traffico che entra in Cloud Run per garantire che il traffico arrivi provenienti solo da fonti attendibili.

Per i servizi Cloud Run che servono solo client interni, puoi configurare l'interfaccia "interno" in modo che solo il traffico proveniente dai seguenti le origini interne possono inserire Cloud Run:

  • Reti VPC nel tuo progetto o Controlli di servizio VPC perimetrale, inclusi i servizi Cloud Run che instradano il proprio traffico attraverso la rete VPC.
  • La rete VPC condivisa a cui è connesso il servizio Cloud Run a cui è collegato.
  • Alcuni servizi Google Cloud, come BigQuery, che sono nel progetto o nel perimetro dei Controlli di servizio VPC.
  • Traffico proveniente da 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 criteri dell'organizzazione.

Per ulteriori informazioni 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 chi può accedere ai servizi e ai job di 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 l'autorizzazione di utenti e account di servizio.

A quali dati può accedere il tuo servizio o job

Per controllare ciò che possono raggiungere i carichi di lavoro Cloud Run tramite puoi forzare tutto il traffico attraverso la rete VPC per applicare le regole firewall VPC, come descritto in precedenza Sicurezza di rete.

Se utilizzi il traffico VPC diretto in uscita, puoi collegare i tag di rete Risorsa Cloud Run e fare riferimento ai tag di rete nel firewall personalizzata. Se utilizzi l'accesso VPC serverless, puoi applicare le regole del caso alle istanze del connettore.

Usa IAM per controllare quali risorse in Cloud Run a cui possono accedere un servizio o un job. 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 servizio dedicato in modo da poter concedere solo le autorizzazioni necessarie per il carico di lavoro 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, vedi 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 richiama il tuo servizio o esegue il tuo job.

Controlli Ingress

Per gestire il traffico in entrata dei servizi Cloud Run sul networking consulta Controllo del traffico in entrata nella sezione precedente.

I job Cloud Run non gestiscono le richieste e quindi non utilizzano controlli in entrata durante l'esecuzione dei job.

IAM per il tuo servizio

Cloud Run esegue un controllo IAM su ogni richiesta.

Utilizza la run.routes.invoke per configurare chi può accedere a Cloud Run nei seguenti modi:

  • Concedi l'autorizzazione a selezionare account di servizio o gruppi a cui consentire l'accesso il servizio. Tutte le richieste devono avere un'intestazione di autorizzazione HTTP contenente un Token ID OpenID Connect firmato da Google per uno dei servizi autorizzati .

  • Concedi a tutti gli utenti l'autorizzazione per consentono l'accesso non autenticato.

Assicurati che solo i membri della tua organizzazione possano richiamare un'istanza Cloud Run servizio, un amministratore dell'organizzazione può impostare Condivisione limitata per il dominio criterio dell'organizzazione. Gli amministratori dell'organizzazione possono anche disattivare dai servizi Cloud Run. Scopri come creare servizi Cloud Run pubblici quando è applicata la condivisione limitata per i domini.

Scopri di più sui casi d'uso comuni per l'autenticazione e come Cloud Run utilizza il 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 di un al bilanciatore del carico Google Cloud, proteggi questo percorso usando quanto segue metodo:

IAM per il tuo job

Utilizza l'autorizzazione run.jobs.run per configura chi può eseguire il tuo job Cloud Run modi:

  • Concedi l'autorizzazione a selezionare account di servizio o gruppi a cui consentire l'accesso il job. Se il job viene attivato da un altro servizio, ad esempio Cloud Scheduler, l'account di servizio utilizzato deve avere l'autorizzazione run.jobs.run su il job.

  • Concedi all'utente che ha eseguito l'accesso l'autorizzazione per eseguire un job da Google Cloud Google Cloud. Se il job viene attivato da un altro servizio, ad esempio Cloud Scheduler, l'account di servizio o il gruppo utilizzato deve avere l'autorizzazione run.jobs.run sul lavoro.

per assicurarti che solo i membri della tua organizzazione possano eseguire un Cloud Run job, un amministratore dell'organizzazione può impostare Condivisione limitata per il dominio di blocco. Gli amministratori dell'organizzazione possono anche disattivare dei job Cloud Run.

Controlli di servizio VPC

I servizi Cloud Run possono far parte di un Controlli di servizio VPC in modo da poter sfruttare i Controlli di servizio VPC per limitare l'accesso il rischio di esfiltrazione dei dati. Scopri di più sull'utilizzo dei Controlli di servizio VPC.

Sicurezza della catena di fornitura

Immagini di base gestite da buildpack di Google Cloud

Servizi di cui viene eseguito il deployment dal codice sorgente utilizzando i buildpack di Google Cloud sono basate Immagini di base fornite da Google. Google conserva queste immagini di base e fornisce di routine su base settimanale. In situazioni di emergenza che coinvolgono vulnerabilità critiche di sicurezza, 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 tutte le stesse sicurezza della catena di fornitura, standard in tutti i servizi Google, come Gmail e YouTube. Scopri di più sulle pratiche della catena di fornitura interna di Google nel BeyondProd e Autorizzazione binaria per Borg i nostri prodotti.

Autorizzazione binaria

Cloud Run supporta integrato Autorizzazione binaria per garantire che solo il container attendibile in Cloud Run. Ulteriori informazioni all'indirizzo Panoramica della configurazione per Cloud Run.

Software Delivery Shield

Con Software Delivery Shield, Gli amministratori cloud possono visualizzare le informazioni di sicurezza relative alla catena di fornitura del dei container di cui è stato eseguito il deployment direttamente da un panel in Google Cloud Google Cloud. Ulteriori informazioni all'indirizzo Visualizza i dettagli di Software Delivery Shield.

Passaggi successivi

Per una procedura dettagliata end-to-end su come configurare il networking, consulta la documentazione di Cloud Run Guida al networking serverless.