Best practice per la sicurezza di Cloud Service Mesh

Questo documento descrive le best practice per stabilire e gestire una configurazione sicura di Cloud Service Mesh in esecuzione su Google Kubernetes Engine (GKE). Le indicazioni contenute nel documento vanno oltre le impostazioni utilizzate per configurare e installare Cloud Service Mesh e descrivono come utilizzare Cloud Service Mesh con altri Google Cloud prodotti e funzionalità per proteggersi dalle minacce alla sicurezza che le applicazioni in una mesh potrebbero affrontare.

Il pubblico di destinazione di questo documento include gli amministratori che gestiscono i criteri in un mesh di servizi Cloud e gli utenti che eseguono servizi in un mesh di servizi Cloud. Le misure di sicurezza descritte qui sono utili anche per le organizzazioni che devono migliorare la sicurezza dei propri service mesh per soddisfare i requisiti di conformità.

Il documento è organizzato come segue:

Introduzione

Cloud Service Mesh fornisce funzionalità e strumenti che ti aiutano a osservare, gestire e proteggere i servizi in modo unificato. Adotta un approccio incentrato sulle applicazioni e utilizza identità di applicazioni attendibili anziché un approccio incentrato sull'IP di rete. Puoi eseguire il deployment di un mesh di servizi in modo trasparente senza dover modificare il codice dell'applicazione esistente. Cloud Service Mesh fornisce un controllo dichiarativo sul comportamento della rete, il che contribuisce a separare il lavoro dei team responsabili della distribuzione e del rilascio delle funzionalità delle applicazioni dalle responsabilità degli amministratori responsabili della sicurezza e del networking.

Cloud Service Mesh si basa sul mesh di servizi Istio open source, che consente configurazioni e topologie sofisticate. A seconda della struttura della tua organizzazione, uno o più team o ruoli potrebbero essere responsabili dell'installazione e della configurazione di una mesh. Le impostazioni predefinite di Cloud Service Mesh sono scelte per proteggere le applicazioni, ma in alcuni casi potrebbe essere necessario configurazioni personalizzate o concedere eccezioni escludendo determinate app, porte o indirizzi IP dalla partecipazione a un mesh. È importante disporre di controlli per gestire le configurazioni mesh e le eccezioni di sicurezza.

Vettori di attacco e rischi per la sicurezza

Vettori d'attacco

La sicurezza di Cloud Service Mesh segue il modello di sicurezza Zero Trust, che presuppone che le minacce alla sicurezza provengano sia dall'interno che dall'esterno del perimetro di sicurezza di un'organizzazione. Ecco alcuni esempi di tipi di attacchi alla sicurezza che potrebbero minacciare le applicazioni in unmesh di servizih:

  • Attacchi di esfiltrazione di dati. Ad esempio, attacchi che intercettano dati sensibili o credenziali dal traffico da servizio a servizio.
  • Attacchi man-in-the-middle. Ad esempio, un servizio dannoso che si spaccia per un servizio legittimo per ottenere o modificare la comunicazione tra i servizi.
  • Attacchi di escalation dei privilegi. Ad esempio, attacchi che utilizzano l'accesso illecito a privilegi elevati per eseguire operazioni in una rete.
  • Attacchi Denial of Service (DoS).
  • Attacchi botnet che tentano di compromettere e manipolare i servizi per lanciare attacchi ad altri servizi.

Gli attacchi possono anche essere classificati in base ai target:

  • Attacchi alla rete interna mesh. Attacchi volti a manomettere, intercettare o falsificare la comunicazione interna da servizio a servizio o da servizio a control plane del mesh.
  • Attacchi al control plane. Attacchi volti a causare il malfunzionamento del piano di controllo (ad esempio un attacco DoS) o a estrarre dati sensibili dal piano di controllo.
  • Attacchi perimetrali della mesh. Attacchi volti a manomettere, intercettare o falsificare la comunicazione in entrata o in uscita dalla rete mesh.
  • Attacchi di operazioni mesh. Attacchi mirati alle operazioni mesh. Gli autori degli attacchi potrebbero tentare di ottenere privilegi elevati per condurre operazioni dannose in una mesh, come la modifica delle relative norme di sicurezza e delle immagini dei workload.

Rischi per la sicurezza

Oltre agli attacchi alla sicurezza, una mesh deve affrontare anche altri rischi per la sicurezza. Il seguente elenco descrive alcuni possibili rischi per la sicurezza:

  • Protezione di sicurezza incompleta. Una mesh di servizi non è stata configurata con criteri di autenticazione e autorizzazione per proteggere la sua sicurezza. Ad esempio, non sono definiti criteri di autenticazione o autorizzazione per i servizi in un mesh.
  • Eccezioni ai criteri di sicurezza. Per soddisfare i loro casi d'uso specifici, gli utenti possono creare eccezioni ai criteri di sicurezza per determinati tipi di traffico (interno o esterno) da escludere dai criteri di sicurezza di Cloud Service Mesh. Per gestire in modo sicuro questi casi, consulta la sezione Gestire in modo sicuro le eccezioni alle norme.
  • Mancato aggiornamento delle immagini. Potrebbero essere rilevate vulnerabilità per le immagini utilizzate in una mesh. Devi mantenere aggiornati i componenti mesh e le immagini dei carichi di lavoro con le correzioni delle vulnerabilità più recenti.
  • Mancanza di manutenzione (nessuna competenza o risorse). Le configurazioni del software mesh e delle policy richiedono una manutenzione regolare per sfruttare i meccanismi di protezione della sicurezza più recenti.
  • Mancanza di visibilità. Errori di configurazione o configurazioni non sicure di policy mesh e operazioni/traffico mesh anomali non vengono portati all'attenzione degli amministratori mesh.
  • Deriva della configurazione. La configurazione dei criteri in una mesh si discosta dalla fonte di riferimento.

Misure per proteggere un mesh di servizi

Questa sezione presenta un manuale operativo per proteggere i service mesh.

Architettura di sicurezza

La sicurezza di un mesh di servizi dipende dalla sicurezza dei componenti nei diversi livelli del sistema mesh e delle relative applicazioni. L'intenzione di alto livello della postura di sicurezza di Cloud Service Mesh proposta è quella di proteggere un mesh di servizi integrando più meccanismi di sicurezza a diversi livelli, che insieme raggiungono la sicurezza complessiva del sistema secondo il modello di sicurezza Zero Trust. Il seguente diagramma mostra la postura di sicurezza proposta per Cloud Service Mesh.

postura di sicurezza di Cloud Service Mesh

Cloud Service Mesh fornisce sicurezza a più livelli, tra cui:

  • Sicurezza edge della mesh
    • La sicurezza in entrata di Cloud Service Mesh fornisce il controllo dell'accesso per il traffico esterno e protegge l'accesso esterno alle API esposte dai servizi nella mesh.
    • La sicurezza in uscita di Cloud Service Mesh regola il traffico in uscita dai workload interni.
    • Cloud Service Mesh User Auth si integra con l'infrastruttura Google per autenticare le chiamate esterne dai browser web ai servizi che eseguono applicazioni web.
    • La gestione dei certificati del gateway di Cloud Service Mesh protegge e ruota le chiavi private e i certificati X.509 utilizzati dai gateway di ingresso e uscita di Cloud Service Mesh utilizzando Certificate Authority Service.
    • Cloud Armor può difendersi dagli attacchi DDoS (Distributed Denial-of-Service) esterni e di livello 7. Funge da web application firewall (WAF) per proteggere la mesh dagli attacchi di rete. Ad esempio, attacchi di iniezione ed esecuzione di codice da remoto.
    • VPC e Controlli di servizio VPC proteggono il perimetro del mesh tramite i controlli di accesso alla rete privata.
  • Sicurezza del cluster
    • La funzionalità mutual TLS (mTLS) di Cloud Service Mesh applica la crittografia e l'autenticazione del traffico da workload a workload.
    • Le CA gestite, come l'autorità di certificazione Cloud Service Mesh e Certificate Authority Service, eseguono il provisioning e la gestione sicuri dei certificati utilizzati dai workload.
    • L'autorizzazione Cloud Service Mesh applica controllo dell'accesso per i servizi mesh in base alle loro identità e ad altri attributi.
    • Il dashboard della sicurezza di GKE Enterprise fornisce il monitoraggio delle configurazioni delle norme di sicurezza e delle norme di rete Kubernetes per i carichi di lavoro.
    • La policy di rete Kubernetes applica controllo dell'accesso ai pod in base a indirizzi IP, etichette dei pod, spazi dei nomi e altro ancora.
    • La sicurezza del control plane difende dagli attacchi al control plane. Questa protezione impedisce agli autori degli attacchi di modificare, sfruttare o divulgare i dati di configurazione del servizio e della mesh.
  • Sicurezza dei workload
    • Tieniti aggiornato sulle release di sicurezza di Cloud Service Mesh per assicurarti che i binari di Cloud Service Mesh in esecuzione nella tua mesh siano privi di vulnerabilità note pubblicamente.
    • Workload Identity Federation for GKE consente ai workload di ottenere le credenziali per chiamare in modo sicuro i servizi Google.
    • Kubernetes CNI (Container Network Interface) impedisce gli attacchi di escalation dei privilegi eliminando la necessità di un container init Cloud Service Mesh con privilegi.
  • Sicurezza dell'operatore
    • Controllo dell'accesso basato sui ruoli (RBAC) di Kubernetes limita l'accesso alle risorse Kubernetes e confina le autorizzazioni dell'operatore per mitigare gli attacchi provenienti da operatori dannosi o dall'impersonificazione di operatori.
    • Policy Controller di GKE Enterprise convalida e controlla le configurazioni dei criteri nel mesh per evitare errori di configurazione.
    • Google Cloud Autorizzazione binaria garantisce che le immagini dei workload nel mesh siano quelle autorizzate dagli amministratori.
    • Google Cloud L'audit logging esegue l'audit delle operazioni della mesh.

Il diagramma seguente mostra i flussi di comunicazione e configurazione con le soluzioni di sicurezza integrate in Cloud Service Mesh.

security diagram traffic flow

Sicurezza del cluster

Abilita mutual TLS rigoroso

Un attacco man in the middle (MitM) tenta di inserire un'entità dannosa tra due parti che comunicano per intercettare o manipolare la comunicazione. Cloud Service Mesh si difende dagli attacchi MITM e di esfiltrazione di dati applicando la crittografia e l'autenticazione mTLS per tutte le parti comunicanti. La modalità permissiva utilizza mTLS quando entrambe le parti lo supportano, ma consente connessioni senza mTLS. Al contrario, la modalità mTLS restrittiva richiede che il traffico venga criptato e autenticato con mTLS e non consente il traffico in testo normale.

Cloud Service Mesh ti consente di configurare la versione TLS minima per le connessioni TLS tra i tuoi workload per soddisfare i requisiti di sicurezza e conformità.

Per saperne di più, consulta Anthos Service Mesh tramite esempi: mTLS | Applicazione di mTLS a livello di mesh.

Abilitare i controlli dell'accesso

I criteri di sicurezza di Cloud Service Mesh (ad esempio criteri di autenticazione e autorizzazione) devono essere applicati a tutto il traffico in entrata e in uscita dal mesh, a meno che non esistano giustificazioni valide per escludere un servizio o un pod dai criteri di sicurezza di Cloud Service Mesh. In alcuni casi, gli utenti potrebbero avere motivi legittimi per bypassare i criteri di sicurezza di Cloud Service Mesh per alcune porte e intervalli IP. Ad esempio, per stabilire connessioni native con servizi non gestiti da Cloud Service Mesh. Per proteggere Cloud Service Mesh in questi casi d'uso, consulta la sezione Gestire in modo sicuro le eccezioni ai criteri di Cloud Service Mesh.

Il controllo dell'accesso ai servizi è fondamentale per impedire l'accesso non autorizzato ai servizi. L'applicazione di mTLS cripta e autentica una richiesta, ma una mesh ha comunque bisogno di criteri di autorizzazione Cloud Service Mesh per applicare controllo dell'accesso dell'accesso ai servizi. Ad esempio, rifiutare una richiesta non autorizzata proveniente da un client autenticato.

I criteri di autorizzazione di Cloud Service Mesh forniscono un modo flessibile per configurare i controlli dell'accesso per proteggere i tuoi servizi da accessi non autorizzati. I criteri di autorizzazione di Cloud Service Mesh devono essere applicati in base alle identità autenticate derivate dai risultati dell'autenticazione. Le autenticazioni basate su mTLS o JWT (JSON Web Token) devono essere utilizzate insieme nell'ambito dei criteri di autorizzazione di Cloud Service Mesh.

Applica i criteri di autenticazione di Cloud Service Mesh

JSON Web Token (JWT)

Oltre all'autenticazione mTLS, gli amministratori del mesh possono richiedere a un servizio di autenticare e autorizzare le richieste in base a JWT. Cloud Service Mesh non funge da fornitore di JWT, ma autentica i JWT in base agli endpoint JWKS (JSON Web Key Set) configurati. L'autenticazione JWT può essere applicata ai gateway in entrata per il traffico esterno o ai servizi interni per il traffico in-mesh. L'autenticazione JWT può essere combinata con l'autenticazione mTLS quando un JWT viene utilizzato come credenziale per rappresentare il chiamante finale e il servizio richiesto richiede la prova che viene chiamato per conto del chiamante finale. L'applicazione dell'autenticazione JWT protegge dagli attacchi che accedono a un servizio senza credenziali valide e per conto di un utente finale reale.

Autenticazione utente Cloud Service Mesh

L'autenticazione utente Cloud Service Mesh è una soluzione integrata per l'autenticazione e il controllo dell'accesso degli utenti finali basati su browser ai tuoi carichi di lavoro. Integra un mesh di servizi con i provider di identità (IdP) esistenti per implementare un flusso di accesso e consenso OpenID Connect (OIDC) standard basato sul web e utilizza i criteri di autorizzazione di Cloud Service Mesh per il controllo dell'accesso.

Applicare i criteri di autorizzazione

I criteri di autorizzazione di Cloud Service Mesh controllano:

  • Chi o cosa è autorizzato ad accedere a un servizio.
  • A quali risorse è possibile accedere.
  • Quali operazioni possono essere eseguite sulle risorse consentite.

I criteri di autorizzazione sono un modo versatile per configurare controllo dell'accesso dell'accesso in base alle identità effettive con cui vengono eseguiti i servizi, alle proprietà del traffico del livello applicazione (livello 7) (ad esempio le intestazioni delle richieste) e alle proprietà del livello di rete (livello 3 e livello 4) come intervalli IP e porte.

I criteri di autorizzazione di Cloud Service Mesh devono essere applicati in base alle identità autenticate derivate dai risultati dell'autenticazione per proteggersi dall'accesso non autorizzato a servizi o dati.

Per impostazione predefinita, l'accesso a un servizio deve essere negato a meno che non siano definiti in modo esplicito criteri di autorizzazione per consentire l'accesso al servizio. Consulta le best practice per i criteri di autorizzazione per esempi di criteri di autorizzazione che negano le richieste di accesso.

Le norme di autorizzazione devono limitare l'attendibilità il più possibile. Ad esempio, l'accesso a un servizio può essere definito in base ai singoli percorsi URL esposti da un servizio in modo che solo un servizio A possa accedere al percorso /admin di un servizio B.

I criteri di autorizzazione possono essere utilizzati insieme ai criteri di rete Kubernetes, che operano solo a livello di rete (livello 3 e livello 4) e controllano l'accesso alla rete per indirizzi IP e porte su pod Kubernetes e spazi dei nomi Kubernetes.

Imporre lo scambio di token per accedere ai servizi mesh

Per difendersi dagli attacchi di replay dei token che rubano i token e li riutilizzano per accedere ai servizi mesh, un token in una richiesta proveniente dall'esterno della mesh deve essere scambiato con un token interno alla mesh di breve durata al perimetro della mesh.

Una richiesta dall'esterno del mesh per accedere a un servizio mesh deve includere un token, ad esempio JWT o cookie, per essere autenticata e autorizzata dal servizio mesh. Un token esterno alla mesh potrebbe avere una lunga durata. Per difendersi dagli attacchi di replay dei token, un token esterno al mesh deve essere scambiato con un token interno al mesh di breve durata con un ambito limitato all'ingresso del mesh. Il servizio mesh autentica un token interno al mesh e autorizza la richiesta di accesso in base al token interno al mesh.

Passaggi successivi