Sicurezza

Questa pagina descrive le funzionalità di sicurezza incluse in GKE su AWS, inclusi tutti i livelli della relativa infrastruttura, e come configurare le funzionalità di sicurezza in base alle tue esigenze.

Panoramica

GKE su AWS offre diverse funzionalità per contribuire a proteggere i tuoi workload, tra cui i contenuti dell'immagine del 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 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.

Responsabilità condivise

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

Autenticazione e autorizzazione

Esegui l'autenticazione in un cluster utente GKE on 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 Kubernetes, utilizza il controllo controllo dell'accesso basato sui ruoli (RBAC) di Kubernetes. RBAC ti consente di creare criteri dettagliati per definire le operazioni e le risorse a cui consenti agli utenti e agli account di servizio di accedere. 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, GKE su AWS disattiva il controllo dell'accesso basato su attributi (ABAC) legacy.

Crittografia

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

Per criptare i dati sensibili nei cluster utente, puoi utilizzare una delle seguenti opzioni:

Kubernetes Secrets

Le risorse Secret di Kubernetes archiviano dati sensibili, come password, token OAuth e chiavi SSH, nei cluster. L'archiviazione di dati sensibili nei secret è più sicura rispetto alla loro archiviazione in testo normale nei ConfigMaps o nelle specifiche dei pod. 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.

Hashicorp Vault

GKE su AWS può utilizzare Hashicorp Vault per proteggere i secret nei cluster utente. Per ulteriori informazioni, consulta Utilizzare 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 dell'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 difendere GKE sul server API di AWS utilizzando i gruppi di sicurezza AWS e le ACL di rete.

Tutte le comunicazioni in GKE su AWS avvengono tramite 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 la comunicazione tra il server API e tutti gli agenti client API Kubernetes interni (kubelet, controller, scheduler). Questa CA è criptata con KMS.
  • La CA del servizio di gestione è criptata con AWS KMS. Viene creato quando esegui anthos-gke init e archiviato nella tua 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 vengono memorizzate nel piano di controllo [nodes]{:.external}. Per i cluster utente, le chiavi vengono memorizzate come segreti Kubernetes nel piano di controllo del servizio di gestione.

L'autenticazione del cluster in GKE su AWS viene gestita da certificati e token di accesso dell'account di servizio. In qualità di amministratore, esegui l'autenticazione al control plane utilizzando il certificato amministrativo per il servizio di gestione (che utilizzi per la creazione iniziale dell'associazione dei ruoli o per scopi di emergenza).

La rotazione dei certificati viene gestita nei seguenti modi:

Sicurezza dei nodi

GKE su AWS esegue il deployment dei carichi di lavoro nei pool di nodi delle 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 insieme di funzionalità di sicurezza moderne e GKE su AWS implementa diverse funzionalità per migliorare la sicurezza dei cluster, tra cui:

  • Set di pacchetti ottimizzati.
  • Kernel Linux personalizzato perGoogle Cloud.
  • Account utente con limitazioni e accesso come utente root disabilitato.

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

Upgrade dei nodi

Dovresti eseguire l'upgrade dei nodi su base regolare. Di tanto in tanto, 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 del cluster utente, viene eseguito l'upgrade del software di ciascun nodo 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 il provisioning, scalare e aggiornare rapidamente i carichi di lavoro basati su container. Questa sezione descrive le tattiche che puoi utilizzare per limitare gli effetti collaterali dell'esecuzione dei contenitori nel cluster e nei Google Cloud servizi.

Limitare i privilegi dei processi dei container dei pod

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

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

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

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

Passaggi successivi