Per questioni di compliance e security, molto spesso è necessario garantire che tutte le immagini di Docker che poi finiranno in un cluster di Kubernetes provengano da container registry "fidati". Tra questi ci possono anche essere alcuni endpoint pubblici, che non richiedono autenticazione.
Vediamo in questa prima fase come poter recuperare le informazioni riguardanti i container registry delle immagini già presenti all'interno di un cluster:
kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}" \ |tr -s '[[:space:]]' '\n' \ |sort \ |uniq -c
Come si può notare dallo script, come prima cosa andiamo a chiedere tramite kubectl di mandarci la lista dei pod disponibili su tutti i namespace, a prescindere dal loro attuale stato di esecuzione. L'output di questa chiamata deve includere tutte le immagini di tutti i container che sono contenuti all'interno di ciascun pod.
Successivamente, mandiamo in pipe l'output per dividere l'output su una riga per immagine e le ordiniamo alfabeticamente, così che sia più semplice leggerne l'output. Poichè diverse immagini (come, ad esempio, potrebbe essere busybox per gli init container) potrebbero essere ripetute, ne facciamo anche un calcolo univoco per raggruppare eventuali valori duplicati.
In questa fase sicuramente non abbiamo protetto il nostro cluster, in alcun modo. Tuttavia, siamo più consapevoli di che cosa ci troviamo all'interno e possiamo prendere decisioni più consapevoli e intraprendere azioni più mirate all'eliminazione di eventuali immagini vulnerabili e provenienti da fonti "non sicure".
In un prossimo script vedremo anche come prevenire il deploy di immagini da container registry non autorizzati.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare HiLo per ottimizzare le insert in un database con Entity Framework
Gestione degli environment per il deploy con un workflow di GitHub
Cache policy su route groups di Minimal API in ASP.NET Core 7
Creare gruppi di client per Event Grid MQTT
Trasformare qualsiasi backend in un servizio GraphQL con Azure API Management
Usare le variabili per personalizzare gli stili CSS
Implementare il throttling in ASP.NET Core
Potenziare Azure AI Search con la ricerca vettoriale
Gestire domini wildcard in Azure Container Apps
Copiare automaticamente le secret tra più repository di GitHub
Reactive form tipizzati con modellazione del FormBuilder in Angular
Utilizzare la session affinity con Azure Container Apps