
kubeaudit te ayuda a auditar tus clústeres de Kubernetes contra controles de seguridad comunes.
Ahora es un requisito que los clústeres ejecuten Kubernetes >=1.19.
Las etiquetas de anulación con anotaciones
kubernetes.iono registradas serán obsoletas. Pronto será un requisito usarkubeaudit.ioen su lugar. Consulte esta discusión para obtener más contexto.
Kubeaudit está planificado para ser desaprobado para octubre de 2024.
Estamos buscando activamente mantenedores interesados en asumir la responsabilidad de este proyecto. Si le apasiona continuar con su desarrollo y mantenimiento, comuníquese con nosotros.
Para los usuarios que buscan alternativas, recomendamos la transición a Kubebench, que ofrece funcionalidad similar y se mantiene activamente.
Gracias a la comunidad por sus contribuciones y apoyo.
kubeaudit es una herramienta de línea de comandos y un paquete Go para auditar clústeres de Kubernetes en busca de diversas preocupaciones de seguridad, como:
Resumen: kubeaudit asegura que despliegues contenedores seguros!
Para usar kubeaudit como un paquete Go, consulte la documentación del paquete.
El resto de este README se centrará en cómo usar kubeaudit como una herramienta de línea de comandos.
brew install kubeaudit
Kubeaudit tiene lanzamientos oficiales que están bendecidos y son estables: Lanzamientos oficiales
La rama principal puede tener características más nuevas que las versiones estables. Si necesita una característica nueva que aún no está incluida en un lanzamiento, asegúrese de usar la última versión de Go y ejecute lo siguiente:
go get -v github.com/Shopify/kubeaudit
Comience a usar kubeaudit con el Inicio Rápido o vea todos los comandos compatibles.
Requisito previo: kubectl v1.12.0 o posterior
Con kubectl v1.12.0 que introduce la fácil integración de funciones externas, kubeaudit se puede invocar como kubectl audit mediante
make plugin y tener $GOPATH/bin disponible en su PATH.o
kubectl-audit y tenerlo disponible en su PATH.Ya no publicamos imágenes en Docker Hub (desde que Docker Hub eliminó las organizaciones Free Team). Por el momento, las imágenes antiguas aún están disponibles pero pueden dejar de estarlo en cualquier momento. Pronto comenzaremos a publicar imágenes en el registro de contenedores de Github.
Para ejecutar kubeaudit como un trabajo en su clúster, consulte Ejecutar kubeaudit en un clúster.
kubeaudit tiene tres modos:
Si se proporciona un archivo de manifiesto de Kubernetes usando la bandera -f/--manifest, kubeaudit auditará el archivo de manifiesto.
Ejemplo de comando:
kubeaudit all -f "/path/to/manifest.yml"
Ejemplo de salida:
$ 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
...
Si no se encuentran errores con una severidad mínima determinada, se devuelve lo siguiente:
All checks completed. 0 high-risk vulnerabilities found
El modo manifiesto también admite la corrección automática de todos los problemas de seguridad usando el comando autofix:
kubeaudit autofix -f "/path/to/manifest.yml"
Para escribir el manifiesto corregido en un nuevo archivo en lugar de modificar el archivo fuente, use la bandera -o/--output.
kubeaudit autofix -f "/path/to/manifest.yml" -o "/path/to/fixed"
Para corregir un manifiesto basado en reglas personalizadas especificadas en un archivo de configuración de kubeaudit, use la bandera -k/--kconfig.
kubeaudit autofix -k "/path/to/kubeaudit-config.yml" -f "/path/to/manifest.yml" -o "/path/to/fixed"
Kubeaudit puede detectar si se está ejecutando dentro de un contenedor en un clúster. Si es así, intentará auditar todos los recursos de Kubernetes en ese clúster:
kubeaudit all
Kubeaudit intentará conectarse a un clúster usando el archivo kubeconfig local ($HOME/.kube/config). Se puede especificar una ubicación diferente de kubeconfig usando la bandera --kubeconfig. Para especificar un contexto del kubeconfig, use la bandera -c/--context.
kubeaudit all --kubeconfig "/path/to/config" --context my_cluster
Para obtener más información sobre los archivos de configuración de Kubernetes, consulte https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/
Kubeaudit genera resultados con tres niveles de severidad:
Error: Un problema de seguridad o configuración de Kubernetes inválidaWarning: Una recomendación de mejor prácticaInfo: Informativo, no se requiere acción. Esto incluye resultados que han sido anuladosEl nivel de severidad mínimo se puede configurar usando la bandera --minSeverity/-m.
Por defecto, kubeaudit mostrará los resultados de forma legible para humanos. Si se pretende procesar la salida adicionalmente, se puede configurar para que genere JSON usando la bandera --format json. Para generar resultados como registros (el valor predeterminado anterior) use --format logrus. Algunos formatos de salida incluyen colores para facilitar la lectura de los resultados en una terminal. Para deshabilitar los colores (por ejemplo, si está enviando la salida a un archivo de texto), puede usar la bandera --no-color.