Best practice per la sicurezza di Cloud Service Mesh

Questo documento descrive le best practice per stabilire e governare una configurazione sicura di Cloud Service Mesh in esecuzione su Google Kubernetes Engine (GKE). Le linee guida nel documento va oltre le impostazioni utilizzate per configurare e installare Cloud Service Mesh e descrive come utilizzare Cloud Service Mesh con altri servizi Google Cloud prodotti e funzionalità per la protezione dalle minacce alla sicurezza che le applicazioni in una rete mesh.

Il pubblico di destinazione di questo documento include gli amministratori che gestiscono i criteri 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

Cloud Service Mesh fornisce funzionalità e strumenti utili per osservare, gestire e sicuri in modo unificato. Adotta un approccio incentrato sulle applicazioni e utilizza identità delle 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 offre un controllo dichiarativo sulla rete il che aiuta a disaccoppiare il lavoro dei team responsabili la distribuzione e il rilascio di funzionalità dell'applicazione dalle responsabilità responsabili della sicurezza e del networking.

Cloud Service Mesh si basa sul mesh di servizi Istio open source, che consente configurazioni e topologie sofisticate. In base alla struttura, dell'organizzazione, uno o più team o ruoli potrebbero l'installazione e la configurazione di un mesh. Vengono scelte le impostazioni predefinite di Cloud Service Mesh ma in alcuni casi potrebbe essere necessario configurazioni personalizzate o di concedere eccezioni escludendo determinate app, porte o indirizzi IP che partecipano 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 di 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 sia dall'esterno del perimetro di sicurezza di un'organizzazione. Ecco alcuni esempi di tipi di attacchi alla sicurezza che possono rappresentare una minaccia per 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 maschera la maschera come servizio legittimo per ottenere o modificare la comunicazione tra i servizi di machine learning.
  • Attacchi di escalation dei privilegi. Ad esempio, gli 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 avviarli ad altri servizi.

Gli attacchi possono essere classificati anche in base ai target:

  • Attacchi alla rete interna del mesh. Attacchi volti a manomettere, intercettare o falsificare la comunicazione service-to-service o service-to-control-plane interna del mesh.
  • Attacchi al piano di controllo. Attacchi volti a far cadere il piano di controllo malfunzionamenti (come un attacco DoS) o esfiltrazione di dati sensibili dal piano di controllo.
  • Attacchi ai bordi della maglia. Attacchi volti a manomettere, intercettare o falsificare la comunicazione all'ingresso o all'uscita della rete mesh.
  • Attacchi alle operazioni di Mesh. Attacchi mirati alle operazioni del mesh. Gli aggressori potrebbero cercano di ottenere privilegi elevati per condurre operazioni dannose in un mesh, come la modifica dei criteri di sicurezza e delle immagini dei carichi di lavoro.

Rischi per la sicurezza

Oltre agli attacchi alla sicurezza, una rete mesh presenta anche altri rischi per la sicurezza. Le seguenti descrive alcuni possibili rischi per la sicurezza:

  • Protezione della sicurezza incompleta. Non è stato configurato un mesh di servizi con di autenticazione e autorizzazione per proteggerne la sicurezza. Ad esempio, non sono definiti criteri di autenticazione o autorizzazione per i servizi in un mesh.
  • Eccezioni alle norme di sicurezza. Per soddisfare i loro casi d'uso specifici, gli utenti possono creare eccezioni ai criteri di sicurezza per escludere determinati tipi di traffico (interno o esterno) dai criteri di sicurezza di Cloud Service Mesh. Per garantire la sicurezza gestire questi casi, consulta la sezione Gestire in modo sicuro le eccezioni ai criteri.
  • Mancata attenzione agli upgrade delle immagini. Potrebbero essere scoperte le vulnerabilità delle immagini utilizzata in una mesh. Devi mantenere le immagini del componente mesh e del carico di lavoro con le ultime correzioni di vulnerabilità.
  • Mancanza di manutenzione (nessuna competenza o risorsa). Il software e le configurazioni dei criteri della rete mesh richiedono una manutenzione regolare per sfruttare i meccanismi di protezione della sicurezza più recenti.
  • Mancanza di visibilità. Le configurazioni errate o non sicure dei criteri di mesh e le operazioni/il traffico anomalo del mesh non vengono portate all'attenzione degli amministratori di mesh.
  • Deviazione dalla configurazione: La configurazione dei criteri in un mesh si discosta dalla fonte attendibile.

Misure per proteggere un mesh di servizi

Questa sezione presenta un manuale operativo per la protezione dei mesh di servizi.

Architettura di sicurezza

La sicurezza di un mesh di servizi dipende dalla sicurezza dei componenti diversi livelli del sistema mesh e delle sue applicazioni. La configurazione di alto livello la strategia di sicurezza di Cloud Service Mesh proposta è proteggere un servizio mesh attraverso l'integrazione di più meccanismi di sicurezza a diversi livelli, raggiungere insieme la sicurezza complessiva del sistema nell'ambito del modello di sicurezza Zero Trust. Il seguente diagramma mostra la strategia di sicurezza di Cloud Service Mesh proposta.

security posture di Cloud Service Mesh

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

  • Sicurezza perimetrale mesh
    • La sicurezza in entrata di Cloud Service Mesh consente il controllo dell'accesso per il traffico e protegge l'accesso esterno alle API esposte dai servizi nella rete.
    • La sicurezza in uscita di Cloud Service Mesh regola il traffico in uscita dai carichi di lavoro interni.
    • Autorizzazione utente Cloud Service Mesh si integra con l'infrastruttura Google per autenticare le chiamate esterne dai browser ai servizi che eseguono le applicazioni web.
    • Gestione dei certificati gateway Cloud Service Mesh protegge e ruota le chiavi private e i certificati X.509 utilizzati Gateway in entrata e in uscita di Cloud Service Mesh utilizzando Certificate Authority Service.
    • Cloud Armor può difendere gli attacchi DDoS (Distributed Denial of Service) esterni e di livello 7. it funge da web application firewall (WAF) per proteggere il mesh di attacchi di rete. Ad esempio, iniezione ed esecuzione di codice in remoto attacchi informatici.
    • VPC e Controlli di servizio VPC proteggono il confine del mesh tramite i controlli di accesso alla rete privata.
  • Sicurezza del cluster
    • Il protocollo TLS reciproco (mTLS) di Cloud Service Mesh applica la crittografia e l'autenticazione del traffico tra carichi di lavoro.
    • L'autorità di certificazione gestita, come l'autorità di certificazione Cloud Service Mesh e il servizio Certificate Authority, esegue il provisioning e gestisce in modo sicuro i certificati utilizzati dai carichi di lavoro.
    • L'autorizzazione di Cloud Service Mesh applica il controllo dell'accesso ai servizi mesh in base alla loro identità e ad altri attributi.
    • Dashboard per la sicurezza di GKE Enterprise monitora le configurazioni dei criteri di sicurezza e i criteri di rete Kubernetes per i carichi di lavoro.
    • Il criterio di rete di Kubernetes applica il controllo dell'accesso ai pod in base all'IP indirizzi IP, etichette pod, spazi dei nomi e altro ancora.
    • La sicurezza del piano di controllo protegge dagli attacchi al piano di controllo. Questa protezione impedisce agli utenti malintenzionati di modificare, sfruttare o perdita di dati dei servizi e della configurazione mesh.
  • Sicurezza dei carichi di lavoro
    • Resta 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 sono privi di elementi noti pubblicamente le vulnerabilità.
    • Workload Identity Federation for GKE consente ai carichi di lavoro di ottenere le credenziali per chiamare in modo sicuro i servizi Google.
    • Cloud Key Management Service (Cloud KMS) protegge le credenziali o i dati sensibili tramite i moduli di sicurezza hardware (HSM). Ad esempio, i carichi di lavoro possono utilizzare Cloud KMS per archiviare credenziali o altri dati sensibili. CA Service: utilizzato per per emettere certificati per i carichi di lavoro mesh, supportando i Chiavi di firma supportate da HSM gestite da Cloud KMS.
    • CNI (Container Network Interface) di Kubernetes impedisce gli attacchi di escalation dei privilegi eliminando la necessità di un contenitore di inizializzazione Cloud Service Mesh con privilegi.
  • Sicurezza dell'operatore
    • Il controllo degli accessi basato sui ruoli (RBAC) di Kubernetes limita l'accesso alle risorse Kubernetes e confina le autorizzazioni degli operatori per mitigare gli attacchi provenienti da operatori malintenzionati o da furti d'identità di operatori.
    • Policy Controller di GKE Enterprise convalida e controlla le configurazioni dei criteri nel mesh per evitare configurazioni errate.
    • Autorizzazione binaria Google Cloud garantisce che le immagini dei carichi di lavoro nel mesh siano quelle autorizzate per gli amministratori.
    • L'audit logging di Google Cloud controlla le operazioni della rete mesh.

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

diagramma di sicurezza flusso di traffico

Sicurezza del cluster

Attiva TLS reciproco rigoroso

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

Per ulteriori informazioni, consulta Cloud Service Mesh tramite esempi: mTLS | Applicazione di mTLS a livello di mesh.

Attiva i controlli dell'accesso

Criteri di sicurezza di Cloud Service Mesh (come autenticazione e autorizzazione criteri) devono essere applicate a tutto il traffico in entrata e in uscita dal mesh, a meno che sono giustificazioni solide per escludere un servizio o un pod da Cloud Service Mesh criteri di sicurezza. 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 difendere Cloud Service Mesh in questi casi d'uso, consulta 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 i servizi di machine learning. L'applicazione forzata di mTLS cripta e autentica una richiesta, ma la rete mesh esigenze Criteri di autorizzazione di Cloud Service Mesh per applicare il controllo dell'accesso ai servizi. Ad esempio, il rifiuto di una richiesta non autorizzata proveniente da un client autenticato.

I criteri di autorizzazione di Cloud Service Mesh forniscono un modo flessibile per configurare l'accesso per difendere i servizi dagli accessi non autorizzati. Cloud Service Mesh i criteri di autorizzazione devono essere applicati in base alle identità autenticate derivata dai risultati dell'autenticazione: mTLS o JSON Web Token (JWT) basato le autenticazioni devono essere utilizzate insieme come parte dell'autorizzazione di Cloud Service Mesh criteri.

Applica i criteri di autenticazione di Cloud Service Mesh

JSON Web Token (JWT)

Oltre all'autenticazione mTLS, gli amministratori della rete 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 al degli endpoint JWKS (JSON Web Key Set). L'autenticazione JWT può essere applicata ai gateway in entrata per il traffico esterno o ai servizi interni per i servizi in-mesh per via del traffico. L'autenticazione JWT può essere combinata con l'autenticazione mTLS quando un JWT viene utilizzato come credenziale per rappresentare l'utente chiamante finale e il servizio richiesto richiede la prova che viene chiamato per conto dell'utente chiamante finale. Applicazione L'autenticazione JWT difende dagli attacchi che accedono a un servizio senza e per conto di un utente finale reale.

Autenticazione utente di Cloud Service Mesh

Autenticazione degli utenti Cloud Service Mesh è una soluzione integrata per l'autenticazione e l'accesso degli utenti finali basati su browser dei 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) web standard e utilizza i criteri di autorizzazione di Cloud Service Mesh per il controllo dell'accesso.

Applicare i criteri di autorizzazione

Controllo dei criteri di autorizzazione di Cloud Service Mesh:

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

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

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

Per impostazione predefinita, l'accesso a un servizio deve essere negato, a meno che non sia definito esplicitamente un criterio di autorizzazione per consentire l'accesso al servizio. Consulta: Best practice per i criteri di autorizzazione per esempi di criteri di autorizzazione che negano le richieste di accesso.

I criteri di autorizzazione devono limitare il più possibile l'attendibilità. 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 4) e controllano l'accesso alla rete per gli indirizzi IP e le porte sui pod Kubernetes e negli spazi dei nomi Kubernetes.

Imporre 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 dall'esterno del mesh deve essere scambiato con un token interno al mesh di breve durata all'estremità del 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 al mesh può avere una lunga durata. Per difendersi dagli attacchi di ripetizione 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.

Cloud Service Mesh supporta l'integrazione con Identity-Aware Proxy (IAP), che genera un RequestContextToken (un token interno al mesh di breve durata scambiato da un token esterno) utilizzato in Cloud Service Mesh per l'autorizzazione. Con token Exchange, gli utenti malintenzionati non possono utilizzare un token rubato nel mesh per accedere i servizi di machine learning. L'ambito e la durata limitati del token scambiato riducono notevolmente la possibilità di un attacco di replay del token.

Gestisci in modo sicuro le eccezioni dei criteri di Cloud Service Mesh

Il tuo mesh di servizi potrebbe avere casi d'uso speciali. Ad esempio, potresti dover una determinata porta di rete al traffico di testo normale. Per soddisfare specifiche di utilizzo, a volte può essere necessario creare eccezioni per consentire traffico interno o esterno da escludere dalla sicurezza di Cloud Service Mesh di sicurezza, il che crea problemi di sicurezza.

Potresti avere motivi legittimi per bypassare i criteri di sicurezza di Cloud Service Mesh per alcune porte e intervalli IP. Puoi aggiungere annotazioni (ad esempio excludeInboundPorts, excludeOutboundPorts, excludeOutboundIPRanges) ai pod per escludere il traffico dalla gestione da parte del sidecar Envoy. Oltre alle annotazioni per escludere il traffico, puoi bypassare completamente la mesh implementando un'applicazione con l'iniezione di sidecar disattivata. Ad esempio, aggiungendo l'etichetta sidecar.istio.io/inject="false" alla un pod di applicazione.

Il bypass dei criteri di sicurezza di Cloud Service Mesh ha un impatto negativo sulla sicurezza complessiva del sistema. Ad esempio, se il protocollo mTLS e i criteri di autorizzazione di Cloud Service Mesh sono bypassati per una porta di rete mediante annotazioni, non vi sarà alcun accesso controllo del traffico sulla porta e intercettazioni o modifica del traffico possibile. Inoltre, anche l'aggiramento dei criteri di Cloud Service Mesh influisce criteri non di sicurezza, come i criteri di rete.

Quando il criterio di sicurezza di Cloud Service Mesh viene aggirato per una porta o un indirizzo IP ( intenzionalmente o involontariamente), devono essere presenti altre misure di sicurezza per proteggere il mesh e monitorare le eccezioni di sicurezza, le potenziali lacune di sicurezza e lo stato di applicazione della sicurezza complessiva. Per proteggere la rete mesh in scenari in cui puoi:

  • Assicurati che il traffico che aggira i file collaterali sia criptato in modo nativo e autenticati per prevenire gli attacchi MitM.
  • Applica i criteri di rete Kubernetes per limitare la connettività delle porte con eccezioni ai criteri (ad esempio, limitare una porta con eccezioni ai criteri per consentire solo il traffico da un altro servizio nello stesso spazio dei nomi) o per consentire il passaggio del traffico solo attraverso le porte con i criteri di sicurezza di Cloud Service Mesh applicati.
  • Applica il controller dei criteri GKE Enterprise per convalidare automaticamente i criteri di Cloud Service Mesh. Ad esempio, puoi imporre che i sidecar di Cloud Service Mesh vengano sempre iniettati nei carichi di lavoro.

Applica i criteri di rete di Kubernetes

Cloud Service Mesh si basa sulla piattaforma di base (ad esempio Kubernetes). Di conseguenza, la sicurezza di Cloud Service Mesh dipende dalla sicurezza delle risorse sottostanti completamente gestita. Ad esempio, senza il controllo su chi può aggiornare le risorse Kubernetes, un utente potrebbe modificare il deployment Kubernetes di un servizio per bypassare il sidecar del servizio.

Per creare una security posture solida per un service mesh, i meccanismi di sicurezza della piattaforma di base devono essere applicati in modo da funzionare insieme ai criteri di sicurezza di Cloud Service Mesh.

Criteri di rete di Kubernetes operano a livello di rete (L3 e L4) per indirizzi IP e porte e spazi dei nomi di Kubernetes. I criteri di rete Kubernetes possono essere applicati in combinazione con i criteri di Cloud Service Mesh per migliorare la sicurezza del mesh.

Ad esempio, l'amministratore della rete mesh può configurare i criteri di rete di Kubernetes Consentire al traffico solo di utilizzare le porte con il criterio di sicurezza di Cloud Service Mesh applicato. Se tutto il traffico deve essere applicato in modo forzato con il protocollo mTLS di Cloud Service Mesh, l'amministratore può configurare un criterio di rete Kubernetes per consentire il traffico solo sulle porte configurato con il criterio mTLS di Cloud Service Mesh. L'amministratore della rete mesh può anche configura i criteri di rete di Kubernetes per limitare la connettività delle porte con un criterio eccezioni. Ad esempio, limita la connettività di queste porte in modo che sia all'interno di un nello spazio dei nomi.

Accesso sicuro al control plane

Il piano di controllo di Cloud Service Mesh autentica tutti i client che si connettono. Pertanto, solo i chiamanti con credenziali valide (certificati Kubernetes JWT o X.509 emessi dalle CA consentite) possono accedere al piano di controllo di Cloud Service Mesh. TLS cripta e connessioni tra i carichi di lavoro e il piano di controllo di Cloud Service Mesh.

Oltre al meccanismo di autenticazione, per Cloud Service Mesh all'interno del cluster, è possibile implementare i criteri di rete Kubernetes per isolare lo spazio dei nomi di sistema Cloud Service Mesh (per impostazione predefinita istio-system) dagli spazi dei nomi e dai client non gestiti al di fuori della mesh, consentendo al contempo ai data plane di accedere al control plane. Regole firewall VPC può impedire al traffico esterno a un cluster di raggiungere Istiod. Con queste misure di isolamento della rete, un malintenzionato esterno al mesh non potrà accedere al control plane, anche se dispone di credenziali valide. Per piani di controllo gestiti, Google gestisce la sicurezza dei piani di controllo e dell'isolamento della rete e i criteri per i piani di controllo.

Applicare i confini dello spazio dei nomi

Per impedire a un utente di un spazio dei nomi di accedere/aggiornare le risorse in un spazio dei nomi non autorizzato:

  • Imporre i controlli dell'accesso.
  • Applica i criteri di rete Kubernetes. Se i servizi in uno spazio dei nomi non hanno traffico al di fuori dello spazio dei nomi, amministratore mesh deve eseguire il deployment di un criterio di rete Kubernetes consente il traffico all'interno dello spazio dei nomi: nessun traffico in entrata o in uscita dallo spazio dei nomi.
  • Applica i criteri RBAC di Kubernetes.
    • I ruoli degli amministratori delle applicazioni devono essere associati a uno spazio dei nomi.
    • Consenti solo agli amministratori mesh di avere ClusterRole.

Applica i criteri RBAC di Kubernetes

Gli amministratori della rete mesh devono applicare Criteri RBAC di Kubernetes e controllare chi è autorizzato ad accedere e aggiornare le risorse Kubernetes. Kubernetes controllo dell'accesso può ridurre i rischi per la sicurezza nel mesh. Ad esempio: a utenti non autorizzati non devono essere autorizzati a modificare i deployment Kubernetes bypassare le applicazioni dei criteri di Cloud Service Mesh. I ruoli di un utente devono essere legati a uno spazio dei nomi in modo che l'utente non possa accedere a più spazi dei nomi di quelli di cui ha bisogno. Per guide dettagliate ed esempi di configurazione di RBAC, consulta le Configurare il controllo degli accessi basato su ruoli Dopo aver abilitato la federazione delle identità per i carichi di lavoro per GKE, puoi anche consentire a un account di servizio Kubernetes di agire come account di servizio IAM.

Sicurezza perimetrale mesh

Poiché la maggior parte degli attacchi può anche provenire dall'esterno di un cluster, garantire la sicurezza sul perimetro della rete mesh è fondamentale.

Controllo dell'accesso in ingresso al cluster

Cloud Service Mesh riceve traffico esterno in entrata attraverso il gateway in entrata. I servizi esposti dal gateway in entrata potrebbero essere soggetti ad attacchi provenienti dall'esterno fonti. Gli amministratori della sicurezza devono sempre assicurarsi che i servizi esposti al traffico esterno tramite i gateway di ingresso siano sufficientemente sicuri per difendersi dagli attacchi.

Ingress deve applicare l'autenticazione e l'autorizzazione per i servizi esposti a chiamanti esterni.

  • Applica i criteri di sicurezza in entrata del cluster. Quando il cluster deve ricevere traffico esterno, l'amministratore del mesh deve applicare i criteri di sicurezza di ingresso, inclusi i criteri di autenticazione e autorizzazione, nonché il gateway TLS di Cloud Service Mesh, per autenticare le richieste esterne e verificare che siano autorizzate ad accedere ai servizi esposti dal gateway di ingresso. L'applicazione dei criteri di sicurezza in entrata protegge dall'esterno del mesh gli attacchi che tentano di accedere a un servizio senza credenziali o autorizzazioni valide.
  • Utilizza Cloud Armor come servizio Application Firewall (WAF) per la difesa dagli attacchi basati sul web (ad esempio attacchi injection e attacchi di esecuzione remota). Per ulteriori informazioni, vedi Da perimetrale al mesh: esposizione delle applicazioni mesh di servizi tramite GKE Ingress.

Regola il traffico in uscita del cluster

La sicurezza in uscita del cluster è fondamentale per la sicurezza del mesh perché i criteri di sicurezza in uscita possono difendere dagli attacchi di esfiltrazione dei dati, applicare il filtro del traffico in uscita e applicare l'origine TLS per il traffico in uscita. Sicurezza gli amministratori devono regolare e controllare il traffico in uscita del cluster.

Oltre a utilizzare i firewall VPC per limitare il traffico in uscita, gli amministratori del mesh devono anche applicare i criteri di sicurezza in uscita per il cluster e configurare il traffico in uscita in modo che passi attraverso i gateway in uscita.

I criteri di uscita possono mitigare i seguenti attacchi:

  • Attacchi di esfiltrazione di dati.
  • I pod di servizio possono essere sfruttati dagli aggressori se alle loro CVE non vengono applicate le patch. I pod compromessi possono diventare una botnet controllata da utenti malintenzionati per inviare spam o e lanciano attacchi DoS.

I criteri di autorizzazione applicati ai gateway in uscita possono garantire che solo ai servizi autorizzati è consentito inviare traffico a determinati host al di fuori di la rete mesh. Nel frattempo, per il traffico che esce dal mesh, anziché gestire TLS per i singoli sidecar, il protocollo TLS può provenire dai gateway in uscita. Questo fornisce un modo uniforme e più sicuro di origine del traffico TLS, in quanto i certificati client per mTLS possono essere isolati dagli spazi dei nomi in cui durante l'esecuzione delle applicazioni.

Utilizza un cluster privato o i Controlli di servizio VPC per bloccare gli accessi esterni

Oltre ad applicare i criteri di sicurezza in entrata e in uscita, blocca l'accesso esterno utilizzando un cluster privato o Controlli di servizio VPC, ove possibile. Mentre i criteri di sicurezza sono controllati dalla sicurezza mesh amministratori, la configurazione del cluster privato o i Controlli di servizio VPC applicati dagli amministratori della sicurezza dell'organizzazione.

I Controlli di servizio VPC possono essere applicati per definire un perimetro di sicurezza per i servizi al fine di:

  • Impedire ai servizi di accedere a risorse esterne.
  • Impedire agli utenti esterni di accedere ai servizi in un perimetro di sicurezza.

I Controlli di servizio VPC aiutano a difendersi dagli attacchi di esfiltrazione di dati e impediscono agli hacker esterni di accedere ai servizi all'interno di un mesh.

Difesa contro gli attacchi DDoS esterni

Gli attacchi DDoS esterni possono sovraccaricare i gateway di ingresso e i servizi di backend, impedendo la gestione delle richieste legittime. Cloud Armor può essere utilizzato per difendersi dagli attacchi DDoS. Cloud Armor protegge non solo dagli attacchi DDoS non solo a livello di rete (L3 e L4) ma anche dagli attacchi DDoS a livello di applicazione (L7).

Sicurezza per l'amministrazione e l'automazione del mesh

È importante prendere in considerazione la sicurezza per le operazioni amministrative e per qualsiasi automazione che crei intorno alla tua mesh, ad esempio CI/CD. Le seguenti pratiche hanno lo scopo di garantire che la rete mesh possa essere utilizzata in sicurezza senza il rischio di esporre i servizi ad attacchi aggiuntivi.

Segmentare i ruoli utilizzati per le operazioni mesh

Seguendo lo stesso principio del controllo dell'accesso basato sui ruoli, gli utenti di un mesh devono essere classificati in base al loro ruolo. A ogni ruolo deve essere concesso solo l'insieme minimo di privilegi necessari.

Ad esempio, l'insieme di utenti che eseguono i deployment dei servizi non deve avere per l'aggiornamento dei criteri di autenticazione e autorizzazione.

Esistono diverse categorie di operatori. Ad esempio, gli operatori cluster con gli operatori dello spazio dei nomi. È importante impedire l'escalation dei privilegi che potrebbe comportare accesso illecito a risorse non autorizzate.

I criteri RBAC di Kubernetes consentono agli amministratori del mesh di limitare l'accesso alle risorse solo agli utenti autorizzati.

Convalida automaticamente le configurazioni dei criteri

Gli operatori potrebbero configurare erroneamente i criteri di Cloud Service Mesh, il che può comportare gravi incidenti di sicurezza. Per prevenire errori di configurazione e convalidare i criteri di Cloud Service Mesh, gli amministratori mesh possono utilizzare Policy Controller a applicare vincoli sulle configurazioni dei criteri.

Per evitare di riporre troppa fiducia nelle persone che dispongono delle autorizzazioni di aggiornamento Criteri di sicurezza di Cloud Service Mesh e automatizzare la convalida di Cloud Service Mesh gli amministratori della rete mesh devono implementare vincoli su Cloud Service Mesh che utilizzano Policy Controller.

Policy Controller si basa sull'open source Gatekeeper e può essere eseguito come controller di ammissione Kubernetes per negare risorse non valide non applicate o in modalità di controllo, per avvisare gli amministratori che violazioni delle norme. Policy Controller può convalidare automaticamente il deployment delle risorse nel mesh, ad esempio convalidare che le annotazioni di un deployment non aggirino i criteri di Cloud Service Mesh, convalidare che i criteri di Cloud Service Mesh siano come previsto e convalidare che un deployment non includa funzionalità di root (ad esempio NET_ADMIN e NET_RAW).

Policy Controller può anche controllare le risorse Cloud Service Mesh esistenti rispetto ai vincoli per il rilevamento dei criteri configurazioni errate.

Di seguito sono riportati alcuni esempi di applicazione di GKE Enterprise Policy Controller criteri di sicurezza:

La libreria di modelli di vincolo fornito con Policy Controller contiene un insieme di modelli di vincolo che possono per essere utilizzati immediatamente Pacchetto dei vincoli di sicurezza di Cloud Service Mesh applicare best practice specifiche per la sicurezza di Cloud Service Mesh, ad esempio di autenticazione, autorizzazione e traffico. Di seguito sono riportati alcuni vincoli di esempio inclusi nel bundle:

  • Applica la modalità mTLS restrittiva PeerAuthentication a livello di mesh.
  • L'applicazione di tutte le autenticazioni peer non può sovrascrivere la modalità mTLS restrittiva.
  • Applica il livello mesh nega per impostazione predefinita AuthorizationPolicy.
  • Applica il criterio AuthorizationPolicy pattern di sicurezza.
  • Imposta che i sidecar di Cloud Service Mesh vengano sempre iniettati nei carichi di lavoro.

Per gestire eccezioni e situazioni di emergenza, l'amministratore della rete mesh può:

Usa un approccio GitOps con Config Sync per evitare la deviazione della configurazione

La deviazione della configurazione si verifica quando la configurazione dei criteri in un mesh devia dalla fonte di verità. Config Sync può essere utilizzato per evitare la deriva della configurazione.

Applica l'audit logging e il monitoraggio

Gli amministratori della rete mesh devono monitorare quanto segue:

Queste risorse di osservabilità possono essere utilizzate per verificare che la configurazione di sicurezza funzioni come previsto e per monitorare eventuali eccezioni all'applicazione dei criteri di sicurezza. Ad esempio, accesso che non è passato per file collaterali, che non disponeva di credenziali valide, ma ha raggiunto un servizio.

Sebbene il software di osservabilità open source (ad esempio Prometheus) possa essere utilizzato con Cloud Service Mesh, ti consigliamo vivamente di utilizzare la suite operativa di Google Cloud (in precedenza Stackdriver). La soluzione di observability integrata per Google Cloud fornisce logging, raccolta delle metriche, monitoraggio e avvisi, ed è completamente gestita e facile da usare.

Proteggi l'autorità di certificazione per i certificati nel cluster

Per impostazione predefinita Cloud Service Mesh utilizza un'autorità di certificazione (CA) gestita da Google chiamata dell'autorità di certificazione Cloud Service Mesh.

Se utilizzi l'autorità di certificazione (CA) Istio non gestita, che è ospitata Nell'ambito di Istiod, la chiave di firma CA è archiviata in un secret Kubernetes accessibile agli operatori che hanno accesso alla risorsa secret nel istio-system. Si tratta di un rischio, poiché un operatore potrebbe essere in grado di utilizzare la chiave della CA indipendentemente dalla CA di Istiod e potenzialmente firmare i certificati del carico di lavoro in modo indipendente. Esiste anche il rischio che una chiave di firma dell'autorità di certificazione gestita autonomamente possa essere divulgata accidentalmente a causa di un errore operativo.

Per proteggere la chiave di firma CA, l'amministratore del mesh può eseguire l'upgrade del mesh a utilizza Mesh CA o Certificate Authority Service (CA Service), che sono protetti e gestiti da Google (ad esempio, la rotazione della chiave CA). Rispetto a Mesh CA, il servizio CA supporta chiavi di firma per cliente basate su HSM tramite Cloud KMS supportato da Cloud HSM.

Sicurezza dei carichi di lavoro

La sicurezza dei carichi di lavoro protegge da attacchi che compromettono i pod dei carichi di lavoro e poi utilizzare i pod compromessi per lanciare attacchi contro il cluster (ad ad esempio gli attacchi botnet).

Limitare i privilegi del pod

Un pod Kubernetes potrebbe avere privilegi che influiscono su altri pod sul nodo o sul cluster. È importante applicare restrizioni di sicurezza ai pod di carico di lavoro per impedire a un pod compromesso di lanciare attacchi contro il cluster.

Per applicare il principio del privilegio minimo per i carichi di lavoro su un pod:

  • I servizi di cui è stato eseguito il deployment in un mesh dovrebbero essere eseguiti con il minor numero di privilegi possibile possibile.
  • I pod Kubernetes in esecuzione in modalità con privilegi possono manipolare gli stack di rete con altre funzionalità kernel sull'host. GKE Enterprise Policy Controller può essere utilizzato per impedire ai pod di eseguire container con privilegi.
  • Cloud Service Mesh può essere configurato in modo da utilizzare un container di inizializzazione per la configurazione reindirizzamento del traffico di iptables al file collaterale. Ciò richiede che l'utente che esegue i deployment dei carichi di lavoro disponga dei privilegi per il deployment dei contenitori con funzionalità NET_ADMIN e NET_RAW. Per evitare il rischio di eseguire contenitori con privilegi elevati, gli amministratori del mesh possono invece abilitare il plug-in CNI Istio per configurare il reindirizzamento del traffico ai sidecar.

Immagini container sicure

Gli aggressori potrebbero lanciare attacchi sfruttando le immagini container vulnerabili. Gli amministratori devono applicare Autorizzazione binaria per verificare l'integrità delle immagini container e garantire che nel mesh venga eseguito il deployment solo di immagini container attendibili.

Mitiga le vulnerabilità del mesh

  • Container Analysis. Container Analysis può analizzare e rilevare le vulnerabilità nei carichi di lavoro GKE.
  • Gestione delle vulnerabilità ed esposizioni comuni (CVE). Dopo una vulnerabilità rilevato in un'immagine container, gli amministratori della rete mesh devono la vulnerabilità il prima possibile. Per Cloud Service Mesh gestito con piano dati gestito, Google gestisce automaticamente le CVE con patch che influiscono sulle immagini mesh.

Utilizza la federazione delle identità per i carichi di lavoro per GKE per accedere in modo sicuro ai servizi Google

Workload Identity Federation for GKE è il metodo consigliato per consentire ai carichi di lavoro mesh di accedere in sicurezza ai servizi Google. L'alternativa di archiviare una chiave dell'account di servizio in un segreto Kubernetes e utilizzarla per accedere ai servizi Google non è altrettanto sicura a causa dei rischi di fuga di credenziali, escalation dei privilegi, divulgazione di informazioni e non ripudio.

Monitora lo stato di sicurezza tramite dashboard per la sicurezza e telemetria

Un mesh di servizi potrebbe avere eccezioni di sicurezza e potenziali scappatoie. È fondamentale per individuare e monitorare lo stato di sicurezza di una rete mesh, i criteri di sicurezza applicati, le eccezioni di sicurezza e i potenziali le scappatoie nella rete. La dashboard per la sicurezza di GKE Enterprise e la telemetria possono essere utilizzate per visualizzare e monitorare lo stato della sicurezza del mesh.

Telemetria monitora l'integrità e le prestazioni dei servizi in una rete mesh, consentendo agli amministratori di osservare i comportamenti dei servizi (come SLO, traffico, interruzione del servizio, topologia).

La dashboard per la sicurezza di GKE Enterprise analizza e visualizza i criteri di sicurezza Applicati a un carico di lavoro in un mesh di servizi, inclusi i criteri di controllo dell'accesso. (Criteri di rete di Kubernetes, criteri di Autorizzazione binaria e accesso al servizio criteri di controllo) e criteri di autenticazione (mTLS).

Sicurezza per dati utente e credenziali sensibili

Le credenziali o i dati utente sensibili possono essere vulnerabili ad attacchi provenienti da pod o operazioni dannose se sono archiviati nello spazio di archiviazione permanente del cluster, ad esempio utilizzando i secret di Kubernetes o direttamente nei pod. Sono inoltre disponibili vulnerabili agli attacchi di rete se vengono trasferiti sulla rete per l'autenticazione automatica ai servizi.

  • Se possibile, archivia le credenziali e i dati utente sensibili in uno spazio di archiviazione protetto, ad esempio Secret Manager e Cloud KMS.
  • Designa spazi dei nomi separati per i pod Kubernetes che accedono a dati sensibili e definisci i criteri Kubernetes per renderli inaccessibili da altri spazi dei nomi. Segmenta i ruoli utilizzati per le operazioni e applica i confini dello spazio dei nomi.
  • Applica lo scambio di token per impedire l'esfiltrazione di token di lunga durata e con privilegi elevati.

Passaggi successivi