
kubeaudit ti aiuta a verificare i tuoi cluster Kubernetes rispetto ai comuni controlli di sicurezza.
Ora è obbligatorio per i cluster eseguire Kubernetes >=1.19.
Le etichette di override con annotazioni
kubernetes.ionon registrate verranno deprecate. Presto sarà obbligatorio utilizzare invecekubeaudit.io. Fai riferimento a questa discussione per ulteriori dettagli.
Kubeaudit è in programma per la deprecazione entro ottobre 2024.
Stiamo cercando attivamente manutentori interessati a prendere in carico la gestione di questo progetto. Se sei appassionato di continuarne lo sviluppo e la manutenzione, contattaci.
Per gli utenti che cercano alternative, consigliamo di passare a Kubebench, che offre funzionalità simili ed è attivamente mantenuto.
Grazie alla comunità per i contributi e il supporto.
kubeaudit è uno strumento da riga di comando e un pacchetto Go per eseguire audit dei cluster Kubernetes per vari
problemi di sicurezza, come:
tldr. kubeaudit garantisce di distribuire container sicuri!
Per utilizzare kubeaudit come pacchetto Go, consulta la documentazione del pacchetto.
Il resto di questo README si concentra su come utilizzare kubeaudit come strumento da riga di comando.
brew install kubeaudit
Kubeaudit ha versioni ufficiali benedette e stabili: Versioni ufficiali
Il branch main potrebbe avere funzionalità più recenti rispetto alle versioni stabili. Se hai bisogno di una funzionalità più recente non ancora inclusa in una release, assicurati di usare l'ultimo Go ed esegui:
go get -v github.com/Shopify/kubeaudit
Inizia a usare kubeaudit con l'Avvio Rapido o visualizza tutti i comandi supportati.
Prerequisito: kubectl v1.12.0 o successivo
Con kubectl v1.12.0 è stata introdotta la facile possibilità di plug-in di funzioni esterne, kubeaudit può essere invocato come kubectl audit in due modi:
make plugin e avendo $GOPATH/bin disponibile nel tuo PATH.oppure
kubectl-audit e rendendolo disponibile nel tuo PATH.Non rilasciamo più immagini su Docker Hub (da quando Docker Hub ha ritirato le organizzazioni Free Team). Per il momento, le vecchie immagini sono ancora disponibili ma potrebbero smettere di esserlo in qualsiasi momento. Presto inizieremo a pubblicare immagini sul registro dei container di Github.
Per eseguire kubeaudit come job nel tuo cluster, consulta Esecuzione di kubeaudit in un cluster.
kubeaudit ha tre modalità:
Se viene fornito un file manifest Kubernetes tramite il flag -f/--manifest, kubeaudit eseguirà l'audit del file manifest.
Esempio di comando:
kubeaudit all -f "/path/to/manifest.yml"
Esempio di output:
$ kubeaudit all -f "internal/test/fixtures/all_resources/deployment-apps-v1.yml"
---------------- Results for ---------------
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment
namespace: deployment-apps-v1
--------------------------------------------
-- [error] AppArmorAnnotationMissing
Message: AppArmor annotation missing. The annotation 'container.apparmor.security.beta.kubernetes.io/container' should be added.
Metadata:
Container: container
MissingAnnotation: container.apparmor.security.beta.kubernetes.io/container
-- [error] AutomountServiceAccountTokenTrueAndDefaultSA
Message: Default service account with token mounted. automountServiceAccountToken should be set to 'false' or a non-default service account should be used.
-- [error] CapabilityShouldDropAll
Message: Capability not set to ALL. Ideally, you should drop ALL capabilities and add the specific ones you need to the add list.
Metadata:
Container: container
Capability: AUDIT_WRITE
...
Se non vengono trovati errori con una gravità minima specificata, viene restituito quanto segue:
All checks completed. 0 high-risk vulnerabilities found
La modalità manifesto supporta anche la correzione automatica di tutti i problemi di sicurezza utilizzando il comando autofix:
kubeaudit autofix -f "/path/to/manifest.yml"
Per scrivere il manifest corretto in un nuovo file invece di modificare il file sorgente, usa il flag -o/--output.
kubeaudit autofix -f "/path/to/manifest.yml" -o "/path/to/fixed"
Per correggere un manifest in base a regole personalizzate specificate in un file di configurazione di kubeaudit, usa il flag -k/--kconfig.
kubeaudit autofix -k "/path/to/kubeaudit-config.yml" -f "/path/to/manifest.yml" -o "/path/to/fixed"
Kubeaudit può rilevare se è in esecuzione all'interno di un container in un cluster. In tal caso, tenterà di eseguire l'audit di tutte le risorse Kubernetes in quel cluster:
kubeaudit all
Kubeaudit tenterà di connettersi a un cluster utilizzando il file kubeconfig locale ($HOME/.kube/config). È possibile specificare una posizione diversa per il kubeconfig usando il flag --kubeconfig. Per specificare un contesto del kubeconfig, usa il flag -c/--context.
kubeaudit all --kubeconfig "/path/to/config" --context my_cluster
Per maggiori informazioni sui file di configurazione di Kubernetes, consulta https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/
Kubeaudit produce risultati con tre livelli di gravità:
Error: Un problema di sicurezza o una configurazione Kubernetes non validaWarning: Una raccomandazione di buona praticaInfo: Informativo, nessuna azione richiesta. Include risultati che sono sovrascrittiIl livello di gravità minimo può essere impostato usando il flag --minSeverity/-m.
Di default kubeaudit restituisce i risultati in modo leggibile dall'uomo. Se l'output deve essere ulteriormente elaborato, può essere impostato per produrre JSON usando il flag --format json. Per produrre risultati come log (il precedente default) usa --format logrus. Alcuni formati di output includono colori per rendere i risultati più facili da leggere in un terminale. Per disabilitare i colori (ad esempio, se stai inviando l'output a un file di testo), puoi usare il flag --no-color.
Puoi generare un report kubeaudit in SARIF usando il flag --format sarif. Per scrivere i risultati SARIF in un file, puoi reindirizzare l'output con >. Per esempio:
kubeaudit all -f path-to-my-file.yaml --format="sarif" > example.sarif