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
Gestire domini wildcard in Azure Container Apps
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Creare una libreria CSS universale: Cards
Effettuare il refresh dei dati di una QuickGrid di Blazor
Migrare una service connection a workload identity federation in Azure DevOps
Disabilitare automaticamente un workflow di GitHub
Eseguire le GitHub Actions offline
Migliora la resilienza delle applicazioni con .NET e Azure Container Apps
Sfruttare i KeyedService in un'applicazione Blazor in .NET 8
Creare una libreria CSS universale: Clip-path
Cancellare una run di un workflow di GitHub
Ordine e importanza per @layer in CSS