Sicurezza

In questa pagina vengono descritte le funzionalità di sicurezza incluse in Google Distributed Cloud (solo software) per VMware, inclusi ogni livello dell'infrastruttura e come puoi configurare queste funzionalità di sicurezza in base alle tue esigenze.

Panoramica

Google Distributed Cloud (solo software) per VMware offre diverse funzionalità per aiutarti a proteggere i tuoi carichi di lavoro, inclusi i contenuti dell'immagine del contenitore, il runtime del contenitore, la rete del cluster e l'accesso al server API del cluster.

È meglio adottare un approccio a più livelli per proteggere i cluster e i carichi di lavoro. Puoi applicare il principio del privilegio minimo al livello di accesso fornito agli utenti e ai carichi di lavoro. Potresti dover fare dei compromessi per consentire il giusto livello di flessibilità e sicurezza.

Autenticazione e autorizzazione

Esegui l'autenticazione ai tuoi cluster utilizzando OpenID Connect (OIDC) o un token dell'account di servizio Kubernetes tramite la console Cloud.

Per configurare un accesso più granulare alle risorse Kubernetes a livello di cluster o all'interno degli spazi dei nomi Kubernetes, utilizza il controllo degli accessi basato sui ruoli (RBAC) di Kubernetes. RBAC ti consente di creare criteri dettagliati che definiscono le operazioni e le risorse a cui vuoi consentire l'accesso a utenti e account servizio. Con il RBAC, puoi controllare l'accesso per qualsiasi identità convalidata fornita.

Per semplificare e snellire ulteriormente la strategia di autenticazione e autorizzazione per Kubernetes Engine, Google Distributed Cloud disattiva il controllo dell'accesso basato sugli attributi (ABAC) precedente.

Sicurezza del piano di controllo

I componenti del piano di controllo includono il server API Kubernetes, lo scheduler, i controller e il database etcd in cui è persistente la configurazione Kubernetes. mentre in GKE I componenti del piano di controllo Kubernetes sono gestiti e gestiti Google, gli amministratori locali gestiscono i componenti del piano di controllo Google Distributed Cloud.

In Google Distributed Cloud, i componenti del piano di controllo vengono eseguiti all'interno rete aziendale. Puoi proteggere il server API Kubernetes utilizzando dai firewall e dai criteri di rete aziendali esistenti. Puoi anche assegnare indirizzo IP interno al server API e limitare l'accesso all'indirizzo.

Tutte le comunicazioni in Google Distributed Cloud avvengono tramite canali TLS, che regolato da tre autorità di certificazione (CA): etcd, cluster e org:

  • La CA etcd protegge la comunicazione dal server API alle repliche etcd e anche il traffico tra le repliche etcd. Questa CA è autofirmata.
  • La CA del cluster protegge la comunicazione tra il server API e tutti i client API Kubernetes interni (kubelet, controller, scheduler). Questa CA è autofirmata.
  • La CA dell'organizzazione è una CA esterna utilizzata per gestire l'API Kubernetes utenti. Sei tu a gestire questa CA.

Per i piani di controllo amministrativi, le chiavi vengono memorizzate sul piano di controllo node. Per i cluster utente, le chiavi vengono memorizzate come segreti Kubernetes nel piano di controllo dell'amministratore. Il server API è configurato con un certificato fornito dall'utente firmato dall'autorità di certificazione dell'organizzazione. Il server API utilizza il nome del server Indicazione (SNI) per determinare se utilizzare la chiave firmata dalla CA del cluster la chiave firmata dalla CA dell'organizzazione.

L'autenticazione del cluster è gestita da certificati e connessione dell'account di servizio di token. In qualità di amministratore, puoi eseguire l'autenticazione al piano di controllo utilizzando OIDC, o con il certificato amministrativo (che utilizzerai per l'associazione iniziale del ruolo creazione o per finalità di emergenza).

La rotazione dei certificati viene gestita nei seguenti modi:

  • Per il server API, i piani di controllo e i nodi, i certificati vengono creati o alternati a ogni upgrade.
  • Le CA possono essere ruotate raramente o su richiesta.

Sicurezza dei nodi

Google Distributed Cloud esegue il deployment dei carichi di lavoro in istanze VMware, che sono collegate ai cluster come nodi. Le sezioni riportate di seguito mostrano come utilizzare le funzionalità di sicurezza a livello di nodo a tua disposizione.

Ubuntu

Google Distributed Cloud utilizza una versione ottimizzata di Ubuntu come il sistema operativo su cui eseguire il piano di controllo e i nodi Kubernetes. Ubuntu include un ampio insieme di funzionalità di sicurezza moderne e Google Distributed Cloud implementa diverse funzionalità per migliorare la sicurezza dei cluster, tra cui:

Sono disponibili altre guide sulla sicurezza per Ubuntu, ad esempio:

Upgrade dei nodi

Dovresti eseguire l'upgrade dei nodi regolarmente. Di tanto in tanto, i problemi di sicurezza nel runtime del container, in Kubernetes stesso o nel sistema operativo del nodo potrebbero richiedere l'upgrade dei nodi in modo più urgente. Quando esegui l'upgrade viene eseguito l'upgrade del software di ciascun nodo alle versioni più recenti.

Protezione dei carichi di lavoro

Kubernetes consente agli utenti di eseguire rapidamente il provisioning, la scalabilità e l'aggiornamento carichi di lavoro con scale out impegnativi. Questa sezione descrive le tattiche che gli amministratori e gli utenti possono utilizzare per limitare la capacità dei contenitori in esecuzione di influire su altri contenitori nel cluster, sugli host su cui vengono eseguiti e sui servizi Google Cloud abilitati nel progetto.

Limitare i privilegi dei processi dei container dei pod

Limitare i privilegi dei processi containerizzati è importante per l'infrastruttura la sicurezza del tuo cluster. Kubernetes Engine ti consente di impostare opzioni relative alla sicurezza tramite il contesto di sicurezza sia sui pod che sui container. Queste impostazioni ti consentono di modificare le impostazioni di sicurezza delle tue procedure, ad esempio:

  • Utente e gruppo da eseguire.
  • Funzionalità Linux disponibili.
  • Escalation dei privilegi.

Il sistema operativo nodo predefinito, Ubuntu, applica il valore predefinito Docker AppArmor criteri di sicurezza a tutti i container avviati da Kubernetes. Puoi visualizzare del profilo su GitHub. Tra le altre cose, il profilo nega ai contenitori le seguenti funzionalità:

  • Scrittura nei file direttamente in una directory ID di processo (/proc/).
  • Scrittura su file non in /proc/.
  • Scrittura in file in /proc/sys diversi da /proc/sys/kernel/shm*.
  • Montaggio dei file system.

Audit logging

Kubernetes Audit Logging consente agli amministratori di conservare, eseguire query, elaborare e creare avvisi sugli eventi che si verificano nei tuoi ambienti Google Distributed Cloud. Gli amministratori possono utilizzare le informazioni registrate per eseguire analisi forensi, invio di avvisi in tempo reale o per catalogare in che modo e da chi viene utilizzato un parco di cluster Kubernetes Engine.

Per impostazione predefinita, Google Distributed Cloud registra l'attività di amministrazione dei log. Se vuoi, puoi anche registrare gli eventi di accesso ai dati, a seconda dei tipi di operazioni che ti interessa esaminare.

L'agente Connect comunica solo con il server API locale in esecuzione on-premise e ogni cluster deve avere il proprio set di audit log. Tutte le azioni svolte dagli utenti dall'interfaccia utente tramite Connect vengono registrate da questo cluster.

Crittografia

Se i cluster e i carichi di lavoro si connettono in modo sicuro ai servizi Google Cloud tramite Cloud VPN, puoi utilizzare Cloud Key Management Service (Cloud KMS) per la gestione delle chiavi. Cloud KMS è un servizio di gestione Key Management Service che consente di gestire chiavi di crittografia per i tuoi servizi. Puoi generare, utilizzare, ruotare ed eliminare chiavi di crittografia AES256, RSA 2048, RSA 3072, RSA 4096, EC P256 ed EC P384. Cloud KMS è integrato con Identity and Access Management (IAM) e audit logging di Cloud in modo da gestire le autorizzazioni per le singole chiavi e monitorarne l'utilizzo. Utilizza Cloud KMS per proteggere i secret e altri dati sensibili che è necessario archiviare. Altrimenti, puoi scegliere di utilizzare una delle seguenti opzioni: alternative:

  • Kubernetes Secrets
  • Hashicorp Vault
  • HSM di rete Thales Luna
  • Modulo di sicurezza hardware (HSM) di Google Cloud

Kubernetes Secrets

Le risorse Secret di Kubernetes archiviano dati sensibili, come password, token OAuth e chiavi SSH, nei cluster. L'archiviazione dei dati sensibili nei secret più sicuro rispetto all'archiviazione in testo non crittografato ConfigMaps o nel pod specifiche. L'utilizzo dei secret ti consente di controllare il modo in cui vengono utilizzati i dati sensibili e di ridurre il rischio di esporli a utenti non autorizzati.