
kubeaudit vous aide à auditer vos clusters Kubernetes par rapport aux contrôles de sécurité courants
Il est désormais nécessaire que les clusters utilisent Kubernetes >= 1.19.
Les labels de substitution avec des annotations
kubernetes.ionon enregistrées seront dépréciés. Il deviendra bientôt obligatoire d'utiliserkubeaudit.ioà la place. Référez-vous à cette discussion pour plus de contexte.
Kubeaudit est prévu pour être déprécié d'ici octobre 2024.
Nous recherchons activement des mainteneurs intéressés pour reprendre la direction de ce projet. Si vous êtes passionné par la poursuite de son développement et de sa maintenance, veuillez nous contacter.
Pour les utilisateurs à la recherche d'alternatives, nous recommandons de passer à Kubebench, qui offre des fonctionnalités similaires et est activement maintenu.
Merci à la communauté pour ses contributions et son soutien.
kubeaudit est un outil en ligne de commande et un package Go permettant d'auditer les clusters Kubernetes pour diverses préoccupations de sécurité, telles que :
tl;dr. kubeaudit garantit que vous déployez des conteneurs sécurisés !
Pour utiliser kubeaudit en tant que package Go, consultez la documentation du package.
Le reste de ce README se concentre sur l'utilisation de kubeaudit en tant qu'outil en ligne de commande.
brew install kubeaudit
Kubeaudit propose des versions officielles validées et stables : Versions officielles
La branche principale (main) peut contenir des fonctionnalités plus récentes que les versions stables. Si vous avez besoin d'une fonctionnalité plus récente non encore incluse dans une version, assurez-vous d'utiliser la dernière version de Go et exécutez la commande suivante :
go get -v github.com/Shopify/kubeaudit
Commencez à utiliser kubeaudit avec le Démarrage rapide ou consultez toutes les commandes prises en charge.
Prérequis : kubectl v1.12.0 ou ultérieur
Avec kubectl v1.12.0 introduisant une pluggabilité facile des fonctions externes, kubeaudit peut être invoqué via kubectl audit en
make plugin et en ayant $GOPATH/bin disponible dans votre PATH.ou
kubectl-audit et en le rendant disponible dans votre PATH.Nous ne publions plus d'images sur Docker Hub (depuis que Docker Hub a abandonné les organisations Free Team). Pour l'instant, les anciennes images sont toujours disponibles mais pourraient cesser de l'être à tout moment. Nous commencerons bientôt à publier des images dans le registre de conteneurs Github.
Pour exécuter kubeaudit en tant que tâche dans votre cluster, consultez Exécuter kubeaudit dans un cluster.
kubeaudit a trois modes :
Si un fichier manifeste Kubernetes est fourni à l'aide du drapeau -f/--manifest, kubeaudit auditera ce fichier manifeste.
Exemple de commande :
kubeaudit all -f "/path/to/manifest.yml"
Exemple de sortie :
$ kubeaudit all -f "internal/test/fixtures/all_resources/deployment-apps-v1.yml"
---------------- Résultats pour ---------------
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment
namespace: deployment-apps-v1
--------------------------------------------
-- [error] AppArmorAnnotationMissing
Message: Annotation AppArmor manquante. L'annotation 'container.apparmor.security.beta.kubernetes.io/container' doit être ajoutée.
Metadata:
Container: container
MissingAnnotation: container.apparmor.security.beta.kubernetes.io/container
-- [error] AutomountServiceAccountTokenTrueAndDefaultSA
Message: Compte de service par défaut avec token monté. automountServiceAccountToken doit être défini sur 'false' ou un compte de service non par défaut doit être utilisé.
-- [error] CapabilityShouldDropAll
Message: Capacité non définie sur ALL. Idéalement, vous devriez supprimer toutes les capacités et ajouter celles dont vous avez besoin dans la liste d'ajout.
Metadata:
Container: container
Capability: AUDIT_WRITE
...
Si aucune erreur d'une sévérité minimale donnée n'est trouvée, le message suivant est renvoyé :
Toutes les vérifications terminées. 0 vulnérabilités à haut risque trouvées
Le mode manifeste prend également en charge la correction automatique de tous les problèmes de sécurité à l'aide de la commande autofix :
kubeaudit autofix -f "/path/to/manifest.yml"
Pour écrire le manifeste corrigé dans un nouveau fichier au lieu de modifier le fichier source, utilisez le drapeau -o/--output.
kubeaudit autofix -f "/path/to/manifest.yml" -o "/path/to/fixed"
Pour corriger un manifeste en fonction de règles personnalisées spécifiées dans un fichier de configuration kubeaudit, utilisez le drapeau -k/--kconfig.
kubeaudit autofix -k "/path/to/kubeaudit-config.yml" -f "/path/to/manifest.yml" -o "/path/to/fixed"
Kubeaudit peut détecter s'il s'exécute dans un conteneur au sein d'un cluster. Si c'est le cas, il essaiera d'auditer toutes les ressources Kubernetes de ce cluster :
kubeaudit all
Kubeaudit essaiera de se connecter à un cluster en utilisant le fichier kubeconfig local ($HOME/.kube/config). Un autre emplacement du kubeconfig peut être spécifié à l'aide du drapeau --kubeconfig. Pour spécifier un contexte du kubeconfig, utilisez le drapeau -c/--context.
kubeaudit all --kubeconfig "/path/to/config" --context my_cluster
Pour plus d'informations sur les fichiers de configuration Kubernetes, consultez https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/
Kubeaudit produit des résultats avec trois niveaux de sévérité :
Error : Un problème de sécurité ou une configuration Kubernetes invalideWarning : Une recommandation de bonne pratiqueInfo : Informationnel, aucune action requise. Cela inclut les résultats qui sont annulésLe niveau de sévérité minimal peut être défini à l'aide du drapeau --minSeverity/-m.