Analyse statique pour Kubernetes
Kubelinter analyse les fichiers et les graphiques de casques Kubernetes YAML, et les vérifie par rapport à une variété de meilleures pratiques, en mettant l'accent sur la préparation et la sécurité de la production.
Kubelinter exécute les vérifications par défaut raisonnables, conçues pour vous fournir des informations utiles sur vos fichiers et graphiques de barre YAML Kubernetes. Il s'agit d'aider les équipes à vérifier tôt et souvent pour les erreurs de sécurité et les meilleures pratiques de DevOps. Certains exemples courants de ceux-ci incluent l'exécution de conteneurs en tant qu'utilisateur non racinaire, appliquant le moins de privilèges et stockant des informations sensibles uniquement dans les secrets.
Kubelinter est configurable, vous pouvez donc activer et désactiver les vérifications, ainsi que créer vos propres vérifications personnalisées, selon les politiques que vous souhaitez suivre au sein de votre organisation.
Lorsqu'un chèque de peluche échoue, Kubelinter rapporte des recommandations pour résoudre les problèmes potentiels et renvoie un code de sortie non nul.
Visitez https://docs.kubelinter.io pour une documentation détaillée sur l'installation, l'utilisation et la configuration de Kubelinter.
Des binaires Kube-Linter peuvent être trouvés ici: https://github.com/stackrox/kube-inter/releases/latest
Pour installer en utilisant Go, exécutez la commande suivante:
go install golang.stackrox.io/kube-linter/cmd/kube-linter@latestSinon, téléchargez le dernier binaire à partir des versions et ajoutez-la à votre chemin.
Pour installer à l'aide de Homebrew ou LinuxBrew, exécutez la commande suivante:
brew install kube-linter nix-shell -p kube-linter
docker pull stackrox/kube-linter:latest
L'installation de KubElinter à partir de la source est aussi simple que de suivre ces étapes:
Tout d'abord, clonez le référentiel Kubelinter.
git clone [email protected]:stackrox/kube-linter.git Ensuite, compilez le code source. Cela créera les fichiers binaires Kube-Linter pour chaque plate-forme et les place dans le dossier .gobin .
make buildEnfin, vous êtes prêt à commencer à utiliser Kubelinter. Vérifiez votre version pour vous assurer que vous avez réussi à installer Kubelinter.
.gobin/kube-linter versionIl existe plusieurs couches de tests. Chaque couche devrait passer.
Tests d'unité go :
make testTests d'intégration de bout en bout:
make e2e-test Et enfin, des tests d'intégration de bout en bout à l'aide bats-core :
make e2e-batsLes images de Kubelinter sont signées par cosign. Nous vous recommandons de vérifier l'image avant de l'utiliser.
Une fois que vous avez installé Cosign, vous pouvez utiliser la touche publique Kubelinter pour vérifier l'image Kubelinter avec:
cat kubelinter-cosign.pub
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEl0HCkCRzYv0qH5QiazoXeXe2qwFX
DmAszeH26g1s3OSsG/focPWkN88wEKQ5eiE95v+Z2snUQPl/mjPdvqpyjA==
-----END PUBLIC KEY-----
cosign verify --key kubelinter-cosign $IMAGE_NAMEKubelinter fournit également des signatures Cosign Keyless.
Vous pouvez vérifier l'image Kubelinter avec:
# NOTE: Keyless signatures are NOT PRODUCTION ready.
COSIGN_EXPERIMENTAL=1 cosign verify $IMAGE_NAME L'exécution de Kubelinter pour Lint vos fichiers YAML ne nécessite que deux étapes dans sa forme la plus élémentaire.
Localisez le fichier YAML que vous souhaitez tester les meilleures pratiques de sécurité et de préparation à la production:
Exécutez la commande suivante:
kube-linter lint /path/to/your/yaml.yaml Considérez le fichier de spécification de spécification de pod suivant pod.yaml . Ce fichier a deux problèmes de préparation à la production et un problème de sécurité:
Problème de sécurité:
Précision de la production:
Les limites de mémoire du conteneur ne sont pas définies, ce qui pourrait lui permettre de consommer une mémoire excessive
apiVersion : v1
kind : Pod
metadata :
name : security-context-demo
spec :
securityContext :
runAsUser : 1000
runAsGroup : 3000
fsGroup : 2000
volumes :
- name : sec-ctx-vol
emptyDir : {}
containers :
- name : sec-ctx-demo
image : busybox
resources :
requests :
memory : " 64Mi "
cpu : " 250m "
command : [ "sh", "-c", "sleep 1h" ]
volumeMounts :
- name : sec-ctx-vol
mountPath : /data/demo
securityContext :
allowPrivilegeEscalation : falseCopiez le yaml ci-dessus sur pod.yaml et lint ce fichier en exécutant la commande suivante:
kube-linter lint pod.yamlKubelinter exécute ses vérifications par défaut et rapporte les recommandations. Vous trouverez ci-dessous la sortie de notre commande précédente.
pod.yaml: (object: <no namespace>/security-context-demo /v1, Kind=Pod) The container "sec-ctx-demo" is using an invalid container image, "busybox". Please use images that are not blocked by the `BlockList` criteria : [".*:(latest)$" "^[^:]*$" "(.*/[^:]+)$"] (check: latest-tag, remediation: Use a container image with a specific tag other than latest.)
pod.yaml: (object: <no namespace>/security-context-demo /v1, Kind=Pod) container "sec-ctx-demo" does not have a read-only root file system (check: no-read-only-root-fs, remediation: Set readOnlyRootFilesystem to true in the container securityContext.)
pod.yaml: (object: <no namespace>/security-context-demo /v1, Kind=Pod) container "sec-ctx-demo" has memory limit 0 (check: unset-memory-requirements, remediation: Set memory limits for your container based on its requirements. Refer to https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits for details.)
Error: found 3 lint errors
Pour en savoir plus sur l'utilisation et la configuration de Kubelinter, visitez la page de documentation.
Voici des tutoriels sur Kubelinter écrits par les utilisateurs. Si vous en avez un que vous souhaitez ajouter à cette liste, veuillez envoyer un PR!
Si vous souhaitez vous engager avec la communauté Kubelinter, y compris les mainteneurs et autres utilisateurs, vous pouvez rejoindre l'espace de travail Slack ici.
Pour contribuer, consultez notre guide de contribution.
Pour rappel, toute participation à la communauté de Kubelinter est régie par notre code de conduite.
Kubelinter est à un stade de développement précoce. Il peut y avoir des changements de rupture dans l'avenir dans l'utilisation de la commande, les drapeaux et les formats de fichiers de configuration. Cependant, nous vous encourageons à utiliser Kubelinter pour tester vos fichiers YAML environnement, voir ce qui se casse et contribuer.
Kubelinter est concédé sous licence Apache 2.0.
Kubelinter est fabriqué avec ❤️ par Stackrox.
Si vous êtes intéressé par Kubelinter, ou par l'une des autres choses intéressantes que nous faisons, sachez que nous embauchons! Découvrez nos positions ouvertes. Nous serions ravis de vous entendre!