Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
kubeaudit — kubeaudit помогает вам проводить аудит ваших кластеров Kubernetes на соответствие общим средствам контроля безопасности. | Kitploit
Инструменты/GitHubGitHub/shopify/kubeaudit
Безопасность облачной инфраструктурыСканеры уязвимостейБезопасность контейнеровАудит конфигурацииБезопасность облачных средDevSecOpsНеправильная КонфигурацияArchived
GitHubshopify/kubeaudit

kubeaudit

kubeaudit помогает вам проводить аудит ваших кластеров Kubernetes на соответствие общим средствам контроля безопасности.

Репозиторий
1.9k1891 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Build Status Go Report Card GoDoc

Теперь требуется, чтобы кластеры работали на Kubernetes >=1.19.

Переопределяющие метки с незарегистрированными аннотациями kubernetes.io будут объявлены устаревшими. Скоро станет обязательным использование kubeaudit.io вместо них. Дополнительный контекст см. в этом обсуждении.

🚨 Уведомление об устаревании 🚨

Kubeaudit планируется к устареванию к октябрю 2024 года.

Мы активно ищем мейнтейнеров, заинтересованных в том, чтобы взять на себя управление этим проектом. Если вы хотите продолжать его развитие и поддержку, свяжитесь с нами.

Для пользователей, которые ищут альтернативы, мы рекомендуем перейти на Kubebench, который предлагает аналогичную функциональность и активно поддерживается.

Спасибо сообществу за ваш вклад и поддержку.

kubeaudit ☁️ 🔒 💪

kubeaudit — это инструмент командной строки и пакет Go для аудита кластеров Kubernetes на предмет различных проблем безопасности, таких как:

  • запуск от непривилегированного пользователя
  • использование файловой системы только для чтения
  • удаление опасных возможностей (capabilities), без добавления новых
  • запрет привилегированного режима
  • и многое другое!

Кратко: kubeaudit гарантирует, что вы развёртываете безопасные контейнеры!

Пакет

Чтобы использовать kubeaudit как пакет Go, смотрите документацию пакета.

Остальная часть этого README будет посвящена использованию kubeaudit как инструмента командной строки.

Интерфейс командной строки (CLI)

  • Установка
  • Быстрый старт
  • Результаты аудита
  • Команды
  • Файл конфигурации
  • Переопределение ошибок
  • Участие в разработке

Установка

Brew

root@kitploit:~
brew install kubeaudit

Скачать бинарный файл

Kubeaudit имеет официальные релизы, которые одобрены и стабильны: Официальные релизы

Сборка вручную

Ветка main может содержать новые функции, которых ещё нет в стабильных релизах. Если вам нужна новая функция, ещё не включённая в релиз, убедитесь, что у вас установлена последняя версия Go, и выполните следующее:

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

Начните использовать kubeaudit с Быстрого старта или посмотрите все поддерживаемые команды.

Плагин для kubectl

Требование: kubectl v1.12.0 или новее

С выходом kubectl v1.12.0, в котором появилась простая подключаемость внешних функций, kubeaudit можно вызывать как kubectl audit, выполнив

  • make plugin и добавив $GOPATH/bin в ваш PATH.

или

  • переименовав бинарный файл в kubectl-audit и добавив его в PATH.

Docker

Мы больше не публикуем образы в Docker Hub (поскольку Docker Hub прекратил поддержку бесплатных организаций Team). Пока что старые образы всё ещё доступны, но могут перестать быть доступными в любое время. Вскоре мы начнём публиковать образы в реестре контейнеров Github.

Чтобы запустить kubeaudit как задание в вашем кластере, смотрите Запуск kubeaudit в кластере.

Быстрый старт

У kubeaudit есть три режима:

  1. Режим манифеста
  2. Локальный режим
  3. Режим кластера

Режим манифеста

Если указан файл манифеста Kubernetes с помощью флага -f/--manifest, kubeaudit выполнит аудит этого файла.

Пример команды:

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

Пример вывода:

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

Если ошибок с заданным минимальным уровнем серьёзности не найдено, возвращается следующее:

root@kitploit:~
All checks completed. 0 high-risk vulnerabilities found

Автоисправление

Режим манифеста также поддерживает автоматическое исправление всех проблем безопасности с помощью команды autofix:

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

Чтобы записать исправленный манифест в новый файл вместо изменения исходного, используйте флаг -o/--output.

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

Чтобы исправить манифест на основе пользовательских правил, указанных в файле конфигурации kubeaudit, используйте флаг -k/--kconfig.

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

Режим кластера

Kubeaudit может определить, запущен ли он внутри контейнера в кластере. Если да, то он попытается выполнить аудит всех ресурсов Kubernetes в этом кластере:

root@kitploit:~
kubeaudit all

Локальный режим

Kubeaudit попытается подключиться к кластеру, используя локальный файл kubeconfig ($HOME/.kube/config). Можно указать другое расположение kubeconfig с помощью флага --kubeconfig. Чтобы указать контекст kubeconfig, используйте флаг -c/--context.

root@kitploit:~
kubeaudit all --kubeconfig "/path/to/config" --context my_cluster

Дополнительную информацию о конфигурационных файлах kubernetes см. на странице https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/

Результаты аудита

Kubeaudit выдаёт результаты с тремя уровнями серьёзности:

  • Error: Проблема безопасности или недопустимая конфигурация kubernetes
  • Warning: Рекомендация по лучшей практике
  • Info: Информационное сообщение, никаких действий не требуется. Сюда входят результаты, которые были переопределены

Минимальный уровень серьёзности можно задать с помощью флага --minSeverity/-m.

По умолчанию kubeaudit выводит результаты в удобочитаемом виде. Если вывод предназначен для дальнейшей обработки, его можно переключить на JSON с помощью флага --format json. Для вывода результатов в виде логов (как было раньше по умолчанию) используйте --format logrus. Некоторые форматы вывода включают цвета, чтобы облегчить чтение результатов в терминале. Чтобы отключить цвета (например, если вы отправляете вывод в текстовый файл), можно использовать флаг --no-color.

Вы можете сгенерировать отчёт kubeaudit в формате SARIF с помощью флага --format sarif. Чтобы записать результаты SARIF в файл, можно перенаправить вывод с помощью >. Например:

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

Если есть результаты уровня серьёзности error, kubeaudit завершится с кодом выхода 2. Это можно изменить с помощью флага --exitcode/-e.

Все способы настройки kubeaudit см. в разделе Глобальные флаги.

Команды

Аудиторы

Аудиторы также могут запускаться по отдельности.

Глобальные флаги

Файл конфигурации

Конфиг kubeaudit можно использовать для двух целей:

  1. Включение только определённых аудиторов
  2. Указание конфигурации для аудиторов

Любая конфигурация, которая может быть задана с помощью флагов для отдельных аудиторов, может быть представлена с помощью конфига.

Конфиг имеет следующий формат:

root@kitploit:~
enabledAuditors:
  # Auditors are enabled by default if they are not explicitly set to "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:
    # add capabilities needed to the add list, so kubeaudit won't report errors
    allowAddList: ['AUDIT_WRITE', 'CHOWN']
  deprecatedapis:
    # If no versions are specified and the'deprecatedapis' auditor is enabled, WARN
    # results will be genereted for the resources defined with a deprecated API.
    currentVersion: '1.22'
    targetedVersion: '1.25'
  image:
    # If no image is specified and the 'image' auditor is enabled, WARN results
    # will be generated for containers which use an image without a tag
    image: 'myimage:mytag'
  limits:
    # If no limits are specified and the 'limits' auditor is enabled, WARN results
    # will be generated for containers which have no cpu or memory limits specified
    cpu: '750m'
    memory: '500m'

Дополнительные сведения о каждом аудиторе, включая описание конфигурации для конкретного аудитора, см. в Документации аудиторов.

Примечание: Конфиг kubeaudit — это не то же самое, что файл kubeconfig, указанный с помощью флага --kubeconfig, который относится к конфигурационному файлу Kubernetes (см. Локальный режим). Также обратите внимание, что только команды all и autofix поддерживают использование конфига kubeaudit. С другими командами он работать не будет.

Примечание: Если флаги используются в сочетании с файлом конфигурации, флаги имеют приоритет.

Переопределение ошибок

Проблемы безопасности можно игнорировать для определённых контейнеров или подов, добавляя метки переопределения. Это означает, что аудитор будет выдавать результаты info вместо error, и к имени результата аудита будет добавлено Allowed. Метки описаны в документации каждого аудитора, но общий формат для аудиторов, поддерживающих переопределение, следующий:

Метка переопределения состоит из ключа и значения.

Ключ представляет собой комбинацию типа переопределения (контейнер или под) и идентификатора переопределения, который уникален для каждого аудитора (см. документацию соответствующего аудитора). Ключ может принимать одну из двух форм в зависимости от типа переопределения:

  1. Переопределение контейнера, которое переопределяет аудитор для этого конкретного контейнера, имеет следующий формат:
root@kitploit:~
container.kubeaudit.io/[container name].[override identifier]
  1. Переопределение пода, которое переопределяет аудитор для всех контейнеров внутри пода, имеет следующий формат:
root@kitploit:~
kubeaudit.io/[override identifier]

Если значение задано непустой строкой, оно будет отображено в результате info как OverrideReason:

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

---------------- Results for ---------------

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

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

-- [info] AutomountServiceAccountTokenTrueAndDefaultSAAllowed
   Message: Audit result overridden: Default service account with token mounted. automountServiceAccountToken should be set to 'false' or a non-default service account should be used.
   Metadata:
      OverrideReason: SomeReason

В соответствии со спецификацией Kubernetes, значение должно состоять не более чем из 63 символов и должно быть пустым или начинаться и заканчиваться буквенно-цифровым символом ([a-z0-9A-Z]), с дефисами (-), подчёркиваниями (_), точками (.) и буквенно-цифровыми символами между ними.

К одному ресурсу можно добавить несколько меток переопределения (для нескольких аудиторов).

Примеры см. в документации конкретного аудитора, который вы хотите переопределить.

Чтобы узнать больше о метках, см. https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/

Участие в разработке

Если вы хотите исправить ошибку, добавить функцию или просто исправить опечатку, пожалуйста, делайте это, соблюдая наш Кодекс поведения.

  1. Сделайте свой форк!
  2. Получите исходный код: go get github.com/Shopify/kubeaudit
  3. Перейдите в каталог исходного кода: cd $GOPATH/src/github.com/Shopify/kubeaudit
  4. Добавьте ваш форк в качестве удалённого репозитория: git remote add fork https://github.com/you-are-awesome/kubeaudit
  5. Создайте свою ветку функции: git checkout -b awesome-new-feature
  6. Установите Kind
  7. Запустите тесты, чтобы убедиться, что всё работает как ожидается: USE_KIND=true make test (для запуска тестов без Kind: make test)
  8. Зафиксируйте свои изменения: git commit -am 'Adds awesome feature'
  9. Отправьте изменения в форк: git push fork
  10. Подпишите Лицензионное соглашение с участником
  11. Отправьте PR (все PR должны быть помечены 🐛 (исправление ошибки), ✨ (новая функция), 📖 (обновление документации) или ⚠️ (кардинальные изменения))
  12. ???
  13. Профит

Обратите внимание: если вы не подписали CLA до открытия PR, вы можете повторно запустить проверку, добавив в PR комментарий «I've signed the CLA!»!

Скачать инструмент
КомандаОписаниеДокументация
allЗапускает все доступные аудиторы или те, которые указаны в конфиге kubeaudit.docs
autofixАвтоматически исправляет проблемы безопасности.docs
versionВыводит текущую версию kubeaudit.
КомандаОписаниеДокументация
apparmorНаходит контейнеры, запущенные без AppArmor.docs
asatНаходит поды, использующие автоматически смонтированный сервисный аккаунт по умолчанию.docs
capabilitiesНаходит контейнеры, которые не удаляют рекомендуемые возможности или добавляют новые.docs
deprecatedapisНаходит ресурсы, определённые с устаревшей версией API.docs
hostnsНаходит контейнеры, у которых включены HostPID, HostIPC или HostNetwork.docs
imageНаходит контейнеры, которые не используют нужную версию образа (по тегу) или используют образ без тега.docs
limitsНаходит контейнеры, которые превышают указанные лимиты CPU и памяти или не указывают их вовсе.docs
mountsНаходит контейнеры, которые монтируют чувствительные пути хоста.docs
netpolsНаходит пространства имён, в которых нет сетевой политики по умолчанию, запрещающей весь трафик.docs
nonrootНаходит контейнеры, работающие от root.docs
privescНаходит контейнеры, которые допускают повышение привилегий.docs
privilegedНаходит контейнеры, работающие в привилегированном режиме.docs
rootfsНаходит контейнеры, у которых нет файловой системы только для чтения.docs
seccompНаходит контейнеры, работающие без Seccomp.docs
КраткийПолныйОписание
--formatФормат вывода (один из "sarif", "pretty", "logrus", "json") (по умолчанию "pretty")
--kubeconfigПуть к локальному конфигурационному файлу Kubernetes. Используется только в локальном режиме (по умолчанию $HOME/.kube/config)
-c--contextИмя контекста kubeconfig для использования
-f--manifestПуть к yaml-конфигурации для аудита. Используется только в режиме манифеста. Можно использовать - для чтения из stdin.
-n--namespaceАудит только ресурсов в указанном пространстве имён. Не поддерживается в режиме манифеста.
-g--includegeneratedВключение в сканирование сгенерированных ресурсов (например, подов, созданных развёртываниями). Если вы хотите, чтобы kubeaudit выдавал результаты для сгенерированных ресурсов (например, если у вас есть пользовательские ресурсы или вы хотите отследить осиротевшие ресурсы, чей родительский ресурс больше не существует), используйте этот флаг.
-m--minseverityУстанавливает наименьший уровень серьёзности для отчёта (один из "error", "warning", "info") (по умолчанию "info")
-e--exitcodeКод выхода, если есть результаты с уровнем серьёзности "error". Обычно 0 используется для успеха, а все ненулевые коды — для ошибки. (по умолчанию 2)
--no-colorНе использовать цвета в выводе (по умолчанию false)