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
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Utilizzare una qualunque lista per i parametri di tipo params in C#
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Creare una libreria CSS universale: Clip-path
Utilizzare un numero per gestire la concorrenza ottimistica con SQL Server ed Entity Framework
Migliorare l'organizzazione delle risorse con Azure Policy
Creare una libreria CSS universale: i bottoni
Eseguire i worklow di GitHub su runner potenziati
Gestire gli accessi con Token su Azure Container Registry
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Migliorare la sicurezza dei prompt con Azure AI Studio