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
Assegnare un valore di default a un parametro di una lambda in C#
Criptare la comunicazione con mTLS in Azure Container Apps
Sostituire la GitHub Action di login su private registry
Semplificare il deployment di siti statici con Azure Static Web App
Miglioramenti nelle performance di Angular 16
Utilizzare la session affinity con Azure Container Apps
Configurare dependabot per aggiornare le dipendenze di terze parti con GitHub Actions
Usare una container image come runner di GitHub Actions
Migrate and Modernize your .NET Applications on Azure
Miglioramenti nell'accessibilità con Angular CDK
Trasformare qualsiasi backend in un servizio GraphQL con Azure API Management
Sfruttare lo stream rendering per le pagine statiche di Blazor 8