Con la velocità di sviluppo di Kubernetes, spesso vengono introdotte nuove funzionalità di sicurezza da utilizzare. Questo documento descrive come proteggere i cluster Google Distributed Cloud.
Questo documento dà la priorità alle mitigazioni importanti che richiedono il tuo intervento al momento della creazione del cluster. Le funzionalità meno critiche, le impostazioni sicure per impostazione predefinita e quelle che possono essere attivate dopo la creazione del cluster sono menzionate più avanti nel documento. Per una panoramica generale degli argomenti sulla sicurezza, consulta Sicurezza.
Elenco di controllo
Il seguente elenco di controllo per il deployment evidenzia le best practice per la protezione del deployment della piattaforma dei cluster GKE. Per ulteriori informazioni su ciascuna best practice, consulta le sezioni di questo documento.
Elenco di controllo per il deployment | Descrizione |
---|---|
Controllo di identità e accesso | Utilizza i privilegi dell'account vSphere: Service account Google Cloud sicuri: Configura OpenID Connect (OIDC): Utilizza gli spazi dei nomi e RBAC di Kubernetes per limitare l'accesso: |
Protezione dei dati | Cripta le macchine virtuali vSphere: Gestisci i secret: |
Protezione di rete | Limita l'accesso di rete al control plane e ai nodi: Utilizza i criteri di rete per limitare il traffico: |
Sicurezza dichiarativa | Utilizza Policy Controller: |
Manutenzione | Upgrade: Monitora i bollettini sulla sicurezza: |
Monitoraggio e logging | Imposta le opzioni per la registrazione: |
Controllo dell'accesso e dell'identità
Questa sezione fornisce informazioni sul controllo dell'accesso ai cluster.
Utilizzare i privilegi dell'account vSphere
L'account utente vCenter che utilizzi per installare Google Distributed Cloud deve disporre di privilegi sufficienti. Ad esempio, un account utente a cui è assegnato il ruolo di amministratore di vCenter dispone dei privilegi per l'accesso completo a tutti gli oggetti vCenter e fornisce a un amministratore del cluster Google Distributed Cloud l'accesso completo.
È consigliabile applicare il principio del privilegio minimo, concedendo solo i privilegi necessari per installare correttamente {product_name}}. Abbiamo predefinito il set minimo di privilegi necessari per eseguire l'installazione, nonché i comandi necessari per concedere queste autorizzazioni.
Proteggere i service account Google Cloud
Google Distributed Cloud richiede diversi Google Cloud service accounts. Durante l'installazione, associ i ruoli Identity and Access Management a questi service account. Questi ruoli concedono privilegi specifici agli account di servizio all'interno del tuo progetto. Alcuni service account possono essere generati automaticamente durante l'installazione.
Configura l'autenticazione per gli utenti del cluster
Per configurare l'autenticazione utente per il cluster, puoi utilizzare OpenID Connect (OIDC) o Lightweight Directory Access Protocol (LDAP).
Per maggiori informazioni, vedi Servizio di identità GKE.
Utilizza gli spazi dei nomi e RBAC di Kubernetes per limitare l'accesso
Per concedere ai team l'accesso minimo a Kubernetes, crea spazi dei nomi Kubernetes o cluster specifici per l'ambiente. Assegna centri di costo ed etichette appropriate a ogni spazio dei nomi per la responsabilità e il chargeback. Concedi agli sviluppatori solo il livello di accesso agli spazi dei nomi necessario per eseguire il deployment e gestire le applicazioni, soprattutto in produzione.
Mappa le attività che gli utenti devono completare rispetto al cluster e definisci le autorizzazioni necessarie per completare ogni attività. Per concedere autorizzazioni a livello di cluster e spazio dei nomi, utilizza RBAC di Kubernetes.
Oltre alle autorizzazioni per i Google Cloud service account utilizzati per installare Google Distributed Cloud, IAM non si applica ai cluster Google Distributed Cloud.
Per ulteriori informazioni, leggi la seguenti documentazione:
Protezione dei dati
Questa sezione fornisce informazioni sulla protezione dei dati.
Criptare le macchine virtuali vSphere
I nodi del cluster Google Distributed Cloud vengono eseguiti su macchine virtuali (VM) nel tuo cluster vSphere. Google consiglia vivamente di criptare tutti i dati at-rest. Per farlo su vSphere, segui la guida alla configurazione e al rafforzamento della sicurezza di VMware vSphere 7 e le best practice per la crittografia delle VM.
Questa operazione deve essere eseguita prima dell'installazione di Google Distributed Cloud.
Gestire i secret
Per fornire un ulteriore livello di protezione per i dati sensibili, come i secret Kubernetes archiviati in etcd, configura un gestore dei secret integrato con i cluster Google Distributed Cloud.
Se esegui carichi di lavoro in più ambienti, potresti preferire una soluzione che funzioni sia per Google Kubernetes Engine che per Google Distributed Cloud. Se scegli di utilizzare un gestore dei segreti esterno, ad esempio HashiCorp Vault, configuralo prima di integrare i tuoi cluster Google Distributed Cloud.
Hai a disposizione diverse opzioni per la gestione dei secret:
- Puoi utilizzare i secret di Kubernetes in modo nativo in Google Distributed Cloud. Prevediamo che i cluster utilizzino la crittografia vSphere per le VM come descritto in precedenza, che fornisce una protezione di base della crittografia dei secret inattivi. Per impostazione predefinita, i secret non vengono ulteriormente criptati.
- Puoi utilizzare un gestore dei secret esterno, ad esempio HashiCorp Vault. Puoi eseguire l'autenticazione su HashiCorp utilizzando un account di servizio Kubernetes o un service account Google Cloud .
Protezione della rete
Questa sezione fornisce informazioni sulla protezione della rete.
Limita l'accesso di rete al control plane e ai nodi
Limita l'esposizione a internet del control plane e dei nodi del cluster. Queste scelte non possono essere modificate dopo la creazione del cluster. Per impostazione predefinita, i nodi del cluster Google Distributed Cloud vengono creati utilizzando indirizzi RFC 1918 ed è consigliabile non modificarli. Implementa regole firewall nella tua rete on-premise per limitare l'accesso al piano di controllo.
Utilizzare i criteri di rete per limitare il traffico
Per impostazione predefinita, tutti i servizi in un cluster Google Distributed Cloud possono comunicare tra loro. Per informazioni sul controllo della comunicazione da servizio a servizio in base alle esigenze dei tuoi workload, consulta le sezioni seguenti.
Limitare l'accesso di rete ai servizi rende molto più difficile per gli autori di attacchi spostarsi lateralmente all'interno del cluster e offre ai servizi una protezione contro il denial of service accidentale o intenzionale. Esistono due modi consigliati per controllare il traffico:
- Per controllare il traffico L7 verso gli endpoint delle tue applicazioni, utilizza Istio. Scegli questa opzione se ti interessano il bilanciamento del carico, l'autorizzazione del servizio, la limitazione, la quota e le metriche.
- Per controllare il traffico L4 tra i pod, utilizza i criteri di rete di Kubernetes. Scegli questa opzione se cerchi le funzionalità di controllo dell'accesso di base gestite da Kubernetes.
Puoi abilitare sia Istio che i criteri di rete Kubernetes dopo aver creato i cluster Google Distributed Cloud. Puoi utilizzarli insieme, se necessario.
Per ulteriori informazioni, leggi la seguenti documentazione:
Sicurezza dichiarativa
Questa sezione fornisce consigli per proteggere i cluster.
Utilizzare Policy Controller
I controller di ammissione� di Kubernetes sono plug-in che regolano e applicano le modalità di utilizzo di un cluster Kubernetes. I controller di ammissione sono una parte importante dell'approccio di difesa in profondità per proteggere il cluster.
La best practice è utilizzare Policy Controller. Policy Controller utilizza il framework di vincoli OPA per descrivere e applicare i criteri come CRD. I vincoli che applichi al tuo cluster sono definiti nei modelli di vincoli, che vengono implementati nei tuoi cluster.
Per informazioni su come utilizzare i vincoli di Policy Controller per ottenere molte delle stesse protezioni di PodSecurityPolicies, con la possibilità aggiuntiva di testare i criteri prima di applicarli, consulta Utilizzo dei vincoli per applicare la sicurezza dei pod.
Per ulteriori informazioni, leggi la seguenti documentazione:
Limitare la capacità dei workload di automodificarsi
Alcuni carichi di lavoro Kubernetes, in particolare quelli di sistema, hanno l'autorizzazione per modificarsi autonomamente. Ad esempio, alcuni carichi di lavoro vengono scalati automaticamente in verticale. Sebbene comoda, questa operazione può consentire a un malintenzionato che ha già compromesso un nodo di ottenere privilegi più elevati nel cluster. Ad esempio, un malintenzionato potrebbe fare in modo che un workload sul nodo venga eseguito come un account di servizio con più privilegi che esiste nello stesso spazio dei nomi.
Idealmente, ai workload non dovrebbe essere concessa l'autorizzazione a modificarsi. Quando è necessaria l'automodifica, puoi limitare le autorizzazioni applicando i vincoli di Gatekeeper o Policy Controller, ad esempio NoUpdateServiceAccount dalla libreria open source Gatekeeper, che fornisce diverse norme di sicurezza utili.
Quando implementi i criteri, in genere è necessario consentire ai controller che
gestiscono il ciclo di vita del cluster di bypassare i criteri e le pipeline di logging e
monitoraggio. Ciò è necessario affinché i controller possano apportare modifiche
al cluster, ad esempio applicare gli upgrade del cluster. Ad esempio, se implementi
il criterio NoUpdateServiceAccount
su Google Distributed Cloud, devi impostare i
seguenti parametri in Constraint
:
parameters:
allowedGroups:
- system:masters
allowedUsers:
- system:serviceaccount:kube-system:monitoring-operator
- system:serviceaccount:kube-system:stackdriver-operator
- system:serviceaccount:kube-system:metrics-server-operator
- system:serviceaccount:kube-system:logmon-operator
Manutenzione
Questa sezione fornisce informazioni sulla manutenzione dei cluster.
Esegui l'upgrade di Google Distributed Cloud
Kubernetes introduce regolarmente nuove funzionalità di sicurezza e fornisce patch di sicurezza.
Sei responsabile dell'aggiornamento dei cluster Google Distributed Cloud. Per ogni release, consulta le note di rilascio. Inoltre, pianifica di eseguire l'aggiornamento alle nuove patch ogni mese e alle versioni secondarie ogni tre mesi. Scopri come eseguire l'upgrade dei cluster.
Sei anche responsabile dell'upgrade e della protezione dell'infrastruttura vSphere:
- Stabilisci una procedura per eseguire tempestivamente l'applicazione di patch e aggiornamenti delle tue VM
- Tieniti al corrente con gli ultimi avvisi di sicurezza di VMware
- Segui le indicazioni sull'applicazione di patch agli host
Monitorare i bollettini sulla sicurezza
Il team di sicurezza GKE pubblica bollettini sulla sicurezza per le vulnerabilità di gravità elevata e critica.
Questi bollettini seguono uno schema comune di numerazione delle vulnerabilità e sono collegati dalla pagina principale dei bollettini e dalle note di rilascio di Google Distributed Cloud. Google Cloud Google Cloud Ogni pagina del bollettino sulla sicurezza ha un feed RSS a cui gli utenti possono iscriversi per ricevere aggiornamenti.
Quando è necessaria un'azione del cliente per risolvere queste vulnerabilità critiche e gravi, Google contatta i clienti via email. Inoltre, Google potrebbe contattare i clienti con contratti di assistenza anche tramite i canali di assistenza.
Per ulteriori informazioni, leggi la seguenti documentazione:
Monitoraggio e logging
Google Distributed Cloud include diverse opzioni per il logging e il monitoraggio dei cluster, tra cui servizi gestiti basati sul cloud, strumenti open source e compatibilità con soluzioni commerciali di terze parti convalidate:
- Cloud Logging e Cloud Monitoring, abilitati da agenti in-cluster deployati con Google Distributed Cloud
- Configurazioni convalidate con soluzioni di terze parti
Qualunque sia la soluzione di logging che scegli in base ai requisiti aziendali, ti consigliamo vivamente di registrare gli eventi e gli avvisi pertinenti in un servizio SIEM (Security Information and Event Management) centralizzato per la gestione degli incidenti di sicurezza.
Per ulteriori informazioni, leggi la seguenti documentazione:
- Logging e monitoraggio
- Utilizzo di logging e monitoraggio
- Logging e monitoraggio delle applicazioni
- Monitoraggio di Google Distributed Cloud con Elastic Stack
- Trasmetti i log da Google Cloud a Splunk