Google Kubernetes Engine (GKE) utilizza i metadati delle istanze per configurare le macchine virtuali (VM) dei nodi, ma alcuni di questi metadati sono potenzialmente sensibili e devono essere protetti dai carichi di lavoro in esecuzione nel cluster.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti attività:
- Abilita l'API Google Kubernetes Engine. Abilita l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installala e poi
inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima
versione eseguendo il
gcloud components updatecomando. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.
Configurare il account di servizio del nodo
Le credenziali del account di servizio di ogni nodo continuano a essere esposte ai carichi di lavoro. Per impostazione predefinita, i nodi utilizzano il service account predefinito di Compute Engine. Devi configurare un service account con privilegi minimi per i nodi da utilizzare al posto del account di servizio predefinito di Compute Engine. Poi, collega questo account di servizio ai nodi, in modo che un utente malintenzionato non possa aggirare le protezioni dei metadati di GKE utilizzando l'API Compute Engine per accedere direttamente alle istanze VM sottostanti.
Per maggiori informazioni, consulta Utilizzare i service account dei nodi con privilegio minimo minimi.
Per creare un account di servizio del nodo con privilegi minimi, segui questi passaggi:
Crea un nuovo account di servizio IAM (Identity and Access Management) e salva l'indirizzo email in una variabile di ambiente:
gcloud iam service-accounts create NODE_SA_NAME \ --display-name="DISPLAY_NAME" export NODE_SA_EMAIL=$(gcloud iam service-accounts list --format='value(email)' \ --filter='displayName:DISPLAY_NAME')Sostituisci quanto segue:
NODE_SA_NAME: il nome del nuovo service account del nodo.DISPLAY_NAME: il nome visualizzato del nuovo service account.
L'indirizzo email del account di servizio del nodo ha il formato
NODE_SA_NAME@PROJECT_ID.iam.gserviceaccount.com.Configura il account di servizio con i ruoli e le autorizzazioni minimi per eseguire i nodi GKE:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$NODE_SA_EMAIL \ --role=roles/monitoring.metricWriter gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$NODE_SA_EMAIL \ --role=roles/monitoring.viewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$NODE_SA_EMAIL \ --role=roles/logging.logWriterSostituisci
PROJECT_IDcon l'ID progetto Google Cloud .Inoltre, se il cluster esegue il pull di immagini private da Artifact Registry, aggiungi il ruolo
roles/artifactregistry.reader:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$NODE_SA_EMAIL \ --role=roles/artifactregistry.reader
Occultamento dei metadati
L'occultamento dei metadati di GKE impedisce ai pod utente di accedere a
kube-env, che contiene le credenziali kubelet e il
token di identità dell'istanza VM.
L'occultamento dei metadati blocca il traffico dei firewall dai pod utente (pod non in esecuzione su HostNetwork) al server di metadati del cluster, consentendo solo query sicure. Il firewall impedisce ai pod utente di utilizzare le credenziali kubelet per attacchi di escalation dei privilegi o di utilizzare l'identità VM per attacchi di escalation delle istanze.
Workload Identity Federation for GKE sostituisce la necessità di utilizzare l'occultamento dei metadati ed espande le protezioni offerte dall'occultamento dei metadati. In tutte le situazioni, devi utilizzare Workload Identity Federation for GKE anziché l'occultamento dei metadati. Per saperne di più, consulta Informazioni su Workload Identity Federation for GKE.
Per abilitare l'occultamento dei metadati, utilizza l'opzione --workload-metadata=SECURE
ritirata nel tuo
gcloud beta container clusters create comando
o nel tuo
gcloud beta container node-pools create comando.
Limitazioni
L'occultamento dei metadati presenta limitazioni come le seguenti:
- L'occultamento dei metadati protegge solo l'accesso a
kube-enve al token di identità dell'istanza del nodo. - L'occultamento dei metadati non limita l'accesso al service account del nodo .
- L'occultamento dei metadati non limita l'accesso ad altri metadati delle istanze correlate.
- L'occultamento dei metadati non limita l'accesso ad altre API per i metadati legacy.
- L'occultamento dei metadati non limita il traffico dai pod in esecuzione sulla rete host (
hostNetwork: truenella specifica del pod).
Disabilitare le API per i metadati legacy ed eseguire la transizione
Gli endpoint del server di metadati di Compute Engine v0.1 e v1beta1 sono stati ritirati e disattivati il 30 settembre 2020.
Per la pianificazione della disattivazione, consulta v0.1 e v1beta1 ritiro degli endpoint del server di metadati.
Passaggi successivi
- Scopri come eseguire l'autenticazione alle Google Cloud API dai carichi di lavoro GKE.
- Scopri di più su Workload Identity Federation for GKE.
- Scopri di più sulla risoluzione dei problemi di autenticazione di GKE.
- Scopri come rafforzare la sicurezza del cluster.