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 prodotti e funzionalità Google Cloudper proteggersi dalle minacce alla sicurezza che le applicazioni in un mesh potrebbero dover affrontare.
Il pubblico di destinazione di questo documento include gli amministratori che gestiscono le policy in un Cloud Service Mesh e gli utenti che eseguono servizi in un Cloud Service Mesh. Le misure di sicurezza descritte qui sono utili anche per le organizzazioni che devono migliorare la sicurezza dei propri mesh di servizi per soddisfare i requisiti di conformità.
Il documento è organizzato come segue:
- Introduzione
- Vettori d'attacco e rischi per la sicurezza
- Misure per proteggere un mesh di servizi
- Architettura di sicurezza
- Sicurezza dei cluster
- Sicurezza perimetrale mesh
- Sicurezza per l'amministrazione e l'automazione del mesh
- Sicurezza dei workload
- Sicurezza per dati utente e credenziali sensibili
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à delle applicazioni attendibili anziché un approccio incentrato sugli 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, che aiuta 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 un mesh. Le impostazioni predefinite di Cloud Service Mesh sono scelte per proteggere le applicazioni, ma in alcuni casi potresti aver bisogno di configurazioni personalizzate o di concedere eccezioni escludendo determinate app, porte o indirizzi IP dalla partecipazione a un mesh. È importante disporre di controlli per gestire le configurazioni del mesh e le eccezioni di sicurezza.
Vettori d'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 possono minacciare le applicazioni in un mesh di servizi:
- Attacchi di esfiltrazione di dati. Ad esempio, attacchi che intercettano dati sensibili o credenziali dal traffico tra servizi.
- Attacchi man-in-the-middle. Ad esempio, un servizio dannoso che si maschera da 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 condurre operazioni in una rete.
- Attacchi Denial of Service (DoS).
- Attacchi di 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 tra servizi o tra servizi e control plane del mesh.
- Attacchi al control plane. Attacchi volti a causare il malfunzionamento del control plane (come un attacco DoS) o a esfiltrare dati sensibili dal control plane.
- Attacchi ai nodi perimetrali della rete mesh. Attacchi volti a manomettere, intercettare o eseguire lo spoofing delle comunicazioni in entrata o in uscita dal mesh.
- Attacchi alle operazioni mesh. Attacchi mirati alle operazioni del mesh. Gli utenti malintenzionati potrebbero tentare di ottenere privilegi elevati per eseguire operazioni dannose in un mesh, ad esempio modificando le policy di sicurezza e le immagini dei workload.
Rischi per la sicurezza
Oltre agli attacchi alla sicurezza, un mesh deve affrontare anche altri rischi per la sicurezza. Il seguente elenco descrive alcuni possibili rischi per la sicurezza:
- Protezione di sicurezza incompleta. Un mesh di servizi non è stato configurato con policy di autenticazione e autorizzazione per proteggere la sua sicurezza. Ad esempio, non sono definite policy di autenticazione o autorizzazione per i servizi in un mesh.
- Eccezioni alle policy di sicurezza. Per soddisfare i loro casi d'uso specifici, gli utenti possono creare eccezioni alle policy di sicurezza per escludere un determinato traffico (interno o esterno) dalle policy di sicurezza di Cloud Service Mesh. Per gestire in sicurezza questi casi, consulta la sezione Gestisci in sicurezza le eccezioni alle policy.
- Mancato upgrade delle immagini. Potrebbero essere rilevate vulnerabilità per le immagini utilizzate in un mesh. Devi mantenere aggiornate le immagini dei componenti mesh e dei workload con le correzioni delle vulnerabilità più recenti.
- Mancanza di manutenzione (nessuna competenza o risorsa). Le configurazioni del software e delle policy del mesh richiedono una manutenzione regolare per sfruttare i meccanismi di protezione della sicurezza più recenti.
- Mancanza di visibilità. La configurazione errata o non sicura delle policy del mesh e il traffico/le operazioni anomali del mesh non vengono portati all'attenzione degli amministratori del mesh.
- Deriva delle configurazioni. La configurazione delle policy in un mesh si discosta dalla fonte di riferimento.
Misure per proteggere un mesh di servizi
Questa sezione presenta un manuale operativo per proteggere i mesh di servizi.
Architettura di sicurezza
La sicurezza di un mesh di servizi dipende dalla sicurezza dei componenti ai diversi livelli del sistema mesh e delle sue applicazioni. L'obiettivo generale della security posture proposta per Cloud Service Mesh è proteggere un mesh di servizi integrando più meccanismi di sicurezza a livelli diversi, che insieme garantiscono la sicurezza complessiva del sistema secondo il modello di sicurezza Zero Trust. Il seguente diagramma mostra la security posture proposta per Cloud Service Mesh.
Cloud Service Mesh offre sicurezza a più livelli, tra cui:
- Sicurezza perimetrale del mesh
- La sicurezza in entrata di Cloud Service Mesh fornisce controllo dell'accesso per il traffico esterno e protegge l'accesso esterno alle API esposte dai servizi nel mesh.
- La sicurezza in uscita di Cloud Service Mesh regola il traffico in uscita dai workload interni.
- L'autenticazione utente di Cloud Service Mesh 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 in entrata e in uscita di Cloud Service Mesh utilizzando Certificate Authority Service.
- Cloud Armor può difendere dagli attacchi DDoS (Distributed Denial of Service) esterni e di livello 7. Funge da Web Application Firewall (WAF) per proteggere il mesh dagli attacchi di rete. Ad esempio, attacchi di injection 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 dei cluster
- Il mutual TLS (mTLS) di Cloud Service Mesh applica la crittografia e l'autenticazione del traffico tra workload.
- La CA gestita, come l'autorità di certificazione Cloud Service Mesh e Certificate Authority Service, esegue il provisioning e gestisce in modo sicuro i certificati utilizzati dai workload.
- L'autorizzazione di Cloud Service Mesh applica controllo dell'accesso per i servizi mesh in base alle loro identità e ad altri attributi.
- La dashboard della sicurezza di GKE Enterprise fornisce il monitoraggio delle configurazioni delle policy di sicurezza e delle policy di rete Kubernetes per i workload.
- La policy di rete di Kubernetes applica controllo dell'accesso ai pod in base agli indirizzi IP, alle etichette dei pod, agli spazi dei nomi e altro ancora.
- La sicurezza del control plane protegge dagli attacchi al control plane. Questa protezione impedisce agli utenti malintenzionati di modificare, sfruttare o divulgare i dati di configurazione del servizio e del mesh.
- Sicurezza dei workload
- Rimani al passo con le release di sicurezza di Cloud Service Mesh per assicurarti che i file binari di Cloud Service Mesh in esecuzione nel mesh non presentino 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 degli operatori
- Controllo dell'accesso basato su ruoli (RBAC) di Kubernetes limita l'accesso alle risorse Kubernetes e confina le autorizzazioni degli operatori per mitigare gli attacchi provenienti da operatori dannosi o dalla simulazione dell'identità degli operatori.
- Policy Controller di GKE Enterprise convalida e controlla le configurazioni delle policy 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 Audit Logging controlla le operazioni del mesh.
Il diagramma seguente mostra i flussi di comunicazione e configurazione con le soluzioni di sicurezza integrate in Cloud Service Mesh.
Sicurezza dei cluster
Abilita mutual TLS rigoroso
Un attacco man in the middle (MitM) tenta di inserire un'entità dannosa tra due parti comunicanti per intercettare o manipolare la comunicazione. Cloud Service Mesh protegge dagli attacchi MitM e di esfiltrazione di dati applicando l'autenticazione e la crittografia mTLS per tutte le parti comunicanti. La modalità permissiva utilizza mTLS quando entrambi i lati lo supportano, ma consente connessioni senza mTLS. Al contrario, mTLS restrittiva richiede che il traffico sia crittografato 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 Cloud Service Mesh tramite esempi: mTLS | Applicazione di mTLS a livello di mesh.
Abilita i controlli di accesso
Le policy di sicurezza di Cloud Service Mesh (come le policy di autenticazione e autorizzazione) devono essere applicate a tutto il traffico in entrata e in uscita dal mesh, a meno che non esistano forti giustificazioni per escludere un servizio o un pod dalle policy di sicurezza di Cloud Service Mesh. In alcuni casi, gli utenti potrebbero avere motivi legittimi per bypassare le policy 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 Gestisci in modo sicuro le eccezioni delle policy di Cloud Service Mesh.
Il controllo dell'accesso servizi è fondamentale per impedire l'accesso non autorizzato ai servizi. L'applicazione di mTLS cripta e autentica una richiesta, ma un mesh ha comunque bisogno delle policy di autorizzazione di Cloud Service Mesh per applicare controllo dell'accesso ai servizi. Ad esempio, rifiutando una richiesta non autorizzata proveniente da un client autenticato.
Le policy di autorizzazione di Cloud Service Mesh offrono un modo flessibile per configurare i controlli degli accessi per proteggere i tuoi servizi da accessi non autorizzati. Le policy di autorizzazione di Cloud Service Mesh devono essere applicate in base alle identità autenticate derivate dai risultati dell'autenticazione. Le autenticazioni basate su mTLS o JSON Web Token (JWT) devono essere utilizzate insieme nell'ambito delle policy di autorizzazione di Cloud Service Mesh.
Applica le policy 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 agisce come provider 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 all'interno del 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 di Cloud Service Mesh
L'autenticazione utente di Cloud Service Mesh è una soluzione integrata per l'autenticazione e il controllo degli accessi degli utenti finali basati su browser ai tuoi workload. 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 le policy di autorizzazione di Cloud Service Mesh per il controllo degli accessi.
Le policy di autorizzazione di Cloud Service Mesh controllano:
- Chi o cosa è autorizzato ad accedere a un servizio.
- Le risorse a cui è possibile accedere.
- Quali operazioni possono essere eseguite sulle risorse consentite.
Le policy di autorizzazione sono un modo versatile per configurare controllo dell'accesso in base alle identità effettive con cui vengono eseguiti i servizi, alle proprietà del traffico a livello di applicazione (livello 7), ad esempio le intestazioni delle richieste, e alle proprietà a livello di rete (livello 3 e livello 4), come intervalli IP e porte.
Le policy di autorizzazione di Cloud Service Mesh devono essere applicate 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 venga definita esplicitamente una policy di autorizzazione per consentire l'accesso al servizio. Consulta le best practice per le policy di autorizzazione per esempi di policy di autorizzazione che negano le richieste di accesso.
Le policy di autorizzazione devono limitare il più possibile l'attendibilità. Ad esempio, l'accesso a un servizio può essere definito in base ai singoli percorsi dell'URL esposti da un servizio, in modo che solo un servizio A possa accedere al percorso /admin di un servizio B.
Le policy di autorizzazione possono essere utilizzate insieme alle policy di rete di 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.
Forza lo scambio di token per l'accesso ai servizi mesh
Per difendersi dagli attacchi di replay dei token, che rubano i token e li riutilizzano per accedere ai servizi del mesh, un token in una richiesta proveniente dall'esterno del mesh deve essere scambiato con un token interno al mesh di breve durata sul perimetro del mesh.
Una richiesta di accesso a un servizio mesh dall'esterno del mesh deve includere un token, ad esempio JWT o cookie, per essere autenticata e autorizzata dal servizio mesh. Un token proveniente dall'esterno del mesh potrebbe avere una lunga durata. Per difendersi dagli attacchi di replay dei token, un token proveniente dall'esterno del 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
- Consulta le best practice per l'utilizzo dei gateway in uscita di Cloud Service Mesh su cluster GKE
- Configura la sicurezza del trasporto
- Aggiorna le policy di autorizzazione