Sicurezza

Questa pagina descrive le funzionalità di sicurezza incluse in GKE su AWS, incluso ogni livello della sua infrastruttura e come puoi configurare le funzionalità di sicurezza in base alle tue esigenze.

Panoramica

GKE su AWS offre diverse funzionalità per contribuire a proteggere i tuoi carichi di lavoro, tra cui i contenuti dell'immagine container, il runtime del container, la rete del cluster e l'accesso al server API del cluster.

È preferibile adottare un approccio a più livelli per la protezione dei cluster e dei carichi di lavoro. Puoi applicare il principio del privilegio minimo al livello di accesso che fornisci a utenti e carichi di lavoro. Potresti dover scendere a compromessi per garantire il giusto livello di flessibilità e sicurezza.

Responsabilità condivise

Quando utilizzi GKE su AWS, accetti di assumerti determinate responsabilità per i tuoi cluster. Per maggiori informazioni, consulta Responsabilità condivise dei cluster GKE.

autentica e autorizza

Puoi eseguire l'autenticazione su un cluster utente GKE su AWS tramite uno dei seguenti metodi:

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

Per semplificare e ottimizzare ulteriormente la strategia di autenticazione e autorizzazione per Kubernetes Engine, GKE su AWS disabilita il Controllo degli accessi basato su attributi (ABAC) legacy.

Crittografia

Per impostazione predefinita, GKE su AWS cripta i dati in etcd at-rest, i volumi EBS, i secret di Kubernetes e i componenti del piano di controllo con AWS Key Management Service (KMS).

Per criptare i dati sensibili nei cluster utente, puoi utilizzare uno dei seguenti:

Secret di Kubernetes

Le risorse Secret di Kubernetes archiviano nei tuoi cluster dati sensibili come password, token OAuth e chiavi SSH. L'archiviazione dei dati sensibili nei secret è più sicura rispetto all'archiviazione in testo non crittografato ConfigMaps o nelle specifiche dei pod. L'uso dei secret ti consente di controllare come vengono utilizzati i dati sensibili e riduce il rischio di esposizione dei dati a utenti non autorizzati.

Hashicorp Vault

GKE su AWS può utilizzare Hashicorp Vault per proteggere i secret nei cluster utente. Per ulteriori informazioni, consulta Utilizzo di HashiCorp Vault su GKE su AWS.

Sicurezza del piano di controllo

I componenti del piano di controllo includono il servizio di gestione e il server API Kubernetes, lo scheduler, i controller e il database etcd del cluster utente. In GKE su AWS, gli amministratori locali gestiscono i componenti del piano di controllo.

In GKE su AWS, i componenti del piano di controllo vengono eseguiti su AWS. Puoi proteggere GKE sul server API di AWS utilizzando ACL di rete e gruppi di sicurezza AWS.

Tutte le comunicazioni in GKE su AWS avvengono su canali Transport Layer Security (TLS) regolati dalle seguenti autorità di certificazione (CA):

  • 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 utente protegge le comunicazioni tra il server API e tutti i client API Kubernetes interni (kubelet, controller, scheduler). Questa CA è criptata con KMS.
  • La CA del servizio di gestione è criptata con AWS KMS. Viene creata quando esegui anthos-gke init e archiviata nell'area di lavoro Terraform. Quando utilizzi terraform apply per creare il servizio di gestione, la chiave CA viene passata come dati utente AWS EC2 e decriptata da AWS KMS all'avvio del cluster.

Per il servizio di gestione, le chiavi del piano di controllo sono archiviate nel piano di controllo [nodes]{:.external}. Per i cluster utente, le chiavi vengono archiviate come secret di Kubernetes nel piano di controllo del servizio di gestione.

L'autenticazione del cluster in GKE su AWS è gestita da certificati e token di connessione degli account di servizio. In qualità di amministratore, esegui l'autenticazione sul piano di controllo utilizzando il certificato amministrativo per il servizio di gestione (che utilizzerai per la creazione iniziale dell'associazione dei ruoli o per scopi di emergenza).

La rotazione dei certificati viene gestita nei modi seguenti:

Sicurezza dei nodi

GKE su AWS esegue il deployment dei carichi di lavoro su pool di nodi di istanze AWS EC2. Le sezioni seguenti spiegano come utilizzare le funzionalità di sicurezza a livello di nodo in GKE su AWS.

Ubuntu

GKE su AWS utilizza una versione ottimizzata di Ubuntu come sistema operativo su cui eseguire il piano di controllo e i nodi di Kubernetes. Ubuntu include un ricco set di funzionalità di sicurezza moderne e GKE su AWS implementa diverse funzionalità che migliorano la sicurezza per i cluster, tra cui:

  • Set di pacchetti ottimizzati.
  • G kernel Linux personalizzato per Google Cloud.
  • Account utente limitati e accesso root disattivato.

Sono disponibili guide aggiuntive alla sicurezza per Ubuntu, ad esempio:

Upgrade dei nodi

Devi eseguire l'upgrade dei nodi regolarmente. Di tanto in tanto, eventuali problemi di sicurezza durante il runtime del container, Kubernetes stesso o il sistema operativo del nodo potrebbero richiedere un upgrade dei nodi con maggiore urgenza. Quando esegui l'upgrade del cluster utente, il software di ciascun nodo viene aggiornato alle versioni più recenti. Inoltre, l'upgrade dei nodi ruota le credenziali di crittografia.

Protezione dei carichi di lavoro

Kubernetes consente agli utenti di eseguire rapidamente il provisioning, la scalabilità e l'aggiornamento dei carichi di lavoro basati su container. Questa sezione descrive le tattiche che puoi utilizzare per limitare gli effetti collaterali dell'esecuzione dei container sul cluster e sui servizi Google Cloud.

Limitazione dei privilegi del processo per i container dei pod

Limitare i privilegi dei processi containerizzati è importante per la sicurezza del cluster. Puoi impostare le opzioni relative alla sicurezza con il contesto di sicurezza di pod e container. Queste impostazioni ti consentono di modificare le impostazioni di sicurezza dei processi, ad esempio:

  • Utente e gruppo che eseguono il processo.
  • Funzionalità Linux disponibili.
  • Escalation dei privilegi.

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

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

Passaggi successivi