Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
kubeaudit — kubeaudit helps you audit your Kubernetes clusters against common security controls | Kitploit
Outils/GitHubGitHub/shopify/kubeaudit
Cloud Infrastructure SecurityVulnerability ScannersContainer SecurityConfiguration AuditingCloud SecurityDevSecOpsMisconfigurationArchived
GitHubshopify/kubeaudit

kubeaudit

kubeaudit helps you audit your Kubernetes clusters against common security controls

Voir le dépôt
1.9k189il y a 2 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Build Status Go Report Card GoDoc

Il est désormais nécessaire que les clusters utilisent Kubernetes >= 1.19.

Les labels de substitution avec des annotations kubernetes.io non enregistrées seront dépréciés. Il deviendra bientôt obligatoire d'utiliser kubeaudit.io à la place. Référez-vous à cette discussion pour plus de contexte.

🚨 Avis de dépréciation 🚨

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 ☁️ 🔒 💪

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 :

  • s'exécuter en tant que non-root
  • utiliser un système de fichiers racine en lecture seule
  • supprimer les capacités dangereuses, ne pas en ajouter de nouvelles
  • ne pas s'exécuter en mode privilégié
  • et plus encore !

tl;dr. kubeaudit garantit que vous déployez des conteneurs sécurisés !

Package

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.

Interface en ligne de commande (CLI)

  • Installation
  • Démarrage rapide
  • Résultats d'audit
  • Commandes
  • Fichier de configuration
  • Annulation des erreurs
  • Contribuer

Installation

Brew

root@kitploit:~
brew install kubeaudit

Télécharger un binaire

Kubeaudit propose des versions officielles validées et stables : Versions officielles

Construction manuelle (DIY)

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 :

root@kitploit:~
go get -v github.com/Shopify/kubeaudit

Commencez à utiliser kubeaudit avec le Démarrage rapide ou consultez toutes les commandes prises en charge.

Plugin Kubectl

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

  • exécutant make plugin et en ayant $GOPATH/bin disponible dans votre PATH.

ou

  • en renommant le binaire en kubectl-audit et en le rendant disponible dans votre PATH.

Docker

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.

Démarrage rapide

kubeaudit a trois modes :

  1. Mode manifeste
  2. Mode local
  3. Mode cluster

Mode Manifeste

Si un fichier manifeste Kubernetes est fourni à l'aide du drapeau -f/--manifest, kubeaudit auditera ce fichier manifeste.

Exemple de commande :

root@kitploit:~
kubeaudit all -f "/path/to/manifest.yml"

Exemple de sortie :

root@kitploit:~
$ 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é :

root@kitploit:~
Toutes les vérifications terminées. 0 vulnérabilités à haut risque trouvées

Correction automatique

Le mode manifeste prend également en charge la correction automatique de tous les problèmes de sécurité à l'aide de la commande autofix :

root@kitploit:~
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.

root@kitploit:~
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.

root@kitploit:~
kubeaudit autofix -k "/path/to/kubeaudit-config.yml" -f "/path/to/manifest.yml" -o "/path/to/fixed"

Mode Cluster

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 :

root@kitploit:~
kubeaudit all

Mode Local

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.

root@kitploit:~
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/

Résultats d'audit

Kubeaudit produit des résultats avec trois niveaux de sévérité :

  • Error : Un problème de sécurité ou une configuration Kubernetes invalide
  • Warning : Une recommandation de bonne pratique
  • Info : Informationnel, aucune action requise. Cela inclut les résultats qui sont annulés

Le niveau de sévérité minimal peut être défini à l'aide du drapeau --minSeverity/-m.

Par défaut, kubeaudit affiche les résultats de manière lisible. Si la sortie doit être traitée ultérieurement, elle peut être définie pour produire du JSON avec le drapeau --format json. Pour afficher les résultats sous forme de logs (l'ancien comportement par défaut), utilisez --format logrus. Certains formats de sortie incluent des couleurs pour faciliter la lecture dans un terminal. Pour désactiver les couleurs (par exemple, si vous envoyez la sortie vers un fichier texte), utilisez le drapeau --no-color.

Vous pouvez générer un rapport kubeaudit au format SARIF à l'aide du drapeau --format sarif. Pour écrire les résultats SARIF dans un fichier, vous pouvez rediriger la sortie avec >. Par exemple :

root@kitploit:~
kubeaudit all -f path-to-my-file.yaml --format="sarif" > example.sarif

Si des résultats de niveau error sont présents, kubeaudit se termine avec le code de sortie 2. Cela peut être modifié à l'aide du drapeau --exitcode/-e.

Pour toutes les façons de personnaliser kubeaudit, consultez Drapeaux globaux.

Commandes

Auditeurs

Les auditeurs peuvent également être exécutés individuellement.

Drapeaux globaux

Fichier de configuration

Le fichier de configuration kubeaudit peut être utilisé pour deux choses :

  1. Activer uniquement certains auditeurs
  2. Spécifier une configuration pour les auditeurs

Toute configuration pouvant être spécifiée à l'aide de drapeaux pour les auditeurs individuels peut être représentée via ce fichier de configuration.

Le fichier de configuration a le format suivant :

root@kitploit:~
enabledAuditors:
  # Les auditeurs sont activés par défaut s'ils ne sont pas explicitement définis sur "false"
  apparmor: false
  asat: false
  capabilities: true
  deprecatedapis: true
  hostns: true
  image: true
  limits: true
  mounts: true
  netpols: true
  nonroot: true
  privesc: true
  privileged: true
  rootfs: true
  seccomp: true
auditors:
  capabilities:
    # Ajouter les capacités nécessaires à la liste d'ajout, afin que kubeaudit ne signale pas d'erreurs
    allowAddList: ['AUDIT_WRITE', 'CHOWN']
  deprecatedapis:
    # Si aucune version n'est spécifiée et que l'auditeur 'deprecatedapis' est activé, des résultats WARN
    # seront générés pour les ressources définies avec une API dépréciée.
    currentVersion: '1.22'
    targetedVersion: '1.25'
  image:
    # Si aucune image n'est spécifiée et que l'auditeur 'image' est activé, des résultats WARN
    # seront générés pour les conteneurs qui utilisent une image sans tag
    image: 'myimage:mytag'
  limits:
    # Si aucune limite n'est spécifiée et que l'auditeur 'limits' est activé, des résultats WARN
    # seront générés pour les conteneurs qui n'ont pas de limites CPU ou mémoire spécifiées
    cpu: '750m'
    memory: '500m'

Pour plus de détails sur chaque auditeur, y compris une description de la configuration spécifique à l'auditeur dans le fichier de configuration, consultez la Documentation des auditeurs.

Remarque : Le fichier de configuration kubeaudit n'est pas le même que le fichier kubeconfig spécifié avec le drapeau --kubeconfig, qui fait référence au fichier de configuration Kubernetes (voir Mode Local). Notez également que seules les commandes all et autofix prennent en charge l'utilisation d'un fichier de configuration kubeaudit. Il ne fonctionnera pas avec les autres commandes.

Remarque : Si des drapeaux sont utilisés en combinaison avec le fichier de configuration, les drapeaux prévalent.

Annulation des erreurs

Les problèmes de sécurité peuvent être ignorés pour des conteneurs ou pods spécifiques en ajoutant des labels d'annulation. Cela signifie que l'auditeur produira des résultats info au lieu de résultats error et que le nom du résultat d'audit sera suivi de Allowed. Les labels sont documentés dans la documentation de chaque auditeur, mais le format général pour les auditeurs prenant en charge les annulations est le suivant :

Un label d'annulation se compose d'une clé et d'une valeur.

La clé est une combinaison du type d'annulation (conteneur ou pod) et d'un identifiant d'annulation propre à chaque auditeur (voir la documentation pour l'auditeur spécifique). La clé peut prendre l'une des deux formes suivantes selon le type d'annulation :

  1. Annulations de conteneur, qui annulent l'auditeur pour ce conteneur spécifique, sont formatées comme suit :
root@kitploit:~
container.kubeaudit.io/[nom du conteneur].[identifiant d'annulation]
  1. Annulations de pod, qui annulent l'auditeur pour tous les conteneurs du pod, sont formatées comme suit :
root@kitploit:~
kubeaudit.io/[identifiant d'annulation]

Si la valeur est définie sur une chaîne non vide, elle sera affichée dans le résultat info en tant que OverrideReason :

root@kitploit:~
$ kubeaudit asat -f "auditors/asat/fixtures/service-account-token-true-allowed.yml"

---------------- Résultats pour ---------------

  apiVersion: v1
  kind: ReplicationController
  metadata:
    name: replicationcontroller
    namespace: service-account-token-true-allowed

--------------------------------------------

-- [info] AutomountServiceAccountTokenTrueAndDefaultSAAllowed
   Message: Résultat d'audit annulé : 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é.
   Metadata:
      OverrideReason: SomeReason

Conformément à la spécification Kubernetes, la valeur doit comporter 63 caractères ou moins et doit être vide ou commencer et se terminer par un caractère alphanumérique ([a-z0-9A-Z]) avec des tirets (-), des underscores (_), des points (.), et des caractères alphanumériques entre eux.

Plusieurs labels d'annulation (pour plusieurs auditeurs) peuvent être ajoutés à la même ressource.

Consultez la documentation spécifique de l'auditeur pour l'auditeur que vous souhaitez annuler pour des exemples.

Pour en savoir plus sur les labels, consultez https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/

Contribuer

Si vous souhaitez corriger un bug, contribuer une fonctionnalité ou simplement corriger une faute de frappe, n'hésitez pas à le faire tant que vous suivez notre Code de conduite.

  1. Créez votre propre fork !
  2. Obtenez le code source : go get github.com/Shopify/kubeaudit
  3. Allez dans le répertoire source : cd $GOPATH/src/github.com/Shopify/kubeaudit
  4. Ajoutez votre dépôt forké en tant que fork : git remote add fork https://github.com/you-are-awesome/kubeaudit
  5. Créez votre branche de fonctionnalité : git checkout -b awesome-new-feature
  6. Installez Kind
  7. Exécutez les tests pour vérifier que tout fonctionne comme prévu : USE_KIND=true make test (pour exécuter les tests sans Kind : make test)
  8. Validez vos modifications : git commit -am 'Ajoute une fonctionnalité géniale'
  9. Poussez sur la branche : git push fork
  10. Signez le Contrat de licence du contributeur (CLA)
  11. Soumettez une PR (Toute PR doit être étiquetée avec 🐛 (Correction de bug), ✨ (Nouvelle fonctionnalité), 📖 (Mise à jour de documentation), ou ⚠️ (Changements cassants) )
  12. ???
  13. Profitez

Notez que si vous n'avez pas signé le CLA avant d'ouvrir votre PR, vous pouvez relancer la vérification en ajoutant un commentaire à la PR disant "J'ai signé le CLA!"!

Télécharger l’outil
CommandeDescriptionDocumentation
allExécute tous les auditeurs disponibles, ou ceux spécifiés via un config.docs
autofixCorrige automatiquement les problèmes de sécurité.docs
versionAffiche la version actuelle de kubeaudit.
CommandeDescriptionDocumentation
apparmorTrouve les conteneurs fonctionnant sans AppArmor.docs
asatTrouve les pods utilisant un compte de service par défaut monté automatiquement.docs
capabilitiesTrouve les conteneurs qui ne suppriment pas les capacités recommandées ou qui en ajoutent de nouvelles.docs
deprecatedapisTrouve toute ressource définie avec une version d'API dépréciée.docs
hostnsTrouve les conteneurs qui ont HostPID, HostIPC ou HostNetwork activés.docs
imageTrouve les conteneurs qui n'utilisent pas la version souhaitée d'une image (via le tag) ou utilisent une image sans tag.docs
limitsTrouve les conteneurs qui dépassent les limites CPU et mémoire spécifiées ou qui n'en spécifient pas.docs
mountsTrouve les conteneurs qui ont des chemins hôtes sensibles montés.docs
netpolsTrouve les espaces de noms qui n'ont pas de politique réseau de refus par défaut.docs
nonrootTrouve les conteneurs s'exécutant en tant que root.docs
privescTrouve les conteneurs qui permettent l'escalade de privilèges.docs
privilegedTrouve les conteneurs s'exécutant en mode privilégié.docs
rootfsTrouve les conteneurs qui n'ont pas de système de fichiers racine en lecture seule.docs
seccompTrouve les conteneurs s'exécutant sans Seccomp.docs
CourtLongDescription
--formatLe format de sortie à utiliser (un parmi "sarif", "pretty", "logrus", "json") (par défaut "pretty")
--kubeconfigChemin vers le fichier de configuration Kubernetes local. Utilisé uniquement en mode local (par défaut $HOME/.kube/config)
-c--contextLe nom du contexte kubeconfig à utiliser
-f--manifestChemin vers la configuration yaml à auditer. Utilisé uniquement en mode manifeste. Vous pouvez utiliser - pour lire depuis l'entrée standard.
-n--namespaceAuditer uniquement les ressources dans l'espace de noms spécifié. Non pris en charge actuellement en mode manifeste.
-g--includegeneratedInclure les ressources générées dans l'analyse (telles que les Pods générés par les déploiements). Si vous souhaitez que kubeaudit produise des résultats pour les ressources générées (par exemple si vous avez des ressources personnalisées ou souhaitez détecter des ressources orphelines dont la ressource propriétaire n'existe plus), vous pouvez utiliser ce drapeau.
-m--minseverityDéfinir le niveau de sévérité le plus bas à rapporter (un parmi "error", "warning", "info") (par défaut "info")
-e--exitcodeCode de sortie à utiliser s'il y a des résultats de sévérité "error". Classiquement, 0 est utilisé pour le succès et tous les codes non nuls pour une erreur. (par défaut 2)
--no-colorNe pas utiliser de couleurs dans la sortie (par défaut false)