
kubeaudit помогает вам проводить аудит ваших кластеров Kubernetes на соответствие общим средствам контроля безопасности.
Теперь требуется, чтобы кластеры работали на Kubernetes >=1.19.
Переопределяющие метки с незарегистрированными аннотациями
kubernetes.ioбудут объявлены устаревшими. Скоро станет обязательным использованиеkubeaudit.ioвместо них. Дополнительный контекст см. в этом обсуждении.
Kubeaudit планируется к устареванию к октябрю 2024 года.
Мы активно ищем мейнтейнеров, заинтересованных в том, чтобы взять на себя управление этим проектом. Если вы хотите продолжать его развитие и поддержку, свяжитесь с нами.
Для пользователей, которые ищут альтернативы, мы рекомендуем перейти на Kubebench, который предлагает аналогичную функциональность и активно поддерживается.
Спасибо сообществу за ваш вклад и поддержку.
kubeaudit — это инструмент командной строки и пакет Go для аудита кластеров Kubernetes на предмет различных
проблем безопасности, таких как:
Кратко: kubeaudit гарантирует, что вы развёртываете безопасные контейнеры!
Чтобы использовать kubeaudit как пакет Go, смотрите документацию пакета.
Остальная часть этого README будет посвящена использованию kubeaudit как инструмента командной строки.
brew install kubeaudit
Kubeaudit имеет официальные релизы, которые одобрены и стабильны: Официальные релизы
Ветка main может содержать новые функции, которых ещё нет в стабильных релизах. Если вам нужна новая функция, ещё не включённая в релиз, убедитесь, что у вас установлена последняя версия Go, и выполните следующее:
go get -v github.com/Shopify/kubeaudit
Начните использовать kubeaudit с Быстрого старта или посмотрите все поддерживаемые команды.
Требование: kubectl v1.12.0 или новее
С выходом kubectl v1.12.0, в котором появилась простая подключаемость внешних функций, kubeaudit можно вызывать как kubectl audit, выполнив
make plugin и добавив $GOPATH/bin в ваш PATH.или
kubectl-audit и добавив его в PATH.Мы больше не публикуем образы в Docker Hub (поскольку Docker Hub прекратил поддержку бесплатных организаций Team). Пока что старые образы всё ещё доступны, но могут перестать быть доступными в любое время. Вскоре мы начнём публиковать образы в реестре контейнеров Github.
Чтобы запустить kubeaudit как задание в вашем кластере, смотрите Запуск kubeaudit в кластере.
У kubeaudit есть три режима:
Если указан файл манифеста Kubernetes с помощью флага -f/--manifest, kubeaudit выполнит аудит этого файла.
Пример команды:
kubeaudit all -f "/path/to/manifest.yml"
Пример вывода:
$ 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
...
Если ошибок с заданным минимальным уровнем серьёзности не найдено, возвращается следующее:
All checks completed. 0 high-risk vulnerabilities found
Режим манифеста также поддерживает автоматическое исправление всех проблем безопасности с помощью команды autofix:
kubeaudit autofix -f "/path/to/manifest.yml"
Чтобы записать исправленный манифест в новый файл вместо изменения исходного, используйте флаг -o/--output.
kubeaudit autofix -f "/path/to/manifest.yml" -o "/path/to/fixed"
Чтобы исправить манифест на основе пользовательских правил, указанных в файле конфигурации kubeaudit, используйте флаг -k/--kconfig.
kubeaudit autofix -k "/path/to/kubeaudit-config.yml" -f "/path/to/manifest.yml" -o "/path/to/fixed"
Kubeaudit может определить, запущен ли он внутри контейнера в кластере. Если да, то он попытается выполнить аудит всех ресурсов Kubernetes в этом кластере:
kubeaudit all
Kubeaudit попытается подключиться к кластеру, используя локальный файл kubeconfig ($HOME/.kube/config). Можно указать другое расположение kubeconfig с помощью флага --kubeconfig. Чтобы указать контекст kubeconfig, используйте флаг -c/--context.
kubeaudit all --kubeconfig "/path/to/config" --context my_cluster
Дополнительную информацию о конфигурационных файлах kubernetes см. на странице https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/
Kubeaudit выдаёт результаты с тремя уровнями серьёзности:
Error: Проблема безопасности или недопустимая конфигурация kubernetesWarning: Рекомендация по лучшей практикеInfo: Информационное сообщение, никаких действий не требуется. Сюда входят результаты, которые были переопределеныМинимальный уровень серьёзности можно задать с помощью флага --minSeverity/-m.
По умолчанию kubeaudit выводит результаты в удобочитаемом виде. Если вывод предназначен для дальнейшей обработки, его можно переключить на JSON с помощью флага --format json. Для вывода результатов в виде логов (как было раньше по умолчанию) используйте --format logrus. Некоторые форматы вывода включают цвета, чтобы облегчить чтение результатов в терминале. Чтобы отключить цвета (например, если вы отправляете вывод в текстовый файл), можно использовать флаг --no-color.
Вы можете сгенерировать отчёт kubeaudit в формате SARIF с помощью флага --format sarif. Чтобы записать результаты SARIF в файл, можно перенаправить вывод с помощью >. Например:
kubeaudit all -f path-to-my-file.yaml --format="sarif" > example.sarif
Если есть результаты уровня серьёзности error, kubeaudit завершится с кодом выхода 2. Это можно изменить с помощью флага --exitcode/-e.